Choose by use case
Urushi provides one presentation foundation across several terminal surfaces. It does not turn every terminal program into a full-screen application.
Style ordinary command output
Section titled “Style ordinary command output”Use urushi when the program writes output and returns. This includes status
messages, bordered panels, lists, tables, trees, scrollbars, and composed rows
or columns.
[dependencies]urushi = "0.1.0"To choose the drawing vocabulary first, compare View, layouts, components, and Canvas.
Build opinionated CLI presentations
Section titled “Build opinionated CLI presentations”Use urushi-cli for an opinionated visual language for human-facing,
non-interactive command output. It owns CLI-specific structure such as rails,
status glyphs, title hierarchy, and semantic roles while producing ordinary
Urushi View values. Summary and Warning are the presentations available
in 0.1.0, not the boundary of the crate.
[dependencies]urushi = "0.1.0"urushi-cli = "0.1.0"Collect interactive input
Section titled “Collect interactive input”Use urushi-prompt for a short blocking flow made of text input, selection,
and confirmation fields. A form temporarily manages terminal interaction and
returns submitted typed values or cancellation.
[dependencies]urushi-prompt = "0.1.0"Build a full-screen application
Section titled “Build a full-screen application”urushi-tui-app provides a TEA-style application runtime. The
application supplies init, update, view, and subscriptions; the runtime
owns the live model, ordered delivery, effects, frame scheduling, and terminal
lifecycle. Focus, navigation, key bindings, and other application semantics
remain ordinary model and message logic.
The runtime does not expose a backend type to Application. It resolves views
into the concrete urushi-tui Screen and draw-scoped Frame; that lower
crate owns cell buffers, diffing, and transactional output without Ratatui.
[dependencies]urushi = "0.1.0"urushi-tui-app = "0.1.0"Call urushi_tui_app::run(app) for the production defaults. Use
Runtime::new(app) when the application needs to replace the terminal backend,
executor, clock, or session options.
Build your first full-screen application →
Add UI to an existing Ratatui application
Section titled “Add UI to an existing Ratatui application”Use the separate Ratatui adapter when the application already owns a Ratatui
Terminal, event loop, state, and frame timing. ViewWidget draws a complete
Urushi view into a Ratatui Rect; RatatuiStyleExt adapts one themed block.
This integration path does not depend on either Urushi TUI crate.
[dependencies]urushi = "0.1.0"urushi-adapter-ratatui = "0.1.0"Display terminal images
Section titled “Display terminal images”Use urushi-graphics for an image region with text fallback. The renderer uses
Kitty when positively detected, otherwise Sixel when both protocol support and
cell-pixel geometry are available.
For one-shot output:
[dependencies]urushi = "0.1.0"urushi-graphics = "0.1.0"urushi-terminal = "0.1.0"For images owned by the full-screen runtime, depend on the image model directly and enable its runtime integration:
[dependencies]urushi = "0.1.0"urushi-graphics = "0.1.0"urushi-tui-app = { version = "0.1.0", features = ["graphics"] }