gyscos/cursive · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
草书
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: 一个用于对齐子视图的视图包装器。
- cursive-async-view: 一个加载屏幕包装器。
- cursive_calendar_view: 一个基本的日历视图实现。
- cursive-flexi-logger-view: 一个使用 flexi_logger 的替代调试视图。
- cursive_hexview: 一个简单的十六进制视图。
- cursive-hjkl: 包装任意视图以使用类似 Vim 的
hjkl控制。 - cursive-image: 一个图形图像视图。支持的格式包括 PNG、GIF、JPEG、SVG 和 PDF。
- cursive-markup: 一个渲染 HTML 或其他标记的视图。
- cursive-multiplex: 一个类似 tmux 的多路复用器。
- cursive-spinner-view: 一个旋转指示器视图。
- cursive-split-panel: 一个带有可移动分隔符的分屏面板视图。
- cursive_table_view: 一个基本的表格视图组件。
- cursive-tabs: 选项卡。
- cursive-tree: 一个树视图实现。
展示
以下是一些使用 cursive 的酷炫应用程序:
- RustyChat: 使用 Rust 和 Cursive 构建的聊天客户端。
- checkline: 从标准输入到标准输出的复选框行选择器。
- clock-cli: 具备秒表和倒计时功能的时钟。
- fui: 为您的程序添加 CLI 和表单界面。
- game2048-rs: 使用 Rust 和 cursive 实现的 TUI 2048 游戏。
- git-branchless: Git 的无分支工作流。
- grin-tui: MimbleWimble 协议的最小化实现。
- kakikun: 终端下的绘画和 ASCII 艺术应用。
- launchk: 在 macOS 上管理 launchd 代理和守护进程。
- markline: 基于标记的从标准输入到标准输出的行选择器。
- 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: 简单易用的维基百科文本用户界面
- glues: 支持 Git、CSV 和 JSON 的简单笔记应用
目标
- 易用性。 简单应用应当简单。复杂应用应当易于管理。
- Linux TTY 兼容性。 颜色可能会受损,UTF-8 可能过于复杂,但大多数功能必须在 Linux TTY 上正常工作。
- 灵活性。 该库应能处理简单的 UI 脚本、复杂的实时应用程序,甚至游戏。
- 特别是,它试图具备足够的功能来重现这类工具:
兼容性
首先,终端是混乱的。一小部分功能是标准的,但除此之外,几乎每个终端都有自己的实现。
输出
- 颜色:基本的 8 色调色板应得到广泛支持。原始 Linux TTY 不支持用户定义的颜色,但在大多数终端中应该可以工作,尽管它仍然有点实验性质。
- UTF-8:目前 Cursive 确实期望一个 UTF-8 区域设置。它最终可能会被修补以支持其他区域设置下的窗口边框,但这不是一个优先事项。 对宽字符有初步支持。RTL支持已计划,但还处于非常早期的阶段。
输入
key_codes示例可以作为一个有用的工具,用于查看库对各种按键的反应。- 请记住,如果终端注册了快捷键,它们可能不会传输到应用程序。
- UTF-8 输入在启用 Unicode 的终端模拟器中应该工作正常,但原始 Linux TTY 可能更难以预测。







