ITADN
gyscos/cursive
gyscos/cursive · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

草书

crates.io Rust MIT licensed Gitter chat

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 dialog example

查看其他 示例 以获取这些结果,以及更多:

lorem.rs example menubar.rs example select.rs example mines example theme_manual.rs example syntect example

(颜色可能取决于您的终端配置。)

教程

以下教程可能有助于您开始使用 cursive:

第三方视图

以下是一些实现了新视图供您使用的 crate:

展示

以下是一些使用 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 可能更难以预测。

贡献

替代方案

另请参阅 ratatui - 以及一个小型 比较页面