65 个版本
0.21.1 | 2024 年 8 月 3 日 |
---|---|
0.20.0 | 2022 年 9 月 9 日 |
0.19.0 | 2022 年 7 月 22 日 |
0.17.0 | 2022 年 1 月 10 日 |
0.1.1 | 2016 年 7 月 21 日 |
36 在 命令行界面
11,931 每月下载量
用于 163 个 crate(144 个直接使用)
1MB
22K SLoC
Cursive
Cursive 是一个 Rust 的 TUI (文本用户界面) 库。它默认使用 crossterm
后端,但也提供其他后端。
它允许您为终端应用程序构建丰富的用户界面。
文档
它被设计成安全且易于使用
[dependencies]
cursive = "0.21"
或使用最新的 git 版本
[dependencies]
cursive = { git = "https://github.com/gyscos/cursive" }
use cursive::views::{Dialog, TextView};
fn main() {
// Creates the cursive root - required for every application.
let mut siv = cursive::default();
// Creates a dialog with a single "Quit" button
siv.add_layer(Dialog::around(TextView::new("Hello Dialog!"))
.title("Cursive")
.button("Quit", |s| s.quit()));
// Starts the event loop.
siv.run();
}
查看其他 示例 以获取这些结果以及其他更多内容
(颜色可能取决于您的终端配置。)
教程
这些教程可能有助于您开始使用 cursive
第三方视图
以下是一些为您实现新视图的 crate
- cursive-aligned-view:一个用于 gyscos/cursive 视图的包装器,用于对齐子视图。
- cursive-async-view:一个加载屏幕包装器。
- cursive-flexi-logger-view:使用
emabee/flexi_logger
的替代调试视图。 - cursive-markup:一个渲染 HTML 或其他标记的视图。
- cursive-multiplex:一个类似于 tmux 的多路复用器。
- cursive-spinner-view:一个旋转视图。
- cursive-tabs:标签。
- cursive_calendar_view:一个基本的日历视图实现。
- cursive_hexview:一个简单的十六进制视图。
- cursive_table_view:一个基本的表格视图组件。
- cursive_tree_view:一个树视图实现。
- cursive-hjkl:将任何视图包装起来以使用类似 Vim 的
hjkl
控制。
展示
以下是一些使用 cursive 的酷应用
- RustyChat:使用 Rust 和 Cursive 开发的聊天客户端。
- checkline:从 stdin 到 stdout 的复选框行选择器。
- clock-cli:具有计时器和倒计时功能的时钟。
- fui:为您的程序添加 CLI 和表单界面。
- game2048-rs:使用 Rust 和 cursive 的 tui 游戏 2048。
- git-branchless:Git 的无分支工作流程。
- grin-tui:MimbleWimble 协议的最小实现。
- kakikun:用于终端的绘画和 ASCII 艺术应用程序。
- launchk:在 macOS 上管理 launchd 代理和守护进程。
- markline:基于标记的从 stdin 到 stdout 的行选择器。
- mythra:用于搜索音乐的 CLI。
- ncspot:跨平台的 ncurses Spotify 客户端。
- rbmenu-tui:用于书签管理的 TUI。
- retris:经典俄罗斯方块的简单实现。
- ripasso:用 Rust 编写的简单密码管理器。
- rusty-man:浏览 rustdoc 文档。
- saci-rs:简单的 API 客户端接口。
- so:Stack Overflow 的终端界面。
- sudoku-tui:在命令行上玩数独。
- tap:具有模糊查找器的终端音频播放器。
- ttyloop:移动游戏 Loop 的克隆。
- wiki-tui:简单易用的维基百科文本用户界面。
目标
- 易用性。 简单的应用程序应该简单。复杂的应用程序应该易于管理。
- Linux TTY 兼容性。 颜色可能受到影响,UTF-8 可能过多,但大多数功能必须在 Linux TTY 上正常工作。
- 灵活性。 此库应能够处理简单的 UI 脚本、复杂的实时应用程序,甚至游戏。
- 特别是,它试图拥有足够的功能来重现这些类型的工具
兼容性
首先,终端很混乱。一组小的功能是标准的,但超出这个范围,几乎每个终端都有自己的实现。
输出
- 颜色:基本的 8 种颜色调色板应该广泛支持。在原始 Linux TTY 中不支持用户定义的颜色,但在大多数终端中应该工作,尽管仍然是实验性的。
- UTF-8:目前 Cursive 非常期待 UTF-8 位置。它最终可能会得到修复以支持其他位置上的窗口边框,但这不是优先事项。对 宽字符 有初始支持。 RTL 支持已在 计划中,但仍然非常早期。
输入
- 示例
key_codes
可以作为一个有用的工具,以查看库如何对各种按键做出反应。 - 请注意,如果终端已注册快捷键,则它们可能不会被传输到应用程序。
- 在启用了 Unicode 的终端仿真器中,UTF-8 输入应该工作得很好,但原始 Linux TTY 可能会更加挑剔。
贡献
替代方案
依赖关系
~5–16MB
~208K SLoC