Agama can be controlled with two interfaces:
- A CLI (command-line interface) written in Rust
- A web interface offering a more graphical and user-frienly way of doing things
Of course, to connect to the latter a browser is needed. Currently Agama-Live (the demo image for Agama) uses a full screen Firefox. We are not sure if that will be the solution in the definitive installation-media for future (open)SUSE distributions. It obviously has its drawbacks.
So let's explore some alternatives:
Instead of Firefox we could use:
- A more minimalistic browser like Cog or simplestbrowser (drawback: maintainance of the browser in the long term)
- A custom application opening a browser engine. Since we already use Rust for the CLI client...
- https://github.com/tauri-apps/wry looks like a very good match
Again, Rust looks like the most reasonable option here. Everything in Agama is Ruby (because of the YaST inheritance) and Rust.
There are plenty of frameworks/library in Rust to create TUI applications. For a quick experiment, we could even extend the existing "agama" command with some prototype (let's say something like agama config-tui storage
) so all the current infrastructure to talk to D-Bus and so on is reused. Some of the many TUI libraries out there:
- https://github.com/veeso/tui-realm
- https://github.com/ratatui-org/ratatui
- https://github.com/gyscos/Cursive
- https://github.com/ivanceras/titik
- https://github.com/jeaye/ncurses-rs
- Many more (check awesome Rust)
Of course, we could also go with a GUI application. There are also tons of options for GUI development at awesome Rust and even more options not listed there, like reml or reml4.