replace the rofi control centre with a real GTK panel

rofi spawns a process per menu, so every volume nudge and every step back
destroyed and recreated the window. That is the flicker, and no tuning fixes
it. The panel is now one GTK window: a GtkStack for views, real GtkScale
sliders wired to wpctl, status on a timer, and a pidfile so super+x toggles
it shut. Escape steps back inside the same window.

Also: picom no longer fades or animates rofi, ::selection is not valid GTK
css, and the network/bluetooth lists no longer print their payload column.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
This commit is contained in:
Sarthak 2026-09-04 01:12:49 +05:30
parent 2e6d7a2116
commit b4c6c7dbd5
11 changed files with 654 additions and 334 deletions

View file

@ -36,21 +36,23 @@ the dotfiles checkout is moved to `~/.rice-backup-<timestamp>/` first.
## Control centre
`super + x`, or the gear at the right of the bar, opens one centred panel that
drives everything — no separate menus:
`super + x`, or the gear at the right of the bar, opens one centred GTK panel
that drives everything. Press it again to close. It is a real window, so the
sliders are live and stepping back between views never redraws the panel:
| | |
|---|---|
| Network | Wi-Fi on/off, rescan, pick a network (password prompt inline) |
| Bluetooth | power on/off, scan, connect/disconnect paired devices |
| Audio | volume, mute, mic mute, switch output sink |
| VPN | WireGuard interfaces up/down via `systemctl wg-quick@…` |
| Display | switch resolution/refresh on the connected output |
| Notifications | do-not-disturb, replay history, clear |
| Clipboard / Emoji / Screenshot | greenclip, rofimoji, flameshot |
| Wallpaper / Particles / Bar | shuffle, toggle the particle layer, hide the bar |
| Audio | live volume and microphone sliders; click the icon to mute |
| VPN | WireGuard up/down via `systemctl wg-quick@…` |
| Notifications | do-not-disturb toggle |
| Clipboard / Screenshot / Bar | greenclip, flameshot, hide the bar |
| Wallpaper / Particles | shuffle, toggle the particle layer |
| Power | lock, log out, suspend, reboot, shut down |
Escape steps back from a subview; Escape on the main view closes it.
## Keybindings
| | |
@ -59,7 +61,6 @@ drives everything — no separate menus:
| `super + w` | app launcher (rofi drun) |
| `super + x` | control centre |
| `super + v` | clipboard history |
| `super + period` | emoji picker |
| `super + b` | toggle the bar |
| `super + alt + p` | screenshot (flameshot) |
| `super + q` | close window |

View file

@ -46,10 +46,10 @@ bluez-utils
pamixer
playerctl
libnotify
python-gobject
xclip
flameshot
i3lock
rofimoji
aur:rofi-greenclip
# --- apps ---