ziuus/settings-tui

The Missing Native Control Center for Linux Power Users

Rust

8

81 commits

updated Oct 19, 2026

See the code

See what people are saying

README

⚙️ Settings TUI (settings-tui)

The Missing Native Control Center for Linux Power Users

CI GitHub stars npm downloads npm version License: MIT Rust Platform: Linux


Settings TUI


Stop juggling 10 different command-line utilities.
settings-tui brings the full functionality and polish of modern graphical control centers (GNOME Settings, KDE System Settings) straight to your terminal. Control your network, audio, displays, power, Bluetooth, systemd units, and desktop themes through a unified, keyboard-driven interface.

Quick Start • Why settings-tui? • Features • Keybindings • Contributing


🪶 Hyper-Lightweight Performance

settings-tui is engineered specifically for minimalists, tiling window manager users, and performance purists who refuse to install heavy GUI toolkits just to change a setting.

  • Near 0% Resource Footprint: Idles at essentially 0% CPU and consumes single-digit Megabytes of RAM.
  • Zero Background Daemons: settings-tui only runs when you open it. It does not spawn background processes, run node runtimes, or leak memory.
  • <9 MB Binary: Compiles down to a tiny, statically linked executable (when stripped) with zero dynamic dependencies on heavy frameworks like GTK, Qt, or Electron.
  • Instant Sub-15ms Boot: Launches instantly and immediately populates real-time system data using asynchronous Linux APIs (D-Bus, sysfs).

⚡ Why settings-tui?

Pain Point with Existing SetupWith settings-tui
Memorizing syntax for nmcli, bluetoothctl, wpctl, brightnessctl, hyprctl, and systemctlOne unified TUI covering all system settings
Heavy Electron apps or GNOME/KDE control centers requiring 500MB+ dependencies on minimal window managersPure Rust binary, sub-15ms startup, near 0% idle CPU & RAM usage, zero desktop environment lock-in
Shell scripts that blindly run commands and assume they workedTransactional engine (READ -> MUTATE -> READBACK -> VERIFY) ensuring state changes actually succeeded
Clunky network connection prompts popping up outside your terminalInteractive masked password dialogs, Wi-Fi frequency & security inspection built-in
Hidden or broken features failing silently on different distrosTransparent Capability Matrix with honest badges ([~], [*], [R]) so you know what is supported

🚀 Quick Start

1. Instant Run via npx (Zero Install)

You can launch settings-tui immediately without compiling:

npx settings-tui

2. Install Globally via npm

npm install -g settings-tui

# Launch anytime:
settings-tui
# Or simply:
settings

3. Build & Install from Source (Cargo)

git clone https://github.com/ziuus/settings-tui.git
cd settings-tui
cargo build --release
sudo make install

4. Arch Linux

cd extra && makepkg -si

🧩 Subsystem Breakdown

🌐 Network & Connections

  • Real-time Wi-Fi Scanner: Live discovery of access points with signal quality bars ([████] 84%), frequency band detection (5 GHz vs 2.4 GHz), and security tags (WPA2/WPA3, WEP, Open).
  • Interactive Password Modal: Built-in credential prompt for secured networks with masked entry (••••••••), Tab show/hide toggle, and Esc cancel.
  • Active Connection Card: Live network interface device, local IPv4, default gateway, and nameserver DNS addresses parsed from /etc/resolv.conf.
  • Profile Management: Instant connect for open/saved networks, disconnect for active connections, and Backspace/Delete confirmation to forget saved Wi-Fi profiles.

🔋 Power & Battery Telemetry

  • Live Energy Analytics: Visual charge meter with real-time battery level percentage.
  • Deep Hardware Metrics: Power draw in Watts (5.79 W), factory design Wh vs full capacity Wh, cycle count, terminal voltage, and cell model identity.
  • Power Profiles: Live switching between performance, balanced, and power-saver via power-profiles-daemon.
  • Time Estimates: Calculated time-to-full during AC charging and time-to-empty while discharging.

🔊 Sound & Streams

  • PipeWire & WirePlumber Integration: Fast output sinks and input sources discovery with default device selection.
  • Volume Sliders: Granular volume controls (0–100%) with mute toggling via Space.
  • Per-Application Mixing: Monitor and adjust audio volume individually for running applications playing or recording audio.

🖥️ Display & Backlight

  • Monitor Management: Enumerates active monitors and primary display detection under Hyprland / Wayland.
  • Resolution & Refresh Rate: Select and apply supported screen resolutions and refresh rates with display scale preservation.
  • Backlight Slider: Seamless screen brightness adjustment via brightnessctl and sysfs fallback.

