I missed having a button/shortcut to show the desktop, mostly to take a look at Conky’s output.
Thanks to i3’s IPC interface, it is simple to make a script that finds the largest workspace in use. Then we can issue the command to i3 to switch to the succeeding workspace, which will be empty.
#!/usr/bin/env python3
import subprocess
import json
command = "i3-msg"
arguments = ['-t', 'get_workspaces']
output = subprocess.check_output([command] + arguments)
workspaces = json.loads(output.decode('utf-8'))
last_nonempty_workspace = workspaces[-1]['num']
first_empty_workspace = last_nonempty_workspace + 1
print(first_empty_workspace)
Then, in ~/.i3/config
:
# Show desktop (go to first unused workspace)
bindsym $mod+c exec --no-startup-id i3-msg workspace $(~/scripts/i3-empty-workspace.py)
(The --no-startup-id
parameter avoids having the cursor displayed as spinning clock.)