Back to Docs
Crate / Public Doc

Scrin Docs

Scrin is a Rust terminal UI toolkit with its own buffer model, widgets, panes, overlays, command palettes, retained rendering helpers, and first-class Aisling effect/loader integration.

Package Metadata01

scrin is tracked from the Tknott95 crates.io catalog because it is above the 64-download threshold. Current tracked version is 0.1.83, with 263 downloads across 13 versions.

Crates.io / Docs.rs Facts03

crates.io categories: rendering, gui, command-line-interface.

crates.io keywords: ansi, effects, terminal, tui, widgets.

docs.rs package facts: 0.93% documented, 13 of 1398 items documented, 1 of 737 items with examples, source code size 623.4 kB, documentation size 9.55 MB.

docs.rs dependencies: aisling, compact_str, crossterm, rand, rand_chacha, time; dev dependencies include crossterm and tokio.

What It Is04

scrin is a Rust terminal UI toolkit for building polished command-line interfaces without Ratatui.

It provides Scrin-native buffers, colors, layout, styled text, widgets, panes, overlays, command palettes, status bars, input routing, terminal lifecycle helpers, animation utilities, and Aisling-powered effects/loaders.

Install And First Render05

Cargo.toml: scrin = "0.1.83"

The core drawing model uses Buffer, Color, Rect, Style, and Widget render calls. A typical first widget creates a Buffer, fills an area, renders Block::bordered().title(...), then renders Paragraph text inside the content rect.

Terminal::draw initializes a frame, renders into Scrin back buffer, and presents a diff to the terminal. Terminal::draw_full and present_full exist for dense animation paths.

Aisling Integration06

scrin::effects exposes Aisling through EffectPlayer and LoaderPlayer.

EffectPlayer::new(kind, text), with_size, with_duration, with_seed, with_accent, with_gradient_colors, render_to_buffer, render_frame_to_buffer, get_ansi_string, and all_kinds cover text effects inside Scrin buffers.

LoaderPlayer::new(kind), with_size, with_label, with_unit, with_fraction, with_accent, render(tick, progress, buffer, area), get_ansi_string, progress_from_counts, and all_kinds cover progress/status animations.

Modules And Performance APIs07

Main modules: scrin::core, layout, widgets, terminal, effects, panes, overlays, command_palette, status_bar, input, sanitize, and theme.

Widget set includes blocks, paragraphs, rich text, lists, tables, forms, charts, gauges, markdown output, popups, toggles, scrollbars, and clearing helpers.

Performance/ergonomics APIs include ScrollableText cached wrapping, RetainedMarkdownOutput, RetainedEffectWidget, RetainedLoaderWidget, draw_areas_timed, present_area, dirty_bounds, size_cached, frame timing hooks, ThemeTokens, and fast bordered inner rect helpers.

Docs call out app-level validation still needed for highly animated TUIs: pseudo-terminal captures, prompt captures, overlay captures, restore-path tests, and a human visual pass in a real terminal emulator.