63 个版本
0.28.1 | 2024 年 8 月 1 日 |
---|---|
0.28.0 |
|
0.27.0 | 2023 年 8 月 6 日 |
0.26.1 | 2023 年 2 月 26 日 |
0.2.0 | 2018 年 1 月 27 日 |
#3 在 命令行界面 中排名
1,210,050 每月下载量
用于 2,726 个 crate (1,618 直接)
390KB
7K SLoC
跨平台终端操作库
Crossterm 是一个纯 Rust 编写的终端操作库,可以编写跨平台文本界面(参见 功能)。它支持所有 UNIX 和 Windows 终端(包括 Windows 7,并非所有终端都已测试,更多信息请参见 已测试终端)。
目录
功能
- 跨平台
- 多线程(发送、同步)
- 详细的文档
- 依赖项少
- 完全控制写入和刷新输出缓冲区
- 是 tty
- 光标
- 移动光标 N 次(上、下、左、右)
- 移动到上一行/下一行
- 移动到列
- 设置/获取光标位置
- 存储光标位置并在稍后恢复
- 隐藏/显示光标
- 启用/禁用光标闪烁(并非所有终端都支持此功能)
- 样式输出
- 前景色(16 种基本颜色)
- 背景色(16 种基本颜色)
- 256 (ANSI) 颜色支持(仅限 Windows 10 和 UNIX)
- RGB 颜色支持(仅限 Windows 10 和 UNIX)
- 文本属性,如粗体、斜体、下划线、删除线等
- 终端
- 清除(所有行、当前行、从光标上/下,直到新行)
- 向上/向下滚动
- 设置/获取终端大小
- 退出当前进程
- 备用屏幕
- 原始屏幕
- 设置终端标题
- 启用/禁用自动换行
- 事件
- 输入事件
- 鼠标事件(按下、释放、位置、按钮、拖动)
- 终端大小调整事件
- 对鼠标和键事件的 SHIFT | ALT | CTRL 高级修饰符支持
- 期货流(功能'事件流')
- 轮询/读取API
已测试终端
- 控制台宿主
- Windows 10(专业版)
- Windows 8.1(N版)
- Windows Terminal
- Windows 10 x86_64(企业版)
- Windows 11 arm64(企业版)
- Ubuntu桌面终端
- Ubuntu 23.04 64位
- Ubuntu 17.10
- Pop!_OS(Ubuntu)20.04
- (Arch、Manjaro)KDE Konsole
- (Arch、NixOS)Kitty
- Linux Mint
- (OpenSuse)Alacritty
- (Chrome OS)Crostini
- Apple
- macOS Monterey 12.7.1(Intel芯片)
- macOS Sonoma 14.4(M1 Max、Apple硅芯片)
该软件包支持所有UNIX终端和Windows 7及以下版本的终端;然而,并非所有终端都经过测试。如果您已使用此库在其他上述列表之外的终端上且无问题,请随意将其添加到上述列表中——我非常感激!
入门指南
点击显示Cargo.toml。
[dependencies]
crossterm = "0.27"
use std::io::{stdout, Write};
use crossterm::{
execute,
style::{Color, Print, ResetColor, SetBackgroundColor, SetForegroundColor},
ExecutableCommand,
event,
};
fn main() -> std::io::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.27"
features = ["event-stream"]
功能 | 描述 |
---|---|
事件流 |
futures::Stream 产生Result<Event> 。 |
serde |
事件序列化和反序列化。 |
事件 |
读取输入/系统事件(默认启用) |
filedescriptor |
使用原始filedescriptor处理所有事件,而不是使用mio依赖项。 |
要使用crossterm作为非常薄的层,您可以禁用events
功能或使用filedescriptor
功能。这可以禁用mio
/ signal-hook
/ signal-hook-mio
依赖项。
依赖项解释
依赖项 | 用于 | 包含 |
---|---|---|
bitflags |
KeyModifiers ,这些根据输入而有所不同。 |
always |
parking_lot |
使用超时锁定RwLock ,const互斥锁。 |
always |
libc |
UNIX终端大小/原始模式/set_title和其他一些低级功能。 | 可选(events 功能),仅限UNIX |
Mio |
事件就绪轮询,唤醒轮询器 | 可选(events 功能),仅限UNIX |
signal-hook |
signal-hook用于处理Mio的终端大小SIGNAL。 | 可选(events 功能),仅限UNIX |
winapi |
用于低级Windows系统调用,这些调用无法用ANSI代码替换 | 仅限Windows |
futures-core |
用于事件异步流的异步流 | 仅与event-stream 功能标志一起使用 |
serde |
序列化和反序列化事件 | 仅与serde 功能标志一起使用 |
其他资源
使用情况
贡献
我们非常感激任何人为此软件包做出贡献。在您这样做之前,请阅读贡献指南。
作者
- Timon Post - 项目负责人 & 创建者
许可证
本项目、crossterm
及其所有子软件包:crossterm_screen
、crossterm_cursor
、crossterm_style
、crossterm_input
、crossterm_terminal
、crossterm_winapi
、crossterm_utils
均受MIT许可证的许可——有关详细信息,请参阅LICENSE文件。
依赖项
~2–11MB
~127K SLoC