A command for showing desktop [duplicate]

wmctrl -s can be used to switch between virtual desktops. Is there a command that shows the desktop? that is a command that will switch between minimizing all windows and restoring them?


Solution 1:

To show the desktop the command:

wmctrl -k on

To turn it off use

wmctrl -k off

Solution 2:

This is an adaptation of virtualxtc's answer with support for toggling.

#!/bin/bash

current_mode="$(wmctrl -m | grep 'showing the desktop')"

if [[ "${current_mode##* }" == ON ]]; then
    wmctrl -k off
else
    wmctrl -k on
fi

To use, save the above into a file, then mark it executable.


Explanation of above code

#!/bin/bash

This is a shebang comment.

current_mode="$(wmctrl -m | grep 'showing the desktop')"

This captures the output of wmctrl -m piped through grep 'showing the desktop' into the variable $current_mode.

if [[ "${current_mode##* }" == ON ]]; then
    wmctrl -k off
else
    wmctrl -k on
fi

An if...else... statement in Bash. ${current_mode##* } returns $current_mode with the longest match of anything up until a space deleted from the front of the string. If this returns ON, turns desktop off; else turns desktop on.