#用户界面 #TUI #组件 # #框架 #构建块 #跨平台

superconsole

一个简单但强大的基于文本的用户界面(TUI)框架

2个不稳定版本

0.2.0 2023年6月5日
0.1.0 2022年3月22日

362命令行界面

Download history 458/week @ 2024-03-13 1234/week @ 2024-03-20 582/week @ 2024-03-27 698/week @ 2024-04-03 217/week @ 2024-04-10 444/week @ 2024-04-17 1180/week @ 2024-04-24 388/week @ 2024-05-01 461/week @ 2024-05-08 728/week @ 2024-05-15 906/week @ 2024-05-22 834/week @ 2024-05-29 417/week @ 2024-06-05 381/week @ 2024-06-12 414/week @ 2024-06-19 590/week @ 2024-06-26

1,835 每月下载次数
用于 stoic

MIT/Apache

3MB
3.5K SLoC

用于构建Rust文本用户界面(TUI)的组件式框架

GitHub上有这个仓库的几个副本,facebookincubator/superconsole 是官方版本。

superconsole 框架提供了对基于文本的渲染的强大行抽象。它还提供了基本构建块,如行操作和更高层次的组合组件。包含一系列“电池”组件,以帮助开发者尽可能快速地创建文本用户界面(TUI)。

superconsole背后的设计选择是为了优先考虑可测试性、易于组合和灵活性。

Superconsole还提供样式化,包括斜体、下划线、加粗和文字着色。此外,依赖crossterm确保它与Windows、Unix和MacOS兼容。

最后,superconsole区分渲染逻辑和程序状态 - 每个渲染调用都接受对状态的不可变引用,组件可以使用它将状态注入其不可变的渲染逻辑中。

演示

Superconsole running some buck2 tests

示例

use std::convert::TryInto;
use superconsole::components::bordering::{Bordered, BorderedSpec};
use superconsole::{Component, Dimensions, DrawMode, Lines, SuperConsole};

#[derive(Debug)]
struct HelloWorld;

impl Component for HelloWorld {
    fn draw_unchecked(&self, _dimensions: Dimensions, _mode: DrawMode) -> anyhow::Result<Lines> {
        Ok(Lines(vec![
            vec!["Hello world!".to_owned()].try_into().unwrap(),
        ]))
    }
}

pub fn main() -> anyhow::Result<()> {
    let bordering = BorderedSpec::default();
    let mut superconsole = SuperConsole::new().ok_or_else(|| anyhow::anyhow!("Not a TTY"))?;
    let component = Bordered::new(HelloWorld, bordering);
    superconsole.render(&component)?;
    superconsole.finalize(&component)?;
    Ok(())
}

有关如何帮助的详细信息,请参阅CONTRIBUTING 文件。

许可证

Superconsole同时受MIT和Apache许可证,版本2.0许可,如LICENSE-MITLICENSE-APACHE 文件所示。

依赖项

~18–30MB
~486K SLoC