Arkham
An Ergonomic TUI Framework
Arkham

Robust TUI foundation

Arkham attempts to give a firm foundation for building TUI Apps. It does not provide a set of widgets or components that can be used. Instead, it tries to make the process of building terminal interfaces easy enough that they aren't necessary.

  • Keyboard handling

  • Terminal modification

  • Full screen terminal UIs with alternate screen handling

  • Full run loop and rendering engine

  • Easy text formatting and styling

  • Ergonomic component architecture

  • Dependency injection

Components are simple functions

fn my_component(ctx &mut ViewContext) {
    ctx.insert((0,0), "Welcome");
}

Easily handle text styling

fn my_component(ctx &mut ViewContext) {
    ctx.insert(
        (0,0), 
        "Welcome"
            .to_runes()
            .bg(Color::Blue)
            .fg(Color::White),
    );
}

Painless dependency injection

fn my_component(ctx &mut ViewContext, user: Res<MyUser>) {
    ctx.insert(
        (0,0), 
        format!("Hello, {}", user.name),
    );
}

Easy keyboard handling

fn my_component(ctx &mut ViewContext, kb: Res<Keyboard>) {
    if kb.char() == Some('x') {
        ctx.insert(
            (0,0), 
            "X marks the spot"
        );
    }
}
Generated by Codex