State of the Art
Agama, the future (open)SUSE installer, can be controlled with two user interfaces:
- A CLI (command-line interface) written in Rust.
- A web interface offering a more graphical and user-friendly way of doing things.
Of course, to connect to the latter a browser is needed. That's actually a pretty good solution for controlling the installation from a remote machine (even a mobile phone).
But for pure-local installation, that implies we need a graphical environment (Xorg or Wayland) and a browser running in the machine being installed. Currently Agama-Live (the demo image for Agama) uses a full-screen Firefox as main UI. We are not sure if that will be the solution in the definitive installation-media for future (open)SUSE distributions, but it obviously has its drawbacks:
The CLI can also be used for local installation, but it's not exactly a newbie-friendly UI... it's a CLI after all.
I would like the explore the possibility of creating a TUI that offers a more user-friendly experience than the current CLI, without the need of a graphical environment. Something similar (but MUCH, MUCH simpler) to the ncurses interface of YaST.
Since the CLI is written in Rust and it already contains all the infrastructure to interact with Agama, it makes sense to take it as starting point. There are plenty of TUI libraries for Rust.
Unfortunately, I have zero experience with Rust... but I have to start sooner or later.
Goal for this Hackweek
The real goal is to learn enough Rust to compile the current Agama pieces and do some changes.
Going beyond the learning itself, a possible objective would be to create a simple application that offers some kind of text-based interactive user interface to configure the storage settings of Agama. It should:
- Display the disk in which the system is going to be installed with some nice widget to change that
- Allow to enable or disable encryption
- List the file systems ("volumes" in Agama jargon) to be created
- List the resulting actions
Of course, changes in the configuration (disk or encryption) should result in the immediate update of the whole interface.
Some TUI libraries that look promising:
There are many more listed at awesome Rust and other online directories. Many more (check awesome Rust)
Looking for hackers with the skills:
Nothing? Add some keywords!
This project is part of:
Hack Week 23
This project is one of its kind!