24 个版本 (13 个重大更改)
0.14.0 | 2024 年 2 月 3 日 |
---|---|
0.13.0 | 2023 年 12 月 26 日 |
0.12.1 | 2023 年 12 月 7 日 |
0.11.0 | 2023 年 5 月 11 日 |
0.3.0 | 2020 年 7 月 22 日 |
#130 在 命令行界面 中
每月下载量 9,707
用于 10 个库(3 个直接使用)
20KB
297 行
Crosstermion 是一个实用程序库,用于统一某些类型的两个库,允许在 Unix 系统上轻松构建使用更精简的 termion
库的应用程序,但在 Windows 系统上则使用 crossterm。
目前提供的功能包括
- 一个
Key
类型和一个input_stream
(异步)来接收按键 - 一个
AltenrativeRawTerminal
,它将替代屏幕与原始模式相结合 - 创建一个使用 crossterm 或 termion 后端之一的
tui
或tui-react
终端的方式。
那么如何处理颜色和样式呢?
- 使用
tui
- 当使用
tui
时,您将获得对颜色和样式的本地跨后端支持。
- 当使用
- 不使用
tui
- 使用
color
功能,结合ansi_term
提供额外的颜色实用程序。 - 否则,使用
ansi_term
、colored
或termcolor
将按预期工作。
- 使用
如何在 Windows 上使用 crossterm
和在 Unix 上使用 termion
构建?
似乎没有简单的方法,因为 cargo
总是会构建依赖项,即使它们在您的平台上不应该被使用。这导致 termion
和 crossterm
都被构建,这在 Windows 上是致命的。因此,在创建发布构建时必须手动选择功能切换,即必须排除所有默认需要 TUI 的功能,并让用户启用他们需要的功能。
宏 compile_error!(…)
可以用来通知用户是否需要选择功能。或者,确保即使在没有任何选定的后端的情况下也能成功编译。
最后,可以始终选择编译针对 crossterm
。
功能
所有功能都可以累加使用,但如果它们是互斥的,例如在 tui-react
和 tui
,或者 crossterm
和 termion
的情况下,将选择更通用的一个。
- 互斥
- crossterm
- 提供从
crossbeam::event::KeyEvent
到Key
的转换支持以及一个AlternativeRawTerminal
- 提供线程化的键盘输入通道
- 累加
- input-async-crossterm
- 通过
mio
无需启动额外线程即可将原生异步能力添加到 crossterm。 - 请注意,线程化键盘输入始终受支持。
- 通过
- input-async-crossterm
- 提供从
- termion
- 提供从
termion::event::Key
到Key
的转换支持以及一个AlternativeRawTerminal
- 提供线程化的键盘输入通道
- 累加
- input-async
- 启动一个线程,并通过 futures Stream 提供输入事件
- 请注意,线程化键盘输入始终受支持。
- input-async
- 提供从
- crossterm
- 互斥
- _using
tui_
(互斥)- tui-termion 意味着
termion
功能- 结合
tui
和termion
,并提供一个具有termion
后端的tui::Terminal
- 结合
- tui-crossterm 意味着
crossterm
功能- 结合
tui
和crossterm
,并提供一个具有crossterm
后端的tui::Terminal
- 结合
- tui-termion 意味着
- using
tui-react
(互斥)- tui-react-termion 意味着
termion
功能- 结合
tui-react
和crossterm
,并提供一个具有crossterm
后端的tui::Terminal
- 结合
- tui-react-crossterm 意味着
crossterm
功能- 结合
tui-react
和crossterm
,并提供一个具有crossterm
后端的tui::Terminal
- 结合
- tui-react-termion 意味着
- _using
- 颜色
- 添加基于
ansi_term
的条件着色支持。该包体积小,针对性强,支持零拷贝绘制字节和 UTF-8 字符串,同时支持 Windows 10。
- 添加基于
- 光标移动
- 互斥
- crossterm
- 使用 crossterm 实现光标移动
- termion
- 使用 termion 实现光标移动
- crossterm
- 互斥
依赖关系
~0–12MB
~68K SLoC