1 个不稳定版本
0.23.2 | 2022年4月12日 |
---|
#391 在 命令行界面
用于 ibox
265KB
5K SLoC
**不要使用此 crate,这是一个为我在其他 crate(ibox)中使用的 CROSSTERM 的分支**。
跨平台终端操作库
Crossterm 是一个纯 Rust 的终端操作库,它使得编写跨平台的文本界面成为可能(见 功能)。它支持所有 UNIX 和 Windows 7 及以上版本的终端(并非所有终端都经过测试,更多信息请见 测试的终端)。
目录
功能
- 跨平台
- 多线程(发送、同步)
- 详细的文档
- 依赖项少
- 完全控制输出缓冲区的写入和刷新
- 是 tty
- 光标
- 移动光标 N 次(上、下、左、右)
- 移动到上一行/下一行
- 移动到列
- 设置/获取光标位置
- 存储光标位置并在以后恢复到它
- 隐藏/显示光标
- 启用/禁用光标闪烁(并非所有终端都支持此功能)
- 样式输出
- 前景色(16种基本颜色)
- 背景色(16种基本颜色)
- 256(ANSI)颜色支持(仅限 Windows 10 和 UNIX)
- RGB 颜色支持(仅限 Windows 10 和 UNIX)
- 文本属性,如粗体、斜体、下划线、删除线等
- 终端
- 清除(所有行、当前行、从光标向下和向上,直到新行)
- 向上/向下滚动
- 设置/获取终端大小
- 退出当前进程
- 备用屏幕
- 原始屏幕
- 设置终端标题
- 启用/禁用自动换行
- 事件
- 输入事件
- 鼠标事件(按下、释放、位置、按钮、拖动)
- 终端大小调整事件
- 支持鼠标和键盘事件的高级修饰符(SHIFT | ALT | CTRL)和
- futures Stream(特性 'event-stream')
- 轮询/读取 API
测试的终端
- 控制台主机
- Windows 10(专业版)
- Windows 8.1(N版)
- Ubuntu 桌面终端
- Ubuntu 17.10
- Pop!_OS(Ubuntu)20.04
- (Arch、Manjaro)KDE Konsole
- (Arch)Kitty
- Linux Mint
- (OpenSuse)Alacritty
此crate支持所有UNIX终端和Windows 7及以下版本的终端;然而,并非所有终端都经过测试。如果您在没有上述列表之外的终端上使用此库且没有问题,请随意将其添加到上述列表中 - 我非常感谢!
入门指南
点击显示Cargo.toml。
[dependencies]
crossterm = "0.23"
use std::io::{stdout, Write};
use crossterm::{
execute,
style::{Color, Print, ResetColor, SetBackgroundColor, SetForegroundColor},
ExecutableCommand, Result,
event,
};
fn main() -> Result<()> {
// using the macro
execute!(
stdout(),
SetForegroundColor(Color::Blue),
SetBackgroundColor(Color::Red),
Print("Styled text here."),
ResetColor
)?;
// or using functions
stdout()
.execute(SetForegroundColor(Color::Blue))?
.execute(SetBackgroundColor(Color::Red))?
.execute(Print("Styled text here."))?
.execute(ResetColor)?;
Ok(())
}
查看所有可能的命令列表。
功能标志
[dependencies.crossterm]
version = "0.23"
features = ["event-stream"]
特性 | 描述 |
---|---|
event-stream |
futures::Stream 产生Result<Event> 。 |
serde |
事件序列的序列化和反序列化。 |
依赖项理由
依赖项 | 用于 | 包含 |
---|---|---|
bitflags |
KeyModifiers ,这些根据输入而不同。 |
always |
parking_lot |
带超时的锁定RwLock ,const互斥锁。 |
always |
libc |
UNIX终端_size/原始模式/set_title和其它一些底层功能。 | 仅限UNIX |
Mio |
事件就绪轮询,唤醒轮询器 | 仅限UNIX |
signal-hook |
signalhook用于处理Mio的终端大小调整SIGNAL。 | 仅限UNIX |
winapi |
用于低级Windows系统调用,ANSI代码无法替代 | 仅限Windows |
futures-core |
用于事件异步流 | 仅与event-stream 特性标志一起使用 |
serde |
事件序列化和反序列化 | 仅与serde 特性标志一起使用 |
其他资源
使用情况
贡献
我们非常感谢任何人对此crate的贡献。在您贡献之前,请阅读贡献指南。
作者
- Timon Post - 项目负责人 & 创始人
许可证
此项目,crossterm
,包括crossterm_screen
、crossterm_cursor
、crossterm_style
、crossterm_input
、crossterm_terminal
、crossterm_winapi
、crossterm_utils
均受MIT许可证许可 - 有关详细信息,请参阅LICENSE文件。
依赖项
~1–9.5MB
~82K SLoC