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

@ -59,3 +59,12 @@ rounded-corners-exclude = [
# never round a fullscreen game
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_FULLSCREEN'",
];
# The control centre redraws by relaunching rofi, so the open/close zoom and
# fade read as flicker. Exclude rofi from both.
fade-exclude = [
"class_g = 'Rofi'",
];
animation-exclude = [
"class_g = 'Rofi'",
];

View file

@ -1,11 +1,10 @@
# System binding
super + {Return,v,w,x,b,period}
super + {Return,v,w,x,b}
{st, \
sh ~/.config/scripts/rofi-menus/clipboard-manager.sh, \
rofi -show drun, \
sh ~/.config/scripts/control-center.sh, \
sh ~/.config/scripts/toggle-bar.sh, \
sh ~/.config/scripts/rofi-menus/rofimoji.sh}
python3 ~/.config/scripts/control-panel.py, \
sh ~/.config/scripts/toggle-bar.sh}
# Screenshots
super + alt + p