Toggle KWin compositing on and off easily from your Desktop

KWin’s Desktop Effects work well and I usually have them enabled, only disabling compositing temporarily while I play a game (I’m a sucker for old arcade games running in GMAMEUI).

One way to enable/disable compositing in KWin 4.7.0 is via System Settings > Desktop Effects > tick/untick ‘Enable desktop effects at startup’ > Apply. This change only takes effect when you restart KDE. A way to toggle compositing on/off is to use a keyboard shortcut. The default keyboard shortcut for this in KWin is Alt-Shift-F12, but KDE on my machine tells me that Qt does not like the use of the Alt key in this shortcut, so I used System Settings > Desktop Effects to change the shortcut to Ctrl+Shift+U, which does toggle compositing on/off.

A toggle icon on the Desktop is another way of achieving the same thing, and is handy if you are using your mouse at the time. Now, a Plasma widget called Toggle-Compositing exists and is a nice way of enabling/disabling compositing at the click of a mouse. However, it has to be compiled — which some users may feel reluctant to do — and it requires the user to know the $KDEDIR, and I’ll wager some users don’t.

Below I describe one way of adding an icon to your Desktop that you can use to toggle compositing in KWin and that does not require any compiling, so it should be more straightforward to implement by a newcomer to KDE.

Use your preferred text editor to create the following Desktop Configuration File named toggle_compositing_in_KWin in your Desktop directory:

[Desktop Entry]
Comment[en_GB]=toggles compositing in KWin
Comment=toggles compositing in KWin
Exec=sh /home/fitzcarraldo/
GenericName[en_GB]=toggles compositing in KWin
GenericName=toggles compositing in KWin

(Replace “fitzcarraldo” with your user name, of course.)

Then create a text file ~/ containing the following:

echo -n "Current compositing state: "
qdbus org.kde.kwin /KWin compositingActive
echo -n "Changing compositing state..."
qdbus org.kde.kwin /KWin toggleCompositing
echo -n "Current compositing state: "
qdbus org.kde.kwin /KWin compositingActive
echo -n "All done. Press ENTER to close window: "
read ENTRY

Finally, open a Konsole window and enter the following command under your own user account:

chmod +x

And there you have it. You’ll have an icon on your Desktop that looks something like the following:

KWin icon

KWin icon

All you need to do is double-click (or single-click, if you have configured KDE that way) on the icon toggle_compositing_in_KWin on your Desktop and a window will pop-up telling you:

Current compositing state: true
Changing compositing state...
Current compositing state: false
All done. Press ENTER to close window:

To re-enable compositing, just double-click the icon again. And so on.

And now the final touch…

Actually, it’s not necessary to include the last two lines:

echo -n "All done. Press ENTER to close window: "
read ENTRY

in the Bash script above; I just put them in to display the current compositing state. If you omit those two lines then toggling compositing on and off simply becomes a double-click on the icon on the Desktop (or a single click if you have configured KDE that way). In fact, if you also change Terminal=true to Terminal=false and StartupNotify=true to StartupNotify=false in the Desktop Configuration File, then you won’t even see a Konsole window pop-up briefly: compositing will just be toggled on and off seamlessly, so to speak. Just like the keyboard shortcut, only easier to remember!