ratatui/ratatui
开发工具用 Rust 构建交互式终端界面、仪表盘和命令行应用的 UI 库。
项目介绍
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 讨论
相关推荐
- 1jehuang/jcode用 Rust 编写的高性能终端编程 Agent,在单个仓库中低内存并行运行多个 Agent。
- jesseduffield/lazygit把 Git 的暂存、变基和历史修改变成终端里可键盘操作流程的工具。
- mesamirh/MovieBox-Tui在终端里搜索、播放和批量下载电影、剧集与直播频道,并交给本地播放器播放。
- QwenLM/qwen-code一个运行在终端里的 AI 编程智能体,可读取、修改、运行和审查代码,并提供编辑器、桌面、网页和聊天入口。
- slint-ui/slint用声明式 UI 描述原生界面的 GUI 工具包,支持 Rust、C++、JavaScript、Python,覆盖桌面、移动、Web 和嵌入式。