dankamongmen/notcurses logo

dankamongmen/notcurses

Free

blingful character graphics/TUI library. definitely not curses.

FreeFree tier
Type
Open Source

About dankamongmen/notcurses

Notcurses is a library for building complex terminal user interfaces (TUIs) and character graphics on modern terminal emulators. It supports vivid colors, multimedia (images, video, fonts, sprites), threads, and Unicode to the maximum degree possible. Unlike NCURSES, it assumes modern terminal capabilities and steps down when necessary, enabling visual features that are impossible in traditional curses libraries. Key design priorities include thread safety, native Unicode with Extended Grapheme Clusters, 24-bit color with automatic quantization, and portable bitmapped graphics via Sixel, Kitty, and the Linux framebuffer. It also offers unambiguous keyboard protocols and can be built without multimedia for a lighter dependency footprint. Notcurses is not a drop-in replacement for NCURSES but leverages the Terminfo library for portability.

Key Features

Complex TUIs with vivid colors, multimedia, and Unicode support
Thread-safe design from the ground up
Native 24-bit color with automatic quantization for legacy terminals
Portable bitmapped graphics via Sixel, Kitty, and Linux framebuffer
Unambiguous keyboard protocol support
TUI mode for full-screen and CLI mode for scrolling applications
Static inline header-only code for compiler optimizations and reduced loader time
Can be built without multimedia for minimal dependencies
Based on the widely-portable Terminfo library

Pros & Cons

Pros
  • Enables visual features impossible in NCURSES (images, video, transparent regions, sprites)
  • High performance, described as 'fast as shit'
  • Thread safety designed from the beginning
  • Full Unicode support with Extended Grapheme Clusters
  • Flexible build options; can disable multimedia for lighter dependencies
  • Automatic adaptation to terminal capabilities (steps down when needed)
Cons
  • Not a drop-in replacement for NCURSES; requires significant code changes to port from curses
  • May not work correctly on older or very minimal terminal hardware
  • Multimedia functionality introduces a larger set of dependencies
  • Documentation examples are currently limited (mostly in src/poc/ and src/pocpp/)

Best For

Building modern terminal user interfaces with multimedia and rich graphicsDeveloping terminal-based games and interactive applicationsCreating high-performance command-line tools with vibrant color and UnicodePorting applications that require advanced terminal features like images and videoImplementing reliable, thread-safe full-screen terminal programs

FAQ

Is Notcurses a drop-in replacement for NCURSES?
No, it is not source-compatible with X/Open Curses and requires code changes. However, it uses the Terminfo library for portability and is designed for modern terminals.
What kind of multimedia does Notcurses support?
It supports images, fonts, video, sprites, and transparent regions. For bitmapped graphics, it can use Sixel, Kitty, and the Linux framebuffer.
What color depth does Notcurses support?
It natively supports 24-bit color, automatically quantizing down if the terminal does not support it.
Is Notcurses thread-safe?
Yes, thread safety has been a design consideration from the beginning.