Expand description
§Tuikit
Tuikit is a TUI library for writing terminal UI applications. Highlights:
- Thread safe.
- Support non-fullscreen mode as well as fullscreen mode.
- Support
Alt
keys, mouse events, etc. - Buffering for efficient rendering.
Tuikit is modeld after termbox which views the terminal as a table of fixed-size cells and input being a stream of structured messages.
§Usage
In your Cargo.toml
add the following:
[dependencies]
tuikit = "*"
Here is an example:
use tuikit::attr::*;
use tuikit::term::{Term, TermHeight};
use tuikit::event::{Event, Key};
use std::cmp::{min, max};
fn main() {
let term: Term<()> = Term::with_height(TermHeight::Percent(30)).unwrap();
let mut row = 1;
let mut col = 0;
let _ = term.print(0, 0, "press arrow key to move the text, (q) to quit");
let _ = term.present();
while let Ok(ev) = term.poll_event() {
let _ = term.clear();
let _ = term.print(0, 0, "press arrow key to move the text, (q) to quit");
let (width, height) = term.term_size().unwrap();
match ev {
Event::Key(Key::ESC) | Event::Key(Key::Char('q')) => break,
Event::Key(Key::Up) => row = max(row-1, 1),
Event::Key(Key::Down) => row = min(row+1, height-1),
Event::Key(Key::Left) => col = max(col, 1)-1,
Event::Key(Key::Right) => col = min(col+1, width-1),
_ => {}
}
let attr = Attr{ fg: Color::RED, ..Attr::default() };
let _ = term.print_with_attr(row, col, "Hello World! 你好!今日は。", attr);
let _ = term.set_cursor(row, col);
let _ = term.present();
}
}
Modules§
- attr
- attr modules defines the attributes(colors, effects) of a terminal cell
- canvas
- cell
- draw
- error
- event
- events a
Term
could return - input
- module to handle keystrokes
- key
- Defines all the keys
tuikit
recognizes. - output
Output
is the output stream that deals with ANSI Escape codes. normally you should not use it directly.- prelude
- raw
- Managing raw mode.
- screen
- Buffering screen cells and try to optimize rendering contents
- term
- Term is a thread-safe “terminal”.
- widget