104 个版本 (14 个破坏性版本)

0.15.2 2024年8月22日
0.15.0 2024年4月17日
0.14.0 2024年3月31日
0.12.0 2023年11月29日
0.1.3 2021年5月26日

#53 in 图形API

Download history 4/week @ 2024-05-25 1/week @ 2024-06-01 2439/week @ 2024-06-08 104/week @ 2024-06-15 5/week @ 2024-07-06 123/week @ 2024-08-03 10/week @ 2024-08-10

每月133次下载

MIT 许可证

425KB
11K SLoC

Surf-N-Term

Build Status MIT License Crate API Docs

这个crate用于与Posix终端交互。它可以用于

  • 从终端读取事件
  • 向终端发送命令
  • 在表面上进行渲染,该表面将与终端当前内容进行协调
  • 向终端发出直接命令
  • 支持kitty/sixel图像协议

简单示例

use surf_n_term::{Terminal, TerminalEvent, Error};

fn main() -> Result<(), Error> {
    let ctrl_c = TerminalEvent::Key("ctrl+c".parse()?);
    let mut term = SystemTerminal::new()?;
    term.run_render(|term, event, mut view| -> Result<_, Error> {
        // This function will be executed on each event from terminal
        // - term  - implements Terminal trait
        // - event - is a TerminalEvent
        // - view  - is a Surface that can be used to render on, see render module for details
        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(())
}

完整的示例可以在example子模块中找到

$ cargo run --example mandelbrot
$ cargo run --example mouse
$ cargo run --example events

使用

  • 你应该检查我的sweep程序,以交互式地过滤项目列表

依赖关系

~6MB
~110K SLoC