6个版本

0.5.0-alpha.02024年2月23日
0.4.3 2023年12月7日
0.4.0 2023年8月1日
0.2.2 2022年5月3日
0.2.1 2022年3月10日

#1193GUI

每月38次下载

MIT/Apache

1.5MB
24K SLoC

Dioxus TUI

使用Dioxus在Rust中创建美观的终端用户界面。


利用类似React的模式、CSS、HTML和Rust,用Dioxus构建美观、可移植的终端用户界面。

fn app() -> Element {
    rsx!{
        div {
            width: "100%",
            height: "10px",
            background_color: "red",
            justify_content: "center",
            align_items: "center",
            "Hello world!"
        }
    })
}

demo app

背景

您可以在您的text-based user interface (TUI)应用程序中使用类似Html的语义,包括内联样式、树状层次结构、组件等。

Dioxus TUI实际上是将Ink移植到RustDioxus的版本。Dioxus TUI不依赖于Node.js或其他任何JavaScript运行时,因此您的二进制文件是可移植的,并且看起来很美。

限制

  • Html子集 终端只能渲染Html的子集。我们支持尽可能多的功能。
  • 特定的前端设计 终端和浏览器的行为和外观不同。因此,相同的设计可能不适合两种渲染器。

状态

警告:Dioxus TUI目前正在建设中!

渲染VirtualDom效果良好,但钩子生态系统尚未准备好。此外,flexbox实现中的一些错误可能会导致一些奇怪的问题。

特性

Dioxus TUI特性

  • 基于Flexbox的布局系统
  • CSS选择器
  • 支持内联CSS
  • 内置焦点系统
  • 小部件1
  • 支持事件、钩子和回调2
  • Html标签3

1 目前仅实现了输入元素的子集作为组件(而非元素)。Input组件支持滑块、文本、数字、密码、按钮和复选框。2 实现了基本的键盘、鼠标和焦点事件。3 目前,大多数Html标签在Dioxus TUI中没有转换为任何含义。因此,input 元素 没有任何意义,也没有任何附加功能。

依赖关系

~22-32MB
~427K SLoC