# Curses interface
 
The Curses interface is an alternate text-mode interface for NetHack using high-level curses routines to control the display.  The curses interface has additional features compared to the traditional tty interface, such as dynamic window resizing, dynamic configurable placement of status and message windows, and mouse support.

Contents

1 Features
2 Public servers
3 Configuration options
4 Links

Features
Some features of this interface compared to the traditional tty interface include:

Dynamic window resizing (e.g. maximizing a terminal window)
Dynamic configurable placement of status and message windows, relative to the map
Makes better use of larger and smaller terminal windows, such as a multi-line message window if there is space
Optional mouse support (click to move player, etc)
Menu text search/selection
Fancier display (e.g. window borders, optional popup dialogs, splash screen, and better menus)
Improved keyboard navigation of menus
"cursesgraphics" option for fancier line-drawing characters for drawing the dungeon—this should work on most terminals and platforms
Ability to have a permanent inventory sidebar by enabling perm_invent
Public servers
nethack.alt.org currently hosts NetHack 3.6.6, which has the curses interface enabled as an alternative to the standard ASCII interface.
NetHack 4 and its derivatives NetHack Fourk and FIQHack, as well as DynaHack use the curses interface by default; any server which hosts these variants supports it.
Hardfought offers the curses interface for almost every variant hosted, save for NetHack 1.3d, Slash'EM, SlashTHEM and ZapM.

Configuration options
Some configuration options that are specific to or relevant to the curses windowport are shown below.

OPTIONS=windowtype:curses

Use this to enable curses interface, if the binary was compiled with multiple window interfaces, and curses is not the default.

OPTIONS=IBMgraphics
OPTIONS=symset:IBMgraphics

Set this for Windows systems, or for PDCurses for SDL on any system. The latter uses a cp437 font, which works with this option. Use the symset form on 3.6.x.

OPTIONS=cursesgraphics
OPTIONS=symset:curses

Set this if IBMgraphics above won't work for your system. Mutually exclusive with the above option, and should work on nearly any system.  Use the symset form on 3.6.x.

OPTIONS=align_message:bottom
OPTIONS=align_status:right

Optionally specify the alignment of the message and status windows relative to the map window.  If not specified, the code will default to the locations used in the tty interface: message window on top, and status window on bottom.  Placing either of these on the right or left really only works well for wider terminal windows.

OPTIONS=popup_dialog

Use a small popup "window" for short prompts, e.g. "Really save?".
If this is not set, the message window will be used for these as is done for the tty interface.

OPTIONS=term_cols:110
OPTIONS=term_rows:32

Specify the initial window size for NetHack in units of characters.
This is supported on PDCurses for SDL as well as PDCurses for Windows.

OPTIONS=windowborders:2

Controls the usage of window borders for the main NetHack windows (message, map, and status windows).
A value of 0 forces the borders to be off, a value of 1 forces them to be drawn, and a value of 2 allows the code to decide if they should be drawn based on the size of the terminal window.

OPTIONS=splash_screen

Whether or not to display a fancy ascii-graphics splash screen on startup.

OPTIONS=petattr:u

This controls what text attributes are used to highlight any pets. Any combination of single letters representing each text attribute may be used.  Not all attributes work on all terminals.
Attributes may be one or more of: Bold, Inverse, Underline, blinK, iTalic, Rightline, or Leftline.  The default is underline.

OPTIONS=guicolor

Controls whether color and attributes are used for menu headers, window borders, message text, etc.  This is separate from the color option, which only controls the color of the map itself.

OPTIONS=mouse_support

Use the mouse for moving around. This option defaults to false.

OPTIONS=perm_invent

Show a permanent inventory window as a sidebar.

OPTIONS=classic_status

Whether to use a 2-line status display akin to tty display (TRUE), or a 3-line status bar similar to the one NetHack4 and its variants has (FALSE).  On NetHack 3.x, classic_status defaults to TRUE.  This option is currently ignored in NetHack 3.6.x.

Links
Curses interface homepage
Bug tracker