github dankamongmen/notcurses v2.0.0
v2.0.0—stankonia

latest releases: v3.0.9, v3.0.8, v3.0.7...
3 years ago

Reading two pages apiece of seven books every night, eh? I was young. You bowed to yourself in the mirror, stepping forward to applause earnestly, striking face. Hurray for the Goddamned idiot! Hray! No-one saw: tell no-one. Books you were going to write with letters for titles. Have you read his F? O yes, but I prefer Q. Yes, but W is wonderful. O yes, W. Remember your epiphanies on green oval leaves, deeply deep, copies to be sent if you died to all the great libraries of the world, including Alexandria? Someone was to read them there after a few thousand years, a mahamanvantara.
—James Joyce, Ulysses

On this twentieth anniversary of the release of Outkast's sublime Stankonia, I am pleased to announce the 2.0 release of Notcurses, a blingful library for character graphics and TUIs. The 2.0 release marks the first stable Notcurses API, following almost a year of intense development. Subsequent releases will follow the rules of semantic versioning, and maintain backwards compatibility. In addition to the demo included with Notcurses, two large applications have been successfully ported from NCURSES to Notcurses:

Notcurses supports both RGB and palette-indexed color natively throughout its APIs, color blending, a z-axis and planes of arbitrary area, Unicode EGCs as primary visual entities, image and video support via FFmpeg or OIIO, and a number of widgets for quickly constructing TUIs. Additionally, it provides sane and well-specified support for multithreaded use. It is built atop terminfo, and thus supports all manner of older terminals while making full use of modern implementations. On the Linux virtual console, it reprograms the font tables for improved output.

Notcurses was built in the spirit of NCURSES, but is not a source-compatible implementation of X/Open Curses (I believe the Notcurses API to be a great improvement). With that said, porting the two applications above took less than two days each, resulting in a net cut of thousands of lines. Widgets include single-item selectors, combination boxes, menus, scrolling input text areas, file and subprocess displays, and the powerful "reel" abstraction used by both Growlight and Omphalos.

Close attention has been paid to efficiency during Notcurses development, and indeed the notcurses-demo program provides a fine benchmarking platform for terminal emulators. Notcurses can render and write out tens of thousands of frames per second, far outpacing any known display technology. Notcurses supports both full-screen mode and "direct mode", the latter allowing output to be freely intermixed with other standard I/O.

With the guarantee of a stable, proven API, I believe Notcurses to be among the best platforms for new C/C++/Rust TUI programs. Python wrappers are not yet complete, and Go wrappers are nascent, but they'll be coming soon (help wanted!). Try out notcurses-view (an image/video viewer, much more efficient than mpv's TCT mode despite producing higher-quality output), notcurses-demo, or even notcurses-tetris from the source distribution. Use ncneofetch for low-effort posts to r/unixporn. Or just watch the demo, which is well-known for blowing minds.

is your terminal ready for this?!?

This is MCin right here! This is hip-hop!
—Wu-Tang Clan, Intro

60 issues were closed during the 2.0 milestone.

—Atlanta, 2020-10-12

Don't miss a new notcurses release

NewReleases is sending notifications on new releases.