Autokey-Makros für Ubuntu/Mint

Multifunktionales Autokey

Das Tool Autokey ist – ähnlich seinem Windows-Pendant Autohotkey – ein typisches interaktives Werkzeug für den Linux-Desktop. Bastler finden hier eine ergiebige Arena für globale Textbausteine und Hotkeys.

Das englischsprachige Autokey ist ein vielseitiges Tool für einfache Automatismen bis hin zu raffinierten Scripts. Nützliche Funktionen wie globale Textbausteine, die in der Textverarbeitung genau so gelten wie im Terminal oder einem Mail-Programm, sind ohne Programmierkenntnisse mühelos zu realisieren. Ebenso einfach ist es, Programme oder Shell-Scripts via Autokey mit globalen Hotkeys zu belegen. Wer Programmierkenntnisse mitbringt, im Optimalfall in Python, kommt mit dem Tool noch erheblich weiter.

Autokey unter Ubuntu: Die Integration des Tools ist hier aufgrund des Panel-Indikators optimal (Symbol "A"). Autokey funktioniert aber auch unter anderen Distributionen.
Autokey unter Ubuntu: Die Integration des Tools ist hier aufgrund des Panel-Indikators optimal (Symbol „A“). Autokey funktioniert aber auch unter anderen Distributionen.

Autokey installieren und starten

Autokey gehört bei vielen Distributionen zu den Standardpaketen und lässt sich daher über den Paketmanager installieren, so etwa in Ubuntu oder Linux Mint über das Software-Center oder auch auf der Kommandozeile:

sudo apt-get install autokey-gtk

Die Autokey-Variante für den KDE-Desktop heißt autokey-qt. Falls Ihre Distribution Autokey nicht anbietet, erreichen Sie das Programm über das Entwickler-PPA https://launchpad.net/~cdekter/+archive/ppa.

Das Tool finden Sie nach der Installation im Ubuntu-Dash oder im Startmenü. Nach dem Aufruf erscheint der Konfigurationsdialog, außerdem nistet sich der Autokey-Indikator dauerhaft im Ubuntu-Hauptpanel mit seinem „A“-Symbol ein. Dieser Indikator bringt Sie jederzeit zum Konfigurationsdialog („Show Main Window“) und listet jene Makros auf, die in der Konfiguration mit der Option „Show in notification icon menu“ eingerichtet wurden. Sorgen Sie zunächst dafür, dass Autokey automatisch mit Linux startet: Die Option lautet „Edit -> Preferences -> General -> Automatically start AutoKey at login“.

Unter Ubuntu ist Autokey durch den Panel-Indikator am besten integriert. In Distributionen wie Linux Mint muss der Konfigurationsdialog über das Startmenü geladen werden. Das ist für die Phase der Makro-Einrichtung etwas umständlicher, funktional läuft Autokey aber auch dort einwandfrei.

Ein genereller Tipp: Wenn Autokey nach diversen Änderungen von Hotkeys und Eingabekürzel nicht korrekt arbeitet, ist Beenden und Neustart immer eine gute Antwort. Dann liest das Tool seine Vorgaben unter ~/.config/autokey/data neu ein, was gelegentliche Konflikte zuverlässig löst. Dieser Hinweis gilt ausschließlich für die Einrichtungsphase oder für größere Aufräumarbeiten.

Typischer statischer Textbaustein mit empfohlenen Einstellungen: Aus der Eingabe „mu“ und dem definierten Trigger (etwa Tab-Taste) wird hier die volle Adresse.
Typischer statischer Textbaustein mit empfohlenen Einstellungen: Aus der Eingabe „mu“ und dem definierten Trigger (etwa Tab-Taste) wird hier die volle Adresse.

 

„Phrases“: Textbausteine einfügen

Im Konfigurationsfenster finden Sie im linken Bereich unter „My Phrases“ einige vordefinierte Textbausteine. Um Ihren ersten eigenen Textbaustein anzulegen, verwenden Sie das Menü „New -> Phrase“. Vergeben Sie einen Namen wie etwa „Adresse“, und bestätigen Sie mit „OK“. Der Name hat rein organisatorische Funktion und keinen Einfluss auf die Kürzelvergabe. Im Editorfenster rechts oben steht der Standard „Enter phrase contents“, den Sie nun durch den tatsächlichen Text ersetzen – etwa mit Ihrer Adresse. Der Text kann nur ein Wort oder auch mehrere Absätze umfassen.

Die entscheidende Konfiguration findet nun im Bereich unter dem Editorfenster statt: Typischerweise werden Sie einen Textbaustein beim Schreiben durch ein knappes Tastenkürzel auslösen wollen – etwa „adr“ für die Adresse. Dazu klicken Sie neben „Abbreviations“ auf „Set“. Im Unterdialog „Set Abbreviations“ wählen Sie „Hinzufügen“ und geben „adr“ ein. Quittieren Sie solche Kürzel immer mit der Eingabetaste – es gibt keine grafische Schaltfläche, um die Kürzeleingabe zu bestätigen. Rechts daneben definieren Sie den Auslöser („Trigger on:“). Mit „All non word“ löst jedes Sonderzeichen wie Leerzeichen, Eingabetaste, Tabulator, Punkt oder Bindestrich den Textbaustein aus. Die Eingaben „adr “ (mit nachfolgendem Leerzeichen) oder auch „adr.“ würden demnach die Adresse einfügen.

Wenn Sie versehentliches Auslösen ausschließen möchten, verwenden Sie besser nur die Tabulatortaste („Tab“) als Trigger. Umgekehrt ist es möglich, Textautomatismen ganz ohne signalisierendes Sonderzeichen auszulösen. Wenn Sie die Optionen „Trigger when typed as part of a word“ und „Trigger immediately…“ aktivieren, löst die Eingabe des betreffenden Kürzels in jedem Kontext den Text aus. Dies ist nur mit eindeutigen Kürzeln praktikabel, die bei normaler Texteingabe nie auftreten.

Weitere wichtige Optionen dieses Dialogs sind „Remove typed abbreviation“ und  „Omit trigger character“. Beides sollten Sie immer aktivieren, damit sowohl das Eingabekürzel (etwa „adr“) als auch das Auslöserzeichen (etwa der Tabulator) gelöscht wird. „Ignore case…“ löst den Textbaustein auch dann aus, wenn Sie bei der Kürzeleingabe die Groß- und Kleinschreibung missachten.

Ist alles definiert, klicken Sie auf „OK“ und im Hauptdialog auf „Save“. Neue Kürzel sind nach „Save“ sofort aktiv. Wenn Sie das Kürzel in einem beliebigen Programm schreiben und das Trigger-Zeichen folgen lassen, erscheint Ihr Textbaustein.

Dynamische Textbausteine: Die Scriptfähigkeit des Tools eröffnet neben konstantem Text auch dynamische Texteingaben. Dafür muss man nicht zwingend einen Python-Kurs besuchen, wie das Beispiel in der nebenstehenden Abbildung zeigt: Das Script legt Datumsinformationen in Variablen ab, die danach mit „Keyboard.Send_Keys“ in das aktuelle Programm geschrieben werden. Dass dafür neun Code-Zeilen notwendig sind, ist nur der gewünschten Formatierung geschuldet. Beachten Sie, dass Sie Script-Automatismen als Script anlegen müssen – also nicht als „Phrase“, sondern über „Neu -> Script“.

Dynamischer Textbaustein: Mit einigen Script-Zeilen erstellen Sie globale Funktionen, wie sie sonst nur die Feldfunktionen von Textverarbeitungen beherrschen.
Dynamischer Textbaustein: Mit einigen Script-Zeilen erstellen Sie globale Funktionen, wie sie sonst nur die Feldfunktionen von Textverarbeitungen beherrschen.

 

Programme per Autokey-Script starten

Autokey eignet sich auch als globaler Programmstarter. Auch hier benötigen Sie das Menü „New -> Script“. Nach der Namensvergabe überschreiben Sie im Editorfenster die Vorgabe „# Enter script code“ durch den gewünschten Code. Ein einfacher Programmaufruf sieht so aus:

system.exec_command("firefox",True)

Besser ist meist diese Variante:

import subprocess

subprocess.Popen(["firefox"])

Wenn Firefox bereits läuft, wird hier nur das Fenster im Vordergrund geöffnet, während die erste Variante immer eine neue Instanz des Programms startet. Anders als bei Textbausteinen werden Sie bei Programmaufrufen einen Auslöser per Tastenkombination bevorzugen. Dazu klicken Sie unterhalb des Code-Fensters neben „Hotkey:“ auf den „Set“-Button und tippen nach „Press to Set“ einfach die gewünschte Tastenkombination ein. Nach „OK“ und „Save“ im Hauptfenster ist der Hotkey scharfgeschaltet. Testen Sie vor der Vergabe des globalen Hotkeys immer vorab, ob das System diese Tastenkombination benutzt. Ist dies nämlich der Fall, dominiert im günstigsten Fall der Autokey-Automatismus, die Kollision von Hotkeys kann aber auch Systemhänger auslösen.

Alternative Menü-Darstellung

