Dioxus TUI

Beautiful terminal user interfaces in Rust with Dioxus .

Crates.io version Download docs.rs docs CI status Awesome Page Discord Link


Leverage React-like patterns, CSS, HTML, and Rust to build beautiful, portable, terminal user interfaces with Dioxus.

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

demo app

Background

You can use Html-like semantics with inline styles, tree hierarchy, components, and more in your text-based user interface (TUI) application.

Dioxus TUI is essentially a port of Ink but for Rust and Dioxus. Dioxus TUI doesn't depend on Node.js or any other JavaScript runtime, so your binaries are portable and beautiful.

Limitations

Status

WARNING: Dioxus TUI is currently under construction!

Rendering a VirtualDom works fine, but the ecosystem of hooks is not yet ready. Additionally, some bugs in the flexbox implementation might be quirky at times.

Features

Dioxus TUI features:

1 Currently only a subset of the input element is implemented as a component (not an element). The Input component supports sliders, text, numbers, passwords, buttons, and checkboxes. 2 Basic keyboard, mouse, and focus events are implemented. 3 Currently, most HTML tags don't translate into any meaning inside of Dioxus TUI. So an input element won't mean anything nor does it have any additional functionality.