8 个版本
0.3.1 | 2023 年 5 月 22 日 |
---|---|
0.3.0 | 2023 年 5 月 22 日 |
0.2.0 | 2023 年 5 月 19 日 |
0.1.1 | 2023 年 5 月 19 日 |
0.1.0-dev-r2 | 2023 年 4 月 14 日 |
#709 in GUI
88 每月下载量
95KB
2.5K SLoC
sanguine
在 Rust 中创建动态、高性能的 TUI 应用程序。
Sanguine 诞生于对适用于 复杂 TUI 应用程序(如文本编辑器和终端多路复用器)的库的需求。Rust 生态系统中有许多用于构建 TUI 应用的优秀 crate,但许多都针对小型仪表盘式应用,并实现即时模式渲染或难以处理鼠标事件。
Sanguine 实现了一个基于树的布局 API,该 API 可在运行时更新,并针对终端渲染设计了一个自定义约束算法。布局结果在渲染之间进行缓存以提高性能,并且仅在布局更改时重新计算。小部件可以嵌套,并且可以正确处理任何深度的小部件的鼠标事件 - 小部件只需根据本地位置处理鼠标事件。小部件可以可选地指定光标位置,以便实现文本编辑器窗口等。
它建立在 Termwiz 的 BufferedTerminal
之上,该功能优化了终端写入以提高性能。
功能
- 动态、基于树的布局 API
- 可扩展的小部件特质
- 一等鼠标事件支持
- 自动传播
- 悬停和点击支持
- 全局和小部件本地事件处理器
- 泛型 API
- 用于消息传递的自定义用户事件类型
- 用于核心应用程序状态的自定义状态类型
- 焦点
- 通过方向或直接切换焦点
演示
演示用法
$ git clone [email protected]:willothy/sanguine.git
$ cd sanguine
$ cargo run --example demo
快捷键
- Control + q: 退出
- Shift + Tab: 循环焦点
- Shift + 上/下/左/右: 通过方向切换焦点
- 上/下/左/右: 切换菜单项
- Enter: 选择菜单项
依赖关系
~16–27MB
~472K SLoC