Ich denke, es gibt einige, die CLI-/TUI-Tools in Rust bauen – wegen Vorteilen wie der Performance von Rust und der Bereitstellung als einzelne Binärdatei.
Tools wie Textual für Python oder Ink für JS haben zwar eine vergleichsweise angenehme Syntax, aber manchmal stören Laufzeitabhängigkeiten oder Performance-Overhead. Im Rust-Umfeld hat ratatui zwar ein gutes Ökosystem, doch das Erstellen von Layouts kostet oft nicht wenig Zeit.
Deshalb habe ich zwei Dinge gebaut.
1. tui.builders — Terminal-UI im Browser
Ein Editor, mit dem man visuell gestalten und Rust-Code exportieren kann.
https://tui.builders
Wenn man Widgets per Drag-and-drop platziert und im Inspektor Eigenschaften setzt,
wird der Code 1:1 erzeugt:
- Inspektor: width=30, padding=2, border=rounded
- Code: .w(30).p(2).border(Border::Rounded)
2. SuperLightTUI — eine Rust-TUI-Bibliothek,
die genau für dieses 1:1-Mapping entworfen wurde.
CSS Flexbox + Tailwind
Im Stil von Utility-Klassen, sodass man mit Webentwicklungs-Erfahrung
Layouts ohne zusätzliches Lernen erstellen kann.
slt::run(|ui| {
ui.bordered(Border::Rounded).p(2).gap(1).col(|ui| {
ui.text("hello").bold().fg(Color::Cyan);
if ui.button("click").clicked { count += 1; }
});
});
Eine einzige Closure ist die gesamte App. Ohne App-Struct, Event-Loop
oder Trait-Implementierung wird in 3 Zeilen gerendert.
- 2 Abhängigkeiten (
crossterm+unicode-width), 0unsafe - Immediate-Mode-Rendering, ~1 ms pro Frame
- 50+ Widgets (Charts, Tabellen, Bilder, AI-Widgets usw.)
- Auch ohne Editor nur als Bibliothek nutzbar
Ich hoffe, das ist hilfreich für alle, die die Performance von Rust-TUIs behalten und gleichzeitig schneller entwickeln möchten.
- tui.builders: https://tui.builders
- GitHub: https://github.com/subinium/SuperLightTUI
- crates.io: cargo add superlighttui
2 Kommentare
Ich fand Ratatui so umständlich, dass ich es am Ende einfach nicht benutzt habe, aber hier wurden genau die Schwächen getroffen! Wirklich großartig, haha.
Wow! Sieht gut aus!!