Ubuntu – Is there a way to associate keyboard shortcuts to bring a window to front

Ubuntu

I am using exactly 3 programs:
– a browser
– a terminal
– a code editor

I keep all in fullscreen windows.

What I need is to be able to bring any one of them up with a simple keyboard shortcut, like Ctrl+Alt+B for browser, etc.

Alt-Tab sucks because I have to stop and see where the selector is.

Using 3 workspaces is better but still not ideal – I need to think about where I am and where I need to go. E.g. My browser is on top of my terminal and my code editor is to the right of the terminal. So to move from browser to terminal I use Ctrl+Alt+Down, but to move from code editor to terminal I have to do Ctrl+Alt+Left. Instead I should just do Ctrl+Alt+T for terminal, for example.

Thanks!

Best Answer

I don't use Unity so this is tested on Cinnamon but the same trick should work in all desktop environments. You can use a tool like xdotool or wmactl that allows you to script your interactions with the X server.

I prefer wmctl, but you can install both with

sudo apt-get install xdotool wmctl 

First run wmctl -i to see what the names of your open windows are:

$ wmctrl -l
0x02200007 -1 oregano Desktop
0x0380007f  1 oregano Ubuntu - Is there a way to associate keyboard shortcuts to bring a window to front? - Super User - Mozilla Firefox
0x01c000a3  1 oregano emacs@oregano
0x03c00006  1 oregano Terminal

If you scroll right, you'll see that the second is my firefox instance showing this page. So, you now activate each of your three windows by name:

$ wmctrl -a terminal 
$ wmctrl -a firefox
$ wmctrl -a emacs

You can assign shortcuts to each of these commands using your desktop environment's GUI or via a more generic tool such as xbindkeys.

Related Question