Expand description
retach — terminal multiplexer with native scrollback passthrough.
This crate provides a headless terminal emulator (screen::Screen)
that can be used as a library for building terminal-aware applications.
§Example
use retach::screen::Screen;
let mut screen = Screen::new(80, 24, 1000);
screen.process(b"Hello \x1b[1mWorld\x1b[0m");
for row in screen.visible_rows() {
for cell in row.iter() {
let style = screen.resolve_style(cell.style_id);
// render cell.c with style
}
}Render emulator state as ANSI for a real terminal (incremental, dirty-tracked):
use retach::screen::{AnsiRenderer, Screen};
let mut screen = Screen::new(80, 24, 1000);
let mut renderer = AnsiRenderer::new();
screen.process(b"Hello\r\n");
let full = renderer.render(&screen, true); // complete redraw
screen.process(b"World");
let delta = renderer.render(&screen, false); // only changed rows
assert!(!full.is_empty());
assert!(delta.len() < full.len()); // incremental update is smallerModules§
- screen
- VTE-based terminal screen emulator with scrollback history. Processes escape sequences and maintains a grid of styled cells.