1 unstable release

new 0.2.0 Nov 17, 2024
0.1.1 Sep 30, 2024
0.1.0 Sep 27, 2024

#340 in GUI

Download history 303/week @ 2024-09-24 67/week @ 2024-10-01 4/week @ 2024-10-29 11/week @ 2024-11-05 67/week @ 2024-11-12

82 downloads per month
Used in too_crossterm

MIT/Apache

490KB
13K SLoC

too

too -- a different kind of tui library

Simple examples

Centering some text:

fn main() -> std::io::Result<()> {
    too::run(|ui| {
        ui.center(|ui| ui.label("hello world"));
    })
}

A pair of buttons to increment and decrement a counter

fn main() -> std::io::Result<()> {
    let mut counter = 0;
    too::run(|ui| {
        ui.vertical(|ui|{
            ui.horizontal(|ui|{
                if ui.button("add 1").clicked() {
                    counter += 1;
                }
                if ui.button("subtract 1").clicked() {
                    counter -= 1;
                }
            });
            ui.label(counter)
        });
    })
}

Storing state in a struct

use too::view::Ui;

#[derive(Default)]
struct App {
    value: f32
}

impl App {
    fn view(&mut self, ui: &Ui) {
        ui.slider(&mut value);
    }
}

fn main() -> std::io::Result<()> {
    let mut app = App::default()
    too::run(|ui| app.view(ui))
}

Storing state seperately from an application

use too::view::Ui;

#[derive(Default)]
struct State {
    value: f32
}

struct App ;

impl App {
    fn view(&self, state: &mut State, ui: &Ui) {
        ui.slider(&mut state.value);
    }
}

fn main() -> std::io::Result<()> {
    let app = App;
    let mut state = State::default();
    too::run(|ui| app.view(&mut state, ui))
}

Some pre-made views are provided in: too::views

License: MIT OR Apache-2.0

Dependencies

~3–11MB
~128K SLoC