搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

ratatui/ratatui

开发工具

用 Rust 构建交互式终端界面、仪表盘和命令行应用的 UI 库。

23,294
826
Rust
MIT
创建于 3 年前

项目介绍

Ratatui 是一个用 Rust 编写终端用户界面的库,面向命令行工具、仪表盘和其他交互式控制台程序。它提供灵活的小部件与渲染能力,而不是固定形态的应用外壳。项目于 2023 年从 tui-rs 分叉而来,以继续其开发 README。

仓库采用模块化工作区组织,具体划分见架构文档 ARCHITECTURE.md,并附带小部件示例和较完整的应用示例 小部件示例 应用示例。

快速使用

前置条件:安装 Rust 工具链和 Cargo。最省事的方式是通过官方模板仓库配合 cargo-generate 创建项目:

cargo install --locked cargo-generate
cargo generate ratatui/templates

选择 Hello World 模板后,会生成一个绘制 "hello world" 并在按键时退出的可运行程序 快速开始。模板的主要结构如下:

use color_eyre::Result;
use crossterm::event::{self, Event};
use ratatui::{DefaultTerminal, Frame};

fn main() -> Result<()> {
    color_eyre::install()?;
    let terminal = ratatui::init();
    let result = run(terminal);
    ratatui::restore();
    result
}

fn run(mut terminal: DefaultTerminal) -> Result<()> {
    loop {
        terminal.draw(render)?;
        if matches!(event::read()?, Event::Key(_)) {
            break Ok(());
        }
    }
}

fn render(frame: &mut Frame) {
    frame.render_widget("hello world", frame.area());
}

进入生成的项目后执行 cargo run 即可运行。如果手动搭建,可从 crates.io 添加依赖 ratatui crate。API 参考在 docs.rs 文档,概念讲解和教程在项目官网 官网。

使用约束

  • no_std 嵌入式场景需要关闭默认特性,并搭配 Mousefood 之类的后端;关闭默认特性会同时禁用布局缓存,需要显式重新启用并按设备大小配置 嵌入式说明。
  • Ratatui 输出到终端后端,实际效果取决于所选后端和终端环境。
  • 项目采用 MIT 许可证 许可证,破坏性变更单独记录在变更文件中 破坏性变更。

HotRepo 点评

在 2026-11-15 的 Rust 日榜中,Ratatui 记录到的最好名次是第 12 名,当天新增 19 Star,总 Star 约 2.33 万、Fork 825。仓库创建于 2023 年,且是 tui-rs 的延续,当前规模更像是长期积累的结果,而非单日爆发;现有单条快照只能说明当天的榜单位置,不足以判断更长周期的热度走势。对正在挑选 Rust 终端界面基础的读者,现成的模板、示例和文档链路就是最实际的切入点。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Rat in the Wild Challenge
▲ 1 · 0 条评论 · 2025年6月2日

相关推荐

  1. 1jehuang/jcode用 Rust 编写的高性能终端编程 Agent,在单个仓库中低内存并行运行多个 Agent。Rust21,383
  2. jesseduffield/lazygit把 Git 的暂存、变基和历史修改变成终端里可键盘操作流程的工具。Go83,495
  3. mesamirh/MovieBox-Tui在终端里搜索、播放和批量下载电影、剧集与直播频道,并交给本地播放器播放。Rust2,638
  4. QwenLM/qwen-code一个运行在终端里的 AI 编程智能体,可读取、修改、运行和审查代码,并提供编辑器、桌面、网页和聊天入口。TypeScript28,828
  5. slint-ui/slint用声明式 UI 描述原生界面的 GUI 工具包,支持 Rust、C++、JavaScript、Python,覆盖桌面、移动、Web 和嵌入式。Rust24,415