2 个版本
0.0.3 | 2023 年 1 月 29 日 |
---|---|
0.0.2 | 2023 年 1 月 15 日 |
0.0.1 |
|
#637 在 命令行界面
41KB
994 行
Termix 是一个受 bubbletea 启发的 TUI 应用程序框架。Termix 的接口与它非常相似。
查看示例
cargo run --example <simple | views>
开发中
- 鼠标支持
- 一些有用的插件
- 更多可定制的界面
- Windows 支持 等
参考
Termix
从许多其他项目中借鉴了想法
lib.rs
:
Termix
Termix 是一个用于构建 TUI 应用的简单框架。此框架受 bubbletea 启发。
目前,此框架是测试版本和开发中。
使用方法
在您的 Cargo.toml
中添加以下内容
[dependencies]
termix = "0.1.0"
这里是一个示例
use std::time::Duration;
use termix::{
color::{Color, StyledText},
event::Event,
model::{ModelAct, Updater},
Program,
};
struct Model(usize);
#[derive(Debug)]
struct Tick {}
impl ModelAct<Model, Tick> for Model {
fn update(&self, event: &Event<Tick>) -> Updater<Model, Tick> {
match event {
Event::Init => (Some(Box::new(Model(self.0))), Some(tick)),
Event::Custom(_) => {
if self.0 - 1 == 0 {
return (Some(Box::new(Model(self.0 - 1))), Some(|| Event::Quit));
}
(Some(Box::new(Model(self.0 - 1))), Some(tick))
}
Event::Keyboard(..) => (None, Some(|| Event::Quit)),
_ => (None, None),
}
}
fn view(&self) -> String {
StyledText::new(
&format!(
"Hi. This program will exit in {} seconds. To quit sooner press any key.\n",
self.0
),
Some(Color::Ansi256(212)),
None,
None,
None,
None,
)
.text()
}
}
fn tick() -> Event<Tick> {
let one_sec = Duration::from_secs(1);
std::thread::sleep(one_sec);
Event::Custom(Tick {})
}
fn main() {
Program::new(Box::new(Model(5))).run();
}
要了解如何实际使用 termix,您可以查看示例
依赖项
~2.5MB
~54K SLoC