tui.md 1.5 KB

Terminal UI

You can build a text-based interface that will run in the terminal using Dioxus.

Hello World screenshot

Note: this book was written with HTML-based platforms in mind. You might be able to follow along with TUI, but you'll have to adapt a bit.

Support

TUI support is currently quite experimental. Even the project name will change. But, if you're willing to venture into the realm of the unknown, this guide will get you started.

Getting Set up

Start by making a new package and adding our TUI renderer.

cargo new --bin demo
cd demo
cargo add dioxus
cargo add dioxus-tui

Then, edit your main.rs with the basic template.

{{#include ../../../examples/hello_world_tui.rs}}

To run our app:

cargo run

Press "ctrl-c" to close the app. To switch from "ctrl-c" to just "q" to quit you can launch the app with a configuration to disable the default quit and use the root TuiContext to quit on your own.

{{#include ../../../examples/hello_world_tui_no_ctrl_c.rs}}

Notes

  • Our TUI package uses flexbox for layout
  • Regular widgets will not work in the tui render, but the tui renderer has it's own widget components (see the widgets example).
  • 1px is one character lineheight. Your regular CSS px does not translate.
  • If your app panics, your terminal is wrecked. This will be fixed eventually.