Längeren Text durch Textkürzel auszulösen, ist die effektivste fürs Schreiben, Hotkeys eignen sich insbesondere für Programmaufrufe. Weil man mit zahlreichen Kürzeln aber schnell an seine Kapazitätsgrenzen gelangt, kann man sich eine beliebige Auswahl seiner Autokey-Elemente auch in einem Popup-Menü anzeigen lassen und dort den gewünschten Textbaustein durch Mausklick auslösen. Das Ergebnis kann so aussehen wie in der nebenstehenden Abbildung. Wenn Sie im Autokey-Hauptdialog einen Ordner wie „My Phrases“ markieren, sehen Sie rechts die Option „Hotkey“. Mit dem Button „Set“ definieren Sie eine beliebige Taste oder eine Tastenkombination als Auslöser. Das damit gestartete Popup-Menü erscheint dort, wo der Mauszeiger aktuell steht und zeigt alle Elemente, die sich unterhalb des Ordners befinden. Sie können für jeden beliebigen Ordner Ihrer Autokey-Sammlung ein solches Hotkey-Menü anlegen und gleichzeitig alle anderen Autokey-Möglichkeiten mit Kürzeln und Hotkeys nutzen.

Einige Textbausteine als Menüangebot: Bei dieser Variante lassen Sie sich die Elemente einfach anzeigen und fügen den Text per Klick in das aktive Fenster ein.
Einige Textbausteine als Menüangebot: Bei dieser Variante lassen Sie sich die Elemente einfach anzeigen und fügen den Text per Klick in das aktive Fenster ein.

Praktische Tipps zu Autokey

Autokey kann die komplette Systemnutzung umkrempeln. Da Sie aber für jedes Phrase- oder Script-Element Kürzel und Hotkeys nutzen, ferner für jedes Ordnerobjekt Kürzel- oder Hotkey-Menüs anlegen können, ist eine logische Organisation in thematische Gruppen unerlässlich. Diese Ordnung erzielen Sie im rechten Teil der Autokey-Konfiguration durch Ordner und Unterordner. Eine bessere Struktur lässt sich jederzeit nachträglich realisieren, allerdings kann Autokey bei großen Aufräumarbeiten durch Umbenennen, Verschieben oder Löschen von Einträgen vorübergehend kapitulieren. Hier hilft praktisch immer Beenden und Neustarten. Außerdem finden Sie alle Ordner und Elemente in identischer Hierarchie auf Dateiebene unter ~/.config/autokey/data. Wenn Sie Ordner und Dateien (je einmal .txt und .json) lieber hier organisieren und danach Autokey neu starten, übernimmt Autokey die auf Dateiebene vorgefundene Organisation.

Beschränkte Debug-Möglichkeiten: Mit Textbausteinen, Programmstarter und Popup-Menüs bietet Autokey jede Menge Potential, komfortabler zu arbeiten. Aufwändige Scripts zu erstellen, bleibt hingegen Python-Kennern vorbehalten. Mit Autokey Python zu erlernen, ist keine erfolgversprechende Idee, weil das Tool keine Problembehandlung anbietet: Bei Fehlern im Code geschieht entweder gar nichts oder es erscheint die Standardmeldung „The script […] encountered an error“. Immerhin produziert der Start von Autokey im Terminal mit dem Parameter „autokey -l“ sehr viel Output, den Sie mit

autokey -l | grep -v "DEBUG"

eingrenzen sollten. Die „Debug“-Informationen helfen Ihnen nämlich bei Scriptfehlern nicht weiter und machen die Ausgabe unübersichtlich. Was mit diesem Grep-Filter übrig bleibt, sind fundamentale Ablauf-Infos und vor Hinweise auf Scriptfehler mit der genauen Zeilenangabe. Woran es dann exakt hakt, müssen Sie sich, sofern nicht offensichtlich, in Python-Tutorials erarbeiten.

Automatismen auf ein Programm begrenzen: Die Ersetzungsautomatik von Textbausteinen gilt ebenso wie jede definierte Tastenkombination global im gesamten System. Das ist an sich ein großer Vorteil, der spezialisierte Lösungen in Textverarbeitung, Mailprogramm oder Terminal klar aussticht. Trotzdem gibt es sicher speziellere Textbausteine, die nur in einem bestimmten Programm gelten sollen. Dafür hält Autokey unter „Script-Settings“ den „Window Filter“ parat: Das betreffende Programm muss gestartet und dessen Fenster sichtbar sein. Dann klicken Sie in Autokey neben „Window Filter“ auf „Set“ und anschließend auf „Detect Window Properties“. Nun klicken Sie in das Fenster der Anwendung und bestätigen wiederum in Autokey die angezeigte „Window class“ mit „OK“. Mit „Save“ speichern Sie die Änderung. Egal ob Hotkey, Textbaustein oder beides: Der Automatismus gilt jetzt nur noch innerhalb des einen angegebenen Programms.

203_5_autokey_debug
Begrenztes Debugging für Python-Scripts: Nach dem Aufruf mit Parameter „-l“ zeigt das Terminal zumindest die Zeilennummer des fehlerhaften Codes.