Skip to main content

Crate retach

Crate retach 

Source
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 smaller

Modules§

screen
VTE-based terminal screen emulator with scrollback history. Processes escape sequences and maintains a grid of styled cells.