A panel applet for switching sched_ext schedulers on COSMIC (pop-os/cosmic-epoch), without touching the terminal or the CachyOS scheduler GUI.
Built because I wanted to flip between bpfland, cake, lavd etc. directly through a panel button.
Visual depend on your Cosmic themeing.
- Click the panel icon, get a popup listing every scheduler your system actually supports (pulled live from
scxctl list, not hardcoded, so it stays correct as CachyOS adds more) - Click a scheduler or a mode (auto, gaming, powersave, lowlatency, server) and it applies immediately
- Shows a checkmark next to whatever's actually running, confirmed against
scxctl getafter every change, not just assumed - Stop button kills the running scheduler and hands control back to the default kernel scheduler
- If something goes wrong, the popup shows the real error from scxctl instead of just doing nothing
- COSMIC desktop (cosmic-epoch)
scx-tools(providesscxctlandscx_loader) - on CachyOS:sudo pacman -S scx-scheds scx-tools- A working polkit agent.
scxctl/scx_loaderneed admin privileges to switch schedulers, and without sudo they go through polkit. COSMIC ships one by default. - Rust and
justto build:sudo pacman -S rust just
git clone https://github.com/fernbacher/cosmic-applet-scx
cd cosmic-applet-scx
just installThat builds a release binary and installs it plus the desktop entry. Then add it from COSMIC Settings > Desktop > Panel > Applets.
If you'd rather build without installing system-wide first:
cargo build --release
./target/release/cosmic-applet-scxscx_loader exposes a D-Bus interface, and I could've talked to it directly, but shelling out to scxctl is simpler, easier to debug (you can run the exact same command by hand in a terminal if the applet misbehaves), and scx_loader already validates and authorizes each call through polkit regardless of which path you use. Not the fastest option, but for something you click a few times an hour it doesn't matter.
scxctl getprints scheduler and mode names in Title Case (Cake,Gaming) for display, butscxctl switch/startexpect lowercase (cake,gaming). The applet lowercases everything internally before comparing or resubmitting, but if a future scxctl version changes this format again, that's the first place to look.- If a switch fails silently for you, check the popup, it surfaces scxctl's actual stderr instead of eating it.
MIT, do whatever you want with it.