📱 Bluetooth

  • BlueZ D-Bus Engine: Live adapter power toggle ([ ON ] / [ OFF ]).
  • Device Operations: Connect, disconnect, and forget peripherals with confirmation modals.

⚙️ Services & System

  • systemd Management: Inspect active/substate unit statuses and safely toggle units with Polkit elevation support.
  • Host & Disk Telemetry: Kernel release, OS distro, hostname, chassis type, memory utilization (RAM used/total), and visual storage partition bars.
  • Network Time (NTP): Live toggleable network time synchronization via systemd-timedated.
  • Protected Power Actions: Suspend, Hibernate, Reboot, and Power Off with explicit safety confirmation dialogs.

🎨 Appearance & Applications

  • Theme Switching: Dark / Light color scheme toggle via XDG Desktop Portal / gsettings.
  • App Launcher: Parses standard system and user .desktop entries and Flatpak installations with category filtering and background execution.

⌨️ Keyboard Navigation

Designed from the ground up for keyboard power users. Supports standard arrows and Vim navigation (hjkl):

KeyContextAction
↑ / k, ↓ / jAnyNavigate list items or sidebar categories
← / hContentReturn focus to sidebar categories
→ / l / EnterSidebarEnter content view for the selected category
EnterContentActivate setting / connect / confirm / launch
SpaceContentToggle switches / mute audio device
+ / - or > / <ContentIncrease / decrease volume, brightness, or cycle power profiles
Backspace / DelContentForget saved Wi-Fi profile or paired Bluetooth device
/AnyOpen global fuzzy search across all categories
TabPassword DialogToggle password visibility (show / hide plaintext)
EscModal / SearchDismiss dialog or exit search mode
qTop-levelClean exit (terminal state completely restored)

Press / from anywhere to initiate global search. Type keywords like wifi, volume, brightness, dark, ntp, power, or reboot and hit Enter to navigate directly to that exact setting:

⚙ Settings  / bright█
  Screen Brightness            Display      Display > Screen Brightness
  Keyboard Backlight           Display      Display > Backlight

🛠️ CLI Options & Diagnostics

settings-tui [OPTIONS]

Options:
  -s, --section <NAME>   Jump directly to category (Network, Bluetooth, Sound, Power, Display, Appearance, Applications, Services, System)
  -q, --search <QUERY>   Launch directly with search query active
  -d, --diagnose         Output the Linux compatibility and capability matrix and exit
  -c, --config <FILE>    Custom path to config [default: ~/.config/settings-tui/config.json]
  -h, --help             Print help information
  -V, --version          Print version information

Self-Diagnostics

Run settings-tui --diagnose to view your system's native capability matrix:

$ settings-tui --diagnose
Checking Linux platform and backend capabilities...

  Desktop:       Hyprland
  Session Type:  wayland
  Compositor:    Hyprland
  Init System:   systemd
  Network:       Wi-Fi scanning and connection supported (VPN/DNS unmanaged)
  Bluetooth:     Power toggle and device connect/forget supported (PIN pairing unmanaged)
  Power:         Mutable (Full)
  Sound:         Mutable (Full)
  Display:       Resolution and refresh rate mutable via hyprctl (scaling read-only)
  Appearance:    Color scheme toggle supported (font and icon themes read-only)
  Services:      Service state mutations require Polkit elevation
  System:        Power actions require active logind session / Polkit

🤝 Contributing & Community Roadmap

Contributions of all sizes are welcome! Please check out CONTRIBUTING.md for local dev setup, coding standards, and testing guidelines.

Looking for a place to start? We actively welcome PRs for:

  • Compositor Backends: Sway/wlroots output management (wlr-output-management-unstable-v1), KDE Wayland, GNOME Mutter IPC.
  • Init Systems: OpenRC / runit support for the Services page alongside systemd.
  • Network & VPN: WireGuard quick-toggle support, iwd alternative backend for NetworkManager.
  • Audio & Profiles: Bluetooth audio codec switching (LDAC, aptX) via WirePlumber.
  • Packaging: Distro packages (AUR, Nixpkgs, Alpine APKBUILD, Debian/Ubuntu PPA).

For autonomous AI coding assistants, see AGENTS.md for architectural invariants, state patterns, and guidelines.


💖 Support the Project

If you find settings-tui useful and want to support its ongoing development, consider donating! Your support helps keep this tool well-maintained and natively integrated with the ever-changing Linux ecosystem.


📄 License

This project is licensed under the MIT License.

bluez
collaborate
control-center
hyprland
linux
linux-desktop
networkmanager
ratatui
rust
settings
systemd
terminal
tui
wireplumber

ziuus/settings-tui

