# tui-rs
[![Build Status](https://github.com/fdehau/tui-rs/workflows/CI/badge.svg)](https://github.com/fdehau/tui-rs/actions?query=workflow%3ACI+)
[![Crate Status](https://img.shields.io/crates/v/tui.svg)](https://crates.io/crates/tui)
[![Docs Status](https://docs.rs/tui/badge.svg)](https://docs.rs/crate/tui/)
<img src="./assets/demo.gif" alt="Demo cast under Linux Termite with Inconsolata font 12pt">
`tui-rs` is a [Rust](https://www.rust-lang.org) library to build rich terminal
user interfaces and dashboards. It is heavily inspired by the `Javascript`
library [blessed-contrib](https://github.com/yaronn/blessed-contrib) and the
`Go` library [termui](https://github.com/gizak/termui).
The library itself supports four different backends to draw to the terminal. You
can either choose from:
- [termion](https://github.com/ticki/termion)
- [rustbox](https://github.com/gchp/rustbox)
- [crossterm](https://github.com/crossterm-rs/crossterm)
- [pancurses](https://github.com/ihalila/pancurses)
However, some features may only be available in one of the four.
The library is based on the principle of immediate rendering with intermediate
buffers. This means that at each new frame you should build all widgets that are
supposed to be part of the UI. While providing a great flexibility for rich and
interactive UI, this may introduce overhead for highly dynamic content. So, the
implementation try to minimize the number of ansi escapes sequences generated to
draw the updated UI. In practice, given the speed of `Rust` the overhead rather
comes from the terminal emulator than the library itself.
Moreover, the library does not provide any input handling nor any event system and
you may rely on the previously cited libraries to achieve such features.
### [Documentation](https://docs.rs/tui)
### Demo
The demo shown in the gif can be run with all available backends
(`exmples/*_demo.rs` files). For example to see the `termion` version one could
run:
```
cargo run --example termion_demo --release -- --tick-rate 200
```
where `tick-rate` is the UI refresh rate in ms.
The UI code is in [examples/demo/ui.rs](examples/demo/ui.rs) while the
application state is in [examples/demo/app.rs](examples/demo/app.rs).
Beware that the `termion_demo` only works on Unix platforms. If you are a Windows user,
you can see the same demo using the `crossterm` backend with the following command:
```
cargo run --example crossterm_demo --no-default-features --features="crossterm" --release -- --tick-rate 200
```
### Widgets
The library comes with the following list of widgets:
* [Block](examples/block.rs)
* [Gauge](examples/gauge.rs)
* [Sparkline](examples/sparkline.rs)
* [Chart](examples/chart.rs)
* [BarChart](examples/barchart.rs)
* [List](examples/list.rs)
* [Table](examples/table.rs)
* [Paragraph](examples/paragraph.rs)
* [Canvas (with line, point cloud, map)](examples/canvas.rs)
* [Tabs](examples/tabs.rs)
Click on each item to see the source of the example. Run the examples with with
cargo (e.g. to run the demo `cargo run --example demo`), and quit by pressing `q`.
You can run all examples by running `make run-examples`.
### Third-party widgets
* [tui-logger](https://github.com/gin66/tui-logger)
### Apps using tui
* [spotify-tui](https://github.com/Rigellute/spotify-tui)
* [bandwhich](https://github.com/imsnif/bandwhich)
* [ytop](https://github.com/cjbassi/ytop)
* [zenith](https://github.com/bvaisvil/zenith)
* [bottom](https://github.com/ClementTsang/bottom)
* [oha](https://github.com/hatoo/oha)
### Alternatives
You might want to checkout [Cursive](https://github.com/gyscos/Cursive) for an
alternative solution to build text user interfaces in Rust.
## License
[MIT](LICENSE)
快撑死的鱼
- 粉丝: 2w+
- 资源: 9157
最新资源
- (matlab实现)基于模糊控制的光储联合系统控策略研究:(1)对光储系统中的不同储能元件、进行工作时的控制元件模式、并网运行时的电路拓扑以及每一个部件的工作原理进行了详细分析并进行具体仿真模型的搭建
- matlab基于GMM模型的语音识别系统(说话人识别)带有GUI界面和lunwen
- 毕业设计-基于Android Studio实现的学生信息管理系统源码(高分项目)
- 毕业设计-基于Android Studio实现的学生信息管理系统源码
- VDI 2230在ANSYS WORKBENCH中的实现 插件&视频&几何模型&有限元模型&过程文档
- 基于HTML和CSS的静态网页设计静态简历网页设计(个人简历网页模板,亲测可以使用)
- 新年快乐html特效完整代码.html
- 永磁同步电机匝间短路故障MATLAB仿真设计 说明文档和simulink仿真源文件
- 基于HTML和CSS的静态网页设计静态简历网页设计(下载即用).zip
- 无人驾驶汽车自动泊车路径规划 多项式规划的垂直泊车,单步泊车
- 计算机网路自顶向下法第7版课后答案
- coomsol无损检测,钛合金 傅立叶变和b扫 使用的固体力学和固体传热模块耦合
- comsol多裂纹水力压裂扩展,可以实现拉伸和压缩下的破坏 comsol相场法水力压裂,comsol两相驱替,两相流,润湿角,残留量计算,comsol模拟三维随机生成裂隙注浆,考虑浆液粘度时变性浆液
- 小信号建模,阻抗分析法,整个电流环解耦控制,控制框图推导 MATLAB simulink仿真,包含整个系统的解耦建模分析过程;LCL型三相桥式逆变器,采用SPWM调制,锁相环为自行搭建PI控制,功率
- 数据挖掘练习题-贝叶斯、决策树
- Comsol多孔介质流动,渗流, 毛细,传热,传质地表地下水耦合 COMSOL孔隙渗流下的细颗粒迁移运动 对土石混合体进行了数值仿真,考虑了土石混合体孔隙变化,细颗粒侵蚀,骨架结构变形,此问题是一个
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