Most desktop environments provide options for customizing keyboard shortcuts. In XFCE, there's settings panels for both for window manager shortcuts and application shortcuts. While the term "application shortcuts" suggests using them for launching applications, and many keyboards do have special keys for launching a music player or a calculator that I do have set up, I don't find myself using those much. I have buttons on my panel for applications that I launch often; if I'm going to be clicking away into a new application, I don't find clicking on the panel to be an additional inconvenience.
On the other hand, "application shortcuts" can be used for launching arbitrary scripts, including ones don't involve switching contexts.
Keys to use
Many keyboards have extra keys intended for global commands labeled with various symbols. If you have them, you can be creative about what you want them to mean and even combine them with modifiers (Shift, Ctrl, etc.) to get more inputs. On the other hand, if you have a more traditional keyboard layout (which is likely the case on a laptop), your choices are more limited. To avoid confusion, it's generally best to use the Windows key (usually called the Super key in Linux) for global shortcuts as it is not usually used for anything else.
The most obvious action you might want a shortcut for is volume control (and my focus the last time I wrote about keyboard shortcuts). There are dedicated keys for it on many keyboards. Of course, if you don't have dedicated keys on your keyboard, combinations involving the Super key can be used.
Here's a few PulseAudio commands you might want shortcuts for:
# Toggle mute pactl set-sink-mute 0 toggle # Volume up pactl -- set-sink-volume "0" "+2dB" # Volume down pactl -- set-sink-volume "0" "-2dB"
xfce4-screenshooter can be called to take
a screenshot of the current window with the
-w option. Take a look at
that page to see what other options you might find useful, including
specifying a directory to save the screenshoot to so the save dialog
doesn't interrupt whatever you were taking a screenshot of.
xkill detaches the next window you click on from the X
server, which kills most applications. Often killing an application is
something you want to do urgently or because it is making everything
else run very slowly, so taking the time to open a terminal to type in
xkill may not be a good option.
Information on windows
zenity provides an easy way to provide GUI interactivity
from a shell script run without a terminal to view its output on. For
example, this simple script bound to a global shortcut will show a
dialog box when that shortcut is pressed showing the PID of the process
corresponding to the current window:
1 2 3
#!/bin/sh zenity --info \ --text "$(xdotool getactivewindow getwindowpid)"
- Even though this is a shell one-liner, it can't be input into the
XFCE application shortcuts directly as the
$()operator will not be evaluated as it would in an actual shell.
- The XFCE application shortcuts may need the full path to the executable.
~in the path didn't work for me; it had to be the actual full path.
While the window manager settings let you set keyboard controls for many things, there may be some use for more complicated scripts. For instance this script toggles window decorations for the current window.
Or, similar in code to above, you could limit the CPU usage of the current window's process to 10%:
1 2 3 4
#!/bin/sh PID="$(xdotool getactivewindow getwindowpid)" # Run in detached screen to make it easier to stop this later. screen -d -m -S "cpulimit-$PID" cpulimit -p "$PID" -l 10
Locking the screen
As it's something I do a lot, it's useful to be able to quickly lock the screen. Super+L is a good shortcut for this as it matches the Windows behavior.
Depending on your setup, exactly how to lock the screen may differ.
xscreensaver-command -lock both work on my system.
Open application menu
To open the applications menu, run
xfdesktop --menu (at the cursor)
xfce4-popup-applicationsmenu (in the panel). This is equivalent to
the binding of Super or Ctrl+Esc on
The Wikipedia article on the Windows key lists all of the shortcuts in different versions of Windows, which may include some interesting ideas. What else might you want a global shortcut key for?