Most desktop Linux users on tiling window managers like Hyprland, Sway, or i3 face the same dilemma: either memorize dozens of CLI arguments across nmcli, bluetoothctl, wpctl, and systemctl, or pull in heavy 500MB+ GUI control centers from GNOME or KDE.
I built settings-tui to bridge that gap with a unified, hyper-lightweight (<9MB, near 0% idle CPU) terminal control center written in Rust with Ratatui.
Subsystems Covered
- Network: Wi-Fi network scanning, WPA/WPA2 interactive password modals, and Ethernet stats via NetworkManager D-Bus.
- Audio: Sink/source volume, streams, and muting via WirePlumber / PipeWire.
- Bluetooth: Device scanning, pairing, and connection management over BlueZ.
- Displays & Backlight: Hyprland IPC monitor modes, resolutions, scale factors, and single-digit brightness control via sysfs.
- Power: Battery health, discharge rates, and power profiles via UPower.
- Systemd: Service inspection, restarts, and unit status.
The Transaction Engine
Rather than blindly executing shell commands and assuming success, settings-tui implements a transactional lifecycle:
READ CURRENT STATE -> MUTATE -> BOUNDED PROPAGATION WAIT -> READ CANONICAL STATE -> VERIFY POSTCONDITION.
If a Wi-Fi authentication fails or a PipeWire node does not accept a volume change, the TUI transparently reports the exact status badge.
Trying it Out
You can try it instantly without compiling:
npx settings-tui
Or install from source:
git clone https://github.com/ziuus/settings-tui.git
cd settings-tui && cargo run --release
GitHub Repository: https://github.com/ziuus/settings-tui
Contributions, ideas, and feedback are welcome!
Top comments (0)