Curses is an API for writing text terminal GUIs. It offers operations such as drawing, colouring and removing text, moving the cursor around, and so on. It was devised for scenarios with a terminal connected over a low-speed link (unconfirmed: it grew out of the vi(1) development), and is heavily optimised to send the least number of escape codes necessary to update the screen. This also means that it works well over very laggy TCP connections as well. :-)

The Linux Kernel's make menuconfig interface uses a Curses interface, as do most console TextEditors.

On Linux, the Curses API is implemented by the MIT-licensed ncurses library.

See also: