ncurses

Ncurses

ncurses (new curses) is a programming library that provides an API to display text-based user interfaces in a terminal. It offers functions to manipulate the text, colors, and cursor to create interfaces like menus, forms, and more.
ncurses image
textbased terminal user-interface tui curses menus forms

ncurses (New Curses)

ncurses (new curses) is a programming library that provides an API to display text-based user interfaces in a terminal. It offers functions to manipulate the text, colors, and cursor to create interfaces like menus, forms, and more.

What is Ncurses?

Ncurses (new curses) is a programming library that provides an application programming interface (API) for text-based user interfaces (TUI) in a terminal emulator. It is designed to facilitate the creation of TUIs and enable developers to write terminal-based applications.

The ncurses library is based on the curses library originally written for BSD Unix. It offers an additional set of features, improved performance, and greater portability across different terminals and operating systems. Some of the key capabilities provided by ncurses include:

  • Text and background color control
  • Cursor control for navigation and screen addressing
  • Creating windows and panels for complex interfaces
  • Menus, forms and other widget support
  • Mouse event support
  • Screen clearing and optimization functions

Ncurses is written in C, but wrappers allow it to be used by various other languages like C++, Ada, Haskell, Perl, PHP, Python, Ruby and more. It is very portable and has been adopted across various Unix platforms and operating systems including Linux, macOS, FreeBSD and more.

Due to its text-based nature and efficiency, ncurses remains popular for developing terminal applications like system monitors, network tools, interactive games, TUI-based configuration utilities and more. The ncurses library provides developers the capabilities to easily create responsive CLI-based interfaces for their tools and applications.

Ncurses Features

Features

  1. Text-based user interface library
  2. Supports color, key handling, mouse support, menus, forms, panels, etc
  3. Portable - runs on many operating systems
  4. Wide language support - C, C++, Ada, Python, Perl, Ruby, etc
  5. Built-in support for internationalization

Pricing

  • Open Source

Pros

Lightweight, low resource usage

Very customizable and flexible

Mature and stable codebase

Good documentation

Active open source community

Cons

Text-only, no native graphical capabilities

Steep learning curve

Not ideal for complex UIs

Limited built-in widgets


The Best Ncurses Alternatives

Top Development and Terminal User Interfaces and other similar apps like Ncurses


Termbox icon

Termbox

Termbox is an open-source library that enables developers to build text-based user interfaces that work in console/terminal environments. It provides a simple API and abstracts away many of the complexities involved in creating terminal applications that respond to user input and redraw sections of the screen.Some key capabilities Termbox provides...
Termbox image
Turbo Vision icon

Turbo Vision

Turbo Vision is an object-oriented framework for building text-based user interfaces (TUIs). It was originally developed in the early 1990s by Borland for use in DOS applications.Some key features of Turbo Vision include:A library of widgets like windows, buttons, menus, text boxes, checkboxes, etc. to aid in TUI constructionVirtual screening...
Turbo Vision image
FTXUI icon

FTXUI

FTXUI is an open-source, header-only C++ library for creating terminal user interfaces. It is designed to provide an intuitive object-oriented interface for building text UIs that run directly in a terminal.Some key features of FTXUI include:A wide range of widgets including text boxes, menus, scroll bars, paragraphs, separators, and more.Flexible...
FTXUI image
Gui.cs icon

Gui.cs

Gui.cs is an open-source GUI library written in C# for building desktop applications on Windows. It provides a collection of UI controls like windows, buttons, menus, textboxes, etc. that can be used to build feature-rich graphical interfaces.Some key highlights of Gui.cs:Open-source library released under MIT licenseDesigned specifically for C# and...
Gui.cs image
BearLibTerminal icon

BearLibTerminal

BearLibTerminal is an open-source, lightweight C/C++ library for developers of roguelike games, ASCII art, textual UIs and console applications. It provides a pseudoterminal window with input and output facilities, sprite handling, truecolor images support and simple APIs for text output, mouse/keyboard input and OpenGL-accelerated 2D graphics rendering.Key features of BearLibTerminal...
ConsoleGUI icon

ConsoleGUI

ConsoleGUI is a graphical user interface application designed to make working with console programs, commands, and scripts easier. It provides a GUI window where you can view console output, enter commands and run scripts. Some key features include:Tabbed interface to open multiple consolesCustomizable themes and fontsSave console output to filesSearchable...
ConsoleGUI image
Libmabuff icon

Libmabuff

libmabuff is an open-source C++ library that aims to improve memory allocation performance by buffering allocation and deallocation requests.It works by intercepting calls to memory allocation functions like malloc and free, and buffering these requests instead of passing them directly to the system memory manager. The buffers are then periodically...
Libmabuff image
Libtcod icon

Libtcod

libtcod is an open source C/C++ and Python library designed to help developers create roguelike games and applications featuring procedural generation. It was originally developed by Jice in 2008 and has been used in many roguelike games since then.Some of the key features of libtcod include:Portability - Works on Windows,...
Libtcod image
Rot.js icon

Rot.js

rot.js is an open-source JavaScript library designed to help developers create roguelike games in the browser. It handles many common tasks and algorithms used in roguelikes such as:Procedural map generation using various algorithms like cellular automata or drunken walk.Field-of-view calculations for determining visibility.Pathfinding functions like A* or Dijkstra's algorithm.Support for...
Rot.js image
S-Lang icon

S-Lang

S-Lang is an open-source, cross-platform, interpreted programming language and numerical analysis environment. It has been specifically designed for use in scientific programming and features built-in support for complex numbers, vectors, matrices, and 2D/3D plotting functionality.Some of the key features of S-Lang include:A syntax similar to C/C++ to lower the learning...
S-Lang image