Aug 132013

If you do a lot of typing it could be useful to have a program that can easily manage your custom shortcuts, create and test them.

For all these things you can use the program autokey.

AutoKey is a desktop automation utility for Linux and X11. It allows you to manage collection of scripts and phrases, and assign abbreviations and hotkeys to these. This allows you to execute a script or insert text on demand in whatever program you are using.

AutoKey features a subset of the capabilities of the popular Windows-based AutoHotkey, but is not intended as a full replacement. For a Linux-based implementation of AutoHotkey, see IronAHK. AutoKey’s GUI features a number of concepts and features inspired by the Windows program PhraseExpress.

Features of AutoKey include:

  • Python scripting engine allows you to automate virtually any task that can be accomplished via the keyboard and/or mouse
  • Built-in code editor with autocomplete and calltips
  • Scripts are plain Python files that can be edited in any text editor
  • Similarly, phrases are stored as plain text files
  • Create collections of phrases/scripts in folders, and assign a hotkey or abbreviation to the folder to display a popup menu
  • Regular expressions can be used to filter windows by their title or class, to exclude hotkeys/abbreviations from triggering in certain applications
  • Scripts, phrases and folders can be attached to the notification icon menu, allowing you to select them without assigning a hotkey or abbreviation


On Ubuntu there are 2 packages on the main repository: autokey-gtk and autokey-qt, so depending on your Desktop Environment you can choose which frontend install, I use XFCE so I’ve installed the GTK version with the command:

sudo apt-get install autokey-gtk

Basic Usage

When a trigger previously defined is detected by Autokey, it can do three different actions:

1) A script is activated
2) Some text is inserted at the cursor position
3) A pop-up menu is displayed allowing a script or phrase to be activated by selecting it.

Let’s do an example with the trigegr defined by default.

Start autokey from the applications menu (usually it’s located under Accessories -> AutoKey) or just type in a terminal


Now open a text editor, such as gedit.
We can activate the popup menu of hotkey with the default keys <ctrl> + <F7>, you should see something like this:


You can see the popup windows where you can click on:

1- Addresses
2- First phrase
3- Second phrase
4- Third phrase

Clicking on 1- Addresses you’ll have the text associated with this hotkey printed in gedit:


The same result could be achieved typing the shortcut associated with this text, in this case adr.

Customise shortcut Keys in AutoKey

Probably you have noticed that now you have a small A in your system-tray, clicking with the left mouse button will bring up the configuration window of autokey:


From this image you can see that using the keys <ctrl> + <F7>, will bring up the “My Phrases” submenu.

From here you can easily add and change the shortcut keys and the result that they will trigger.


This is just a small introduction to the world of autokey, the possibility with this software are many and interesting.
You can set up the same hotkeys for different Desktop Environments, or you can use, or write, complex python scripts that once triggered do a lot of things for you.


Autokey: Desktop automation utility for Linux
How to Customize Shortcut Keys for Any Linux Application

Popular Posts:

Flattr this!

  2 Responses to “Automate your common tasks on Linux with AutoKey”

  1. Nice writeup apart from “For a Linux-based implementation of AutoHotkey, see IronAHK”
    dont make me laugh – it never really got off the ground – and for the vast majority doesn’t even work.

  2. Nice tool.
    Also dont forget about ‘xmacro’ for desktop and ‘expect’ for the commandline.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>