63 个版本

0.28.1 2024 年 8 月 1 日
0.28.0 2024 年 7 月 31 日
0.27.0 2023 年 8 月 6 日
0.26.1 2023 年 2 月 26 日
0.2.0 2018 年 1 月 27 日

#3命令行界面 中排名

Download history 252309/week @ 2024-05-04 282283/week @ 2024-05-11 285399/week @ 2024-05-18 252039/week @ 2024-05-25 281950/week @ 2024-06-01 287898/week @ 2024-06-08 291385/week @ 2024-06-15 291131/week @ 2024-06-22 267615/week @ 2024-06-29 278993/week @ 2024-07-06 277351/week @ 2024-07-13 295448/week @ 2024-07-20 292872/week @ 2024-07-27 291682/week @ 2024-08-03 313714/week @ 2024-08-10 260759/week @ 2024-08-17

1,210,050 每月下载量
用于 2,726 个 crate (1,618 直接)

MIT 许可证

390KB
7K SLoC

Donate Travis Latest Version MIT docs Lines of Code Join us on Discord

跨平台终端操作库

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_screencrossterm_cursorcrossterm_stylecrossterm_inputcrossterm_terminalcrossterm_winapicrossterm_utils均受MIT许可证的许可——有关详细信息,请参阅LICENSE文件。

依赖项

~2–11MB
~127K SLoC