Surf-N-Term

Build Status MIT License Crate API Docs

This crate is used to interract with Posix terminal. It can be used to - Read events from the terminal - Send commands to the terminal - Render on a surface which will be reconciled with current content of the terminal - Issue direct commends to the terminal - Supports kitty/sixel image protocol

Simple example

```rust use surfnterm::{Terminal, TerminalEvent, Error};

fn main() -> Result<(), Error> { let ctrlc = TerminalEvent::Key("ctrl+c".parse()?); let mut term = SystemTerminal::new()?; term.runrender(|term, event, mut view| -> Result<_, Error> { // This function will be executed on each event from terminal // - term - implementes Terminal trait // - event - is a TerminalEvent // - view - is a Suface that can be used to render on, see render module for defails match event { Some(event) if &event == &ctrl_c => { // exit if 'ctrl+c' is pressed Ok(TerminalAction::Quit(())) } _ => { // do some rendering by updating the view Ok(TerminalAction::Wait) }, } })?; Ok(()) } Full examples can be found in example submodule sh $ cargo run --example mandelbrot $ cargo run --example mouse $ cargo run --example events ```

Used by