Saya rasa cukup banyak orang membuat alat CLI/TUI dengan Rust karena kelebihannya seperti performa dan distribusi sebagai biner tunggal.
Alat seperti Textual di Python atau Ink di JS memang sintaksnya relatif nyaman, tetapi kadang ada kekhawatiran soal dependensi runtime atau overhead performa. Di ekosistem Rust, ratatui punya ekosistem yang bagus, tetapi waktu yang dibutuhkan untuk menyusun layout juga tidak sedikit.
Karena itu saya membuat dua hal.
1. tui.builders — UI terminal di browser
Ini adalah editor untuk mendesain secara visual dan mengekspor kode Rust.
https://tui.builders
Seret widget dan atur propertinya di inspector,
maka kode akan dihasilkan 1:1:
- inspector: width=30, padding=2, border=rounded
- kode: .w(30).p(2).border(Border::Rounded)
2. SuperLightTUI — dirancang untuk pemetaan 1:1 ini
Ini adalah library Rust TUI.
CSS flexbox + Tailwind
Dengan pendekatan utility class, jika Anda punya pengalaman pengembangan web,
Anda bisa menyusun layout tanpa perlu belajar lagi secara terpisah.
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; }
});
});
Satu closure mencakup seluruh aplikasi. Tanpa App struct, event loop,
atau implementasi trait, rendering bisa dilakukan hanya dalam 3 baris.
- 2 dependensi (
crossterm+unicode-width), 0unsafe - rendering immediate-mode, frame ~1ms
- 50+ widget (chart, table, image, widget AI, dll.)
- Bisa digunakan hanya sebagai library tanpa editor
Semoga ini bisa membantu bagi mereka yang ingin tetap mempertahankan performa Rust TUI sambil juga meningkatkan kecepatan pengembangan.
- tui.builders: https://tui.builders
- GitHub: https://github.com/subinium/SuperLightTUI
- crates.io: cargo add superlighttui
2 komentar
Saya sempat pakai Ratatui lalu berhenti karena ribet, dan ini benar-benar menangkap kekurangannya! Bagus banget wkwk
Wow! Bagus sekali!!