3 个不稳定版本
0.4.0 |
|
---|---|
0.2.1 | 2020 年 1 月 31 日 |
0.1.0 | 2019 年 12 月 23 日 |
0.0.3 |
|
0.0.2 |
|
390 在 命令行界面
每月下载量 243
用于 4 个 crate
96KB
2K SLoC
跨不同 TUI 库的统一 API。
此库提供了对各种终端库的通用 API,如 termion、crossterm、ncurses、pancurses 和 console。
为什么需要这个库?主要有三个原因
- 对特定终端库及其功能的依赖性较低。
- 根据选择的后端支持不同功能,并允许您随时更改。
- 隐藏实现细节(原始模式、写入缓冲区、批量操作)。
- 隐藏差异(游标基于0或1、清理资源、事件处理、执行操作。)
- 减少生态系统中的后端映射重复(cursive、tui、termimad、...)
这个库还相当年轻。如果您遇到问题,请随时创建一个问题。我会尽快修复它。
目录
功能
- 在执行(刷新)之前批量处理多个终端命令。
- 完全控制底层缓冲区。
- 锁定终端一段时间。
- 选择的后端。
实现的后端
- Crossterm(纯 Rust 和跨平台)
- Termion(纯 Rust 用于 UNIX 系统)
- Crosscurses(跨平台,但需要 ncurses C 依赖(fork pancurses))
使用以下功能标志之一选择后端。
功能 | 描述 |
---|---|
crossterm-backend |
将使用 crossterm 后端。 |
termion-backend |
将使用 termion 后端。 |
crosscurses-backend |
将使用 crosscurses 后端。 |
如
[dependencies.terminal]
version = "0.2"
features = ["crossterm-backend"]
在后端规范文档中,您可以找到每个后端及其优势的描述。
尚未实现
入门
点击显示Cargo.toml。
[dependencies]
terminal = "0.2"
features = ["your_backend_choice"]
use terminal::{Action, Clear, error, Retrieved, Value};
use std::io::Write;
pub fn main() -> error::Result<()> {
let mut terminal = terminal::stdout();
// perform an single action.
terminal.act(Action::ClearTerminal(Clear::All))?;
// batch multiple actions.
for i in 0..20 {
terminal.batch(Action::MoveCursorTo(0, i))?;
terminal.write(format!("{}", i).as_bytes());
}
// execute batch.
terminal.flush_batch();
// get an terminal value.
if let Retrieved::TerminalSize(x, y) = terminal.get(Value::TerminalSize)? {
println!("\nx: {}, y: {}", x, y);
}
Ok(())
}
其他资源
贡献
我非常欢迎任何形式的贡献。在您贡献之前,请务必阅读贡献指南。
作者
- Timon Post - 项目负责人 & 创建者
许可证
本项目 terminal
采用MIT许可证 - 有关详细信息,请参阅LICENSE文件。
依赖关系
~0–1MB
~17K SLoC