Why grayscale matters (and how hard desktops make it)
Mohamad Almousli ยท 2026-09-29 ยท 2 min read
Color isn't neutral. Every red badge, every autoplay thumbnail, every notification dot is tuned โ deliberately โ to catch your eye and pull you back in. Turning the screen gray removes that lever without removing the content. You can still read, still work, still reply to messages. You just stop getting yanked around by color.
Why bother
This isn't really about aesthetics. Interfaces use color as a reward signal on purpose โ red for urgency, blue for trust, saturated accents on exactly the buttons a product wants you to click. Strip the color and most of that manipulation just... stops working. A grayscale phone is famously one of the simplest, best-documented tricks for cutting compulsive checking, because it removes the payoff before you even open the app.
It's also just useful, independent of any of that: grayscale is how designers sanity-check contrast and layout, and it's the fastest way to see your UI the way a colorblind user actually does.
XFCE: graytoggle
XFCE has no built-in way to do this. There's a saturation slider for your wallpaper, and that's it โ nothing for the actual desktop, windows, or panel. So I wrote graytoggle: a one-command toggle that runs the whole screen through the xfwm4 compositor as a real-time shader. No daemon, no background process, no screenshots-and-overlay hack โ just an instant, flicker-free switch you can bind to a shortcut.
GNOME and KDE: you don't need to build your own
If you're on GNOME, skip writing a shader โ GNOME Shell has extensions that do exactly this, including scheduled and per-window options. If you're on KDE Plasma, KWin scripts cover the same ground at the compositor level, the same layer graytoggle uses on XFCE.
Why this needed its own tool at all
Search for how to do this on XFCE and you mostly find people improvising: lowering the wallpaper's saturation slider (which only ever touches the wallpaper, not windows or the panel), or swapping in an entirely different compositor like Compiz just to get one filter. It's the kind of thread where the accepted answer is a workaround for the workaround.
That gap is exactly why graytoggle exists โ a real compositor-level shader for XFCE, instead of one more half-solution.