curses is a terminal control library for Unix-like systems, enabling the construction of text user interface (TUI) applications.
The library determines a minimal set of changes that are needed to update the display and then executes these using the terminal's specific capabilities and control sequences.
For an application that does not require bit-mapped graphics or multiple fonts, an interface implementation using curses will usually be much simpler and faster than one using an X toolkit.
The first curses library was written by Ken Arnold and originally released with BSD UNIX, where it was used for several games, most notably Rogue.
[5] According to Goodheart, Ken Arnold's original implementation of curses started by reusing functions from the termcap library, and adding to that.
A version of BSD curses continues to be maintained in the NetBSD operating system (wide character support, termcap to terminfo migration, etc.).
[15][16] Although the ncurses library was initially developed under Linux, OpenBSD, FreeBSD, and NetBSD, it has been ported to many other ANSI/POSIX UNIX systems, mainly by Thomas Dickey.
[17][18] Curses is designed to facilitate GUI-like functionality on a text-only device, such as a PC running in console mode, a hardware ANSI terminal, a Telnet or SSH client, or similar.