The Missing Native Control Center for Linux Power Users

Rust

8

81 commits

updated Oct 19, 2026

See the code

See what people are saying

README

⚙️ Settings TUI (settings-tui)

The Missing Native Control Center for Linux Power Users

CI GitHub stars npm downloads npm version License: MIT Rust Platform: Linux


Settings TUI


Stop juggling 10 different command-line utilities.
settings-tui brings the full functionality and polish of modern graphical control centers (GNOME Settings, KDE System Settings) straight to your terminal. Control your network, audio, displays, power, Bluetooth, systemd units, and desktop themes through a unified, keyboard-driven interface.

Quick Start • Why settings-tui? • Features • Keybindings • Contributing


🪶 Hyper-Lightweight Performance

settings-tui is engineered specifically for minimalists, tiling window manager users, and performance purists who refuse to install heavy GUI toolkits just to change a setting.

  • Near 0% Resource Footprint: Idles at essentially 0% CPU and consumes single-digit Megabytes of RAM.
  • Zero Background Daemons: settings-tui only runs when you open it. It does not spawn background processes, run node runtimes, or leak memory.
  • <9 MB Binary: Compiles down to a tiny, statically linked executable (when stripped) with zero dynamic dependencies on heavy frameworks like GTK, Qt, or Electron.
  • Instant Sub-15ms Boot: Launches instantly and immediately populates real-time system data using asynchronous Linux APIs (D-Bus, sysfs).

⚡ Why settings-tui?

Pain Point with Existing SetupWith settings-tui
Memorizing syntax for nmcli, bluetoothctl, wpctl, brightnessctl, hyprctl, and systemctlOne unified TUI covering all system settings
Heavy Electron apps or GNOME/KDE control centers requiring 500MB+ dependencies on minimal window managersPure Rust binary, sub-15ms startup, near 0% idle CPU & RAM usage, zero desktop environment lock-in
Shell scripts that blindly run commands and assume they workedTransactional engine (READ -> MUTATE -> READBACK -> VERIFY) ensuring state changes actually succeeded
Clunky network connection prompts popping up outside your terminalInteractive masked password dialogs, Wi-Fi frequency & security inspection built-in
Hidden or broken features failing silently on different distrosTransparent Capability Matrix with honest badges ([~], [*], [R]) so you know what is supported

🚀 Quick Start

1. Instant Run via npx (Zero Install)

You can launch settings-tui immediately without compiling:

npx settings-tui

2. Install Globally via npm

npm install -g settings-tui

# Launch anytime:
settings-tui
# Or simply:
settings

3. Build & Install from Source (Cargo)

git clone https://github.com/ziuus/settings-tui.git
cd settings-tui
cargo build --release
sudo make install

4. Arch Linux

cd extra && makepkg -si

🧩 Subsystem Breakdown

🌐 Network & Connections

  • Real-time Wi-Fi Scanner: Live discovery of access points with signal quality bars ([████] 84%), frequency band detection (5 GHz vs 2.4 GHz), and security tags (WPA2/WPA3, WEP, Open).
  • Interactive Password Modal: Built-in credential prompt for secured networks with masked entry (••••••••), Tab show/hide toggle, and Esc cancel.
  • Active Connection Card: Live network interface device, local IPv4, default gateway, and nameserver DNS addresses parsed from /etc/resolv.conf.
  • Profile Management: Instant connect for open/saved networks, disconnect for active connections, and Backspace/Delete confirmation to forget saved Wi-Fi profiles.

🔋 Power & Battery Telemetry

  • Live Energy Analytics: Visual charge meter with real-time battery level percentage.
  • Deep Hardware Metrics: Power draw in Watts (5.79 W), factory design Wh vs full capacity Wh, cycle count, terminal voltage, and cell model identity.
  • Power Profiles: Live switching between performance, balanced, and power-saver via power-profiles-daemon.
  • Time Estimates: Calculated time-to-full during AC charging and time-to-empty while discharging.

🔊 Sound & Streams

  • PipeWire & WirePlumber Integration: Fast output sinks and input sources discovery with default device selection.
  • Volume Sliders: Granular volume controls (0–100%) with mute toggling via Space.
  • Per-Application Mixing: Monitor and adjust audio volume individually for running applications playing or recording audio.

🖥️ Display & Backlight

  • Monitor Management: Enumerates active monitors and primary display detection under Hyprland / Wayland.
  • Resolution & Refresh Rate: Select and apply supported screen resolutions and refresh rates with display scale preservation.
  • Backlight Slider: Seamless screen brightness adjustment via brightnessctl and sysfs fallback.

📱 Bluetooth

  • BlueZ D-Bus Engine: Live adapter power toggle ([ ON ] / [ OFF ]).
  • Device Operations: Connect, disconnect, and forget peripherals with confirmation modals.

⚙️ Services & System

  • systemd Management: Inspect active/substate unit statuses and safely toggle units with Polkit elevation support.
  • Host & Disk Telemetry: Kernel release, OS distro, hostname, chassis type, memory utilization (RAM used/total), and visual storage partition bars.
  • Network Time (NTP): Live toggleable network time synchronization via systemd-timedated.
  • Protected Power Actions: Suspend, Hibernate, Reboot, and Power Off with explicit safety confirmation dialogs.

🎨 Appearance & Applications

  • Theme Switching: Dark / Light color scheme toggle via XDG Desktop Portal / gsettings.
  • App Launcher: Parses standard system and user .desktop entries and Flatpak installations with category filtering and background execution.

⌨️ Keyboard Navigation

Designed from the ground up for keyboard power users. Supports standard arrows and Vim navigation (hjkl):

KeyContextAction
↑ / k, ↓ / jAnyNavigate list items or sidebar categories
← / hContentReturn focus to sidebar categories
→ / l / EnterSidebarEnter content view for the selected category
EnterContentActivate setting / connect / confirm / launch
SpaceContentToggle switches / mute audio device
+ / - or > / <ContentIncrease / decrease volume, brightness, or cycle power profiles
Backspace / DelContentForget saved Wi-Fi profile or paired Bluetooth device
/AnyOpen global fuzzy search across all categories
TabPassword DialogToggle password visibility (show / hide plaintext)
EscModal / SearchDismiss dialog or exit search mode
qTop-levelClean exit (terminal state completely restored)

Press / from anywhere to initiate global search. Type keywords like wifi, volume, brightness, dark, ntp, power, or reboot and hit Enter to navigate directly to that exact setting:

⚙ Settings  / bright█
  Screen Brightness            Display      Display > Screen Brightness
  Keyboard Backlight           Display      Display > Backlight

🛠️ CLI Options & Diagnostics

settings-tui [OPTIONS]

Options:
  -s, --section <NAME>   Jump directly to category (Network, Bluetooth, Sound, Power, Display, Appearance, Applications, Services, System)
  -q, --search <QUERY>   Launch directly with search query active
  -d, --diagnose         Output the Linux compatibility and capability matrix and exit
  -c, --config <FILE>    Custom path to config [default: ~/.config/settings-tui/config.json]
  -h, --help             Print help information
  -V, --version          Print version information

Self-Diagnostics

Run settings-tui --diagnose to view your system's native capability matrix:

$ settings-tui --diagnose
Checking Linux platform and backend capabilities...

  Desktop:       Hyprland
  Session Type:  wayland
  Compositor:    Hyprland
  Init System:   systemd
  Network:       Wi-Fi scanning and connection supported (VPN/DNS unmanaged)
  Bluetooth:     Power toggle and device connect/forget supported (PIN pairing unmanaged)
  Power:         Mutable (Full)
  Sound:         Mutable (Full)
  Display:       Resolution and refresh rate mutable via hyprctl (scaling read-only)
  Appearance:    Color scheme toggle supported (font and icon themes read-only)
  Services:      Service state mutations require Polkit elevation
  System:        Power actions require active logind session / Polkit

🤝 Contributing & Community Roadmap

Contributions of all sizes are welcome! Please check out CONTRIBUTING.md for local dev setup, coding standards, and testing guidelines.

Looking for a place to start? We actively welcome PRs for:

  • Compositor Backends: Sway/wlroots output management (wlr-output-management-unstable-v1), KDE Wayland, GNOME Mutter IPC.
  • Init Systems: OpenRC / runit support for the Services page alongside systemd.
  • Network & VPN: WireGuard quick-toggle support, iwd alternative backend for NetworkManager.
  • Audio & Profiles: Bluetooth audio codec switching (LDAC, aptX) via WirePlumber.
  • Packaging: Distro packages (AUR, Nixpkgs, Alpine APKBUILD, Debian/Ubuntu PPA).

For autonomous AI coding assistants, see AGENTS.md for architectural invariants, state patterns, and guidelines.


💖 Support the Project

If you find settings-tui useful and want to support its ongoing development, consider donating! Your support helps keep this tool well-maintained and natively integrated with the ever-changing Linux ecosystem.


📄 License

This project is licensed under the MIT License.

bluez
collaborate
control-center
hyprland
linux
linux-desktop
networkmanager
ratatui
rust
settings
systemd
terminal
tui
wireplumber

Project health

Latest release

0.1.14 · Oct 11, 2026

Releases this year

14