A Rust library for building terminal user interfacesBuild terminal user interfaces
Build terminal user interfaces
in Rust
A direct, framework-free way to draw to the terminal and read input.
Program owns the session and input; Screen keeps frame bytes correct and minimal.
Layered, not a framework
Start with Program for interactive apps, or use Screen alone for output. Nothing is hidden.
Cell-diffing renderer
Screen diffs frames against the terminal and writes only the cells that changed.
Typed events
Program decodes keys, mouse, paste, focus, resize, and query replies from raw terminal input.
Degrades gracefully
Write true color once; uncurses maps it to 256-color, ANSI, or plain text when needed.
Inline or fullscreen
Program starts in the normal buffer by default; switch to the alternate screen when you want it.
Async when you want it
Enable the async feature for a runtime-agnostic futures Stream of events.