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
每月133次下载
425KB
11K SLoC
Surf-N-Term
这个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