Keyboard shortcuts and focus

Posted on 13 February 2013

I like having custom keyboard shortcuts to launch applications (mainly terminals, emacs, and Google Chrome.) For emacsclient and the gnome-terminal, it makes sense to open a new window each time the keyboard shortcut is keyed. However, I find it annoying when a new Chrome window opens each time I key the shortcut. Often, I really would rather switch to the existing Chrome window and open a new tab. With multiple desktops (especially in Gnome 3) I find that I end up with Chrome windows on all of my desktops – quite annoying!

This script deals with this problem:

#!/usr/bin/bash

test=`wmctrl -l | grep "$1" `
if [ -z "$test" ] ; then
    $2
fi
wmctrl -R "$1"

I have named this run_or_focus as it checks to see if the application has any open windows; if it does not, it will execute the application, and if it does, the window will be moved to the current desktop and be given focus. The script takes two arguments, the first being a search string which appears in all window titles belonging to the application windows. The second is the application name.

The keyboard shortcut command for Google Chrome is then

run_or_focus "Google Chrome" google-chrome

This works like a treat.