r3bl-org/r3bl-open-core

TUI framework and developer productivity apps in Rust 🦀

解决的问题

现有的终端用户界面(TUI)库通常依赖于阻塞操作,存在屏幕闪烁问题,或对终端行为的控制有限。r3bl-open-core 提供了一个高性能、完全异步的框架,用于在 Rust 中构建现代 CLI 和 TUI 应用程序,避免阻塞主线程,并在 Linux、macOS 和 Windows 上无缝运行。

工作原理

该项目实现了即时模式的响应式 UI,每次状态变化都会触发从头开始的重绘,将渲染与状态修改分离。它使用双缓冲合成器仅绘制差异部分,从而优化性能并减少闪烁。该框架基于以下几个核心原语构建:

  • 异步 Readline:非阻塞、可中断的行输入实现。
  • Applets:一种状态管理系统,允许进程在其生命周期内持久化并共享状态。
  • FlexBox 与 CSS 风格样式:受现代 Web 开发(React、JSX、CSS)启发的声明式布局引擎和样式系统。
  • TUI 模式:支持「全 TUI」(原始模式、备用屏幕)、「部分 TUI」(交互式选择和异步 REPL),以及通过 PTY 实现的终端多路复用。

适用人群

希望构建沉浸式、响应迅速且复杂的终端应用程序的 Rust 开发者——从简单的交互式提示到全屏生产力工具,无需受限于传统阻塞式 TUI 库的局限性。

主要亮点

  • 完全异步:基于 Tokio,确保主事件循环和所有操作均非阻塞。
  • Web 风格的易用性:将 FlexBox 和 CSS 风格的声明式布局引入终端。
  • 跨平台支持:原生支持 Windows、macOS 和 Linux,包括对 SSH 连接的优化。
  • 丰富的组件库:包含带语法高亮的 Markdown 解析器、富文本编辑器和对话框等。
  • 集成应用:提供 edi(Markdown 编辑器)和 giti(交互式 Git 工作流)作为参考实现。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目