Quick Settings (qs) is a modern, lightweight quick settings panel and top bar for Wayland compositors (tested with niri).
This project is in active development and needs more real-world testing. Contributions, bug reports, and feedback are welcome!
A sample Waybar config is also included in this repository for easy integration.
| Component | Method | Backend/Tool |
|---|---|---|
| WiFi | D-Bus | NetworkManager (org.freedesktop.NetworkManager) |
| Bluetooth | D-Bus | BlueZ (org.bluez) |
| Audio/Volume | CLI | wpctl (WirePlumber) |
| Brightness | CLI | brightnessctl |
| Battery | File+CLI | /sys/class/power_supply + upower |
| Power Profile | CLI | powerprofilesctl |
| Power Actions | CLI | systemctl, loginctl |
| Warp VPN | CLI | warp-cli |
| Top Bar | IPC | niri (via $NIRI_SOCKET + socat) |
-
Install dependencies:
- Rust toolchain
- GTK4, gtk4-layer-shell, WirePlumber, NetworkManager, BlueZ, brightnessctl, upower, powerprofilesctl, systemctl, loginctl, warp-cli, socat
-
Clone the repository:
git clone <repo-url> cd "Quick Settings"
-
Build the project:
cargo build --release
-
Update your niri config (replace
<path-to-project>with your actual path):spawn-at-startup "<path-to-project>/target/release/deviced" spawn-at-startup "<path-to-project>/target/release/qs"
-
(Optional) Update Waybar config for quicksettings:
"on-click": "pkill -SIGUSR1 qs"
src/ src/
src/
├── main.rs # Application entry point
├── ipc/ # IPC event handling
├── state/ # Shared application state
├── services/ # D-Bus, CLI, and system services
├── ui/ # GTK4 UI components
└── utils/ # Utilities
MIT
