ncurses
ncurses (new curses) is the dominant free-software library for building terminal user interfaces. It abstracts ANSI escape sequence differences across terminals by consulting the terminfo database and rendering an in-memory screen model with differential updates. Started by Zeyd Ben-Halim in 1991 from Pavel Curtis's pcurses, first released as 1.8.1 in November 1993, and maintained for decades by Thomas E. Dickey. Powers vim, htop, mutt, less, and Linux's menuconfig.
ncurses (new curses) is a free-software library for building terminal user interfaces. It provides an API for drawing windows, handling keyboard input, managing colors and attributes, and laying out text-mode UIs portably across the many real-world terminal emulators and hardware terminals — abstracting away the differences in ANSI escape sequences that each terminal accepts. Programs like ``vim``, ``htop``, ``mutt``, ``irssi``, ``alpine``, ``less``, and the Linux kernel installer ``menuconfig`` are built on ncurses or its wrappers. ncurses descends from pcurses, written around 1982 by Pavel Curtis and based in turn on the original BSD curses by Ken Arnold. Zeyd Ben-Halim took over pcurses development in late 1991 and released the package as ncurses 1.8.1 in November 1993. Subsequent maintenance through 1995 was driven by Eric S. Raymond, who added the ``form`` and ``menu`` sub-libraries written by Juergen Pfeifer. Thomas E. Dickey has maintained ncurses since the mid-1990s and continues to ship regular releases. Internally ncurses consults the terminfo database (looked up via ``$TERM``) to learn which escape sequences a given terminal understands, then composes those sequences to render the abstract window contents requested by the application. It maintains an in-memory model of the screen and performs differential updates — recomputing the minimum set of writes needed to bring the real terminal in sync — so that programs draw to a logical canvas without worrying about cursor positioning byte by byte. Optional sub-libraries add panels (overlapping windows), forms (input fields), and menus. ncurses is licensed under an MIT-style permissive license and is a GNU project. It is the de facto curses implementation on Linux, ships in BSDs and macOS (where Apple's libcurses is a thin wrapper), and is widely used in embedded systems. Wide-character support (ncursesw) added Unicode handling in the early 2000s. Modern alternatives like notcurses, ``termbox``, and Rust's ``crossterm``/``ratatui`` target similar use cases with different tradeoffs around truecolor, Unicode width handling, and async input.