Ich nutze gerne Tastenkombinationen. Sie sind ein Luxus: Zwei oder drei Tasten gleichzeitig drücken, und schon passiert etwas Nützliches auf meinem Computer. Und die Finger können, anders als bei Nutzung der Maus, sogar auf der Tastatur liegen bleiben.
Viele Anwendungen stellen hilfreiche Tastenkombinationen bereit oder lassen diese flexibel einrichten. Emacs verwöhnt mich besonders. In diesem Artikel geht es aber nicht um Tastenkombinationen innerhalb einer Anwendung, sondern um solche auf Ebene der Desktop-Umgebung, also beispielsweise zum Starten von oder Wechsel zu Anwendungen. Ich beschreibe das System, das ich seit Jahren nutze, und hoffe, dass es für die eine oder den anderen inspirierend ist.
Ein bisschen Systematik
Die Tasten Strg und Alt werden in einzelnen Anwendungen für Tastenkombinationen genutzt. Für die Ebene der Desktop-Umgebung nutze ich die Super-Taste (auch als „Windows-Taste“ bekannt).
Super + Buchstabe: Wenn ich die Super-Taste und einen Buchstaben drücke, wird eine bestimmte Anwendung in den Vordergrund geholt beziehungsweise gestartet, falls sie noch nicht läuft. Mein Gedanke ist dabei einfach: „Jetzt möchte ich E-Mails lesen, also tippe ich Super + m.“
Super + Shift + Buchstabe: Die Kombination aus Super, Shift und einem Buchstaben ist für „Spezielles“ da, z. B. um einen bestimmten Text einzufügen oder Bluetooth mit einem bestimmten Gerät zu verbinden.
Super + Sonderzeichen: Hier nutze ich die Einstellungen der Fensterverwaltung. Z. B. maximiert Super + Leertaste das aktive Fenster, Super + Komma minimiert es und so weiter.
Super (+ Shift) + Zahl: Diese Tastenkombinationen gelten für Arbeitsflächen. Auch sie sind in den Einstellungen der Fensterverwaltung definiert. Super + 2 wechselt zur zweiten Arbeitsfläche. Super + Shift + 1 verschiebt das aktive Fenster auf die erste Arbeitsfläche.
Im Folgenden geht es um Tastenkombinationen, die nicht die Fensterverwaltung betreffen.
Der Kern: Ein einfaches Bash-Skript
Die verbreiteten Desktop-Umgebungen erlauben die Definition von Tastenkombinationen. In den Einstellungen kannst Du direkt die Befehle eintragen, die beim Tippen verschiedener Tastenkombinationen ausgeführt werden soll. Bei Änderungen, beim Übertragen dieser Einstellungen auf einen anderen Rechner oder wenn mehrere Befehle hintereinander ausgeführt werden sollen, ist das etwas unpraktisch. Darum sammle ich die Befehle in einem Skript; in den Einstellungen der Desktop-Umgebung trage ich bei allen gewünschten Tastenkombinationen dieses Skript mit verschiedenen Parametern ein.
Bei all diesen definierten Tastenkombinationen wird also das gleiche Skript aufgerufen und diesem jeweils spezifisch ein Buchstabe oder eine Zeichenkette übergeben. Die Struktur des Bash-Skripts sieht so aus:
#!/bin/bash
if [ "$1" == "a" ]; then
...
elif [ "$1" == "b" ]; then
...
elif [ "$1" == "c" ]; then
...
fi
exit
$1 steht für den ersten (und einzigen) übergebenen Parameter. Wenn ich Super + a tippe, wird das Skript aufgerufen und der Parameter „a“ übergeben. Dadurch wird ausgeführt, was unter der Zeile mit dem „a“ und vor der Zeile mit dem „b“ steht.
Anwendungen in den Vordergrund holen oder starten
Wie oben beschrieben, wird durch drücken von Super + Buchstabe eine Anwendung in den Vordergrund geholt oder gestartet, falls sie noch nicht läuft. So sieht das innerhalb des Bash-Skripts aus:
elif [ "$1" == "m" ]; then
if ! wmctrl -x -a "Mail.Thunderbird"; then thunderbird &
fi
Durch drücken von Super + m wird wmctrl aufgerufen. Dieses Programm muss also installiert sein. wmctrl versucht, das angegebene Fenster in den Vordergrund zu holen und ihm den Fokus zu geben (dafür steht -a). Wenn das nicht klappt, weil Thunderbird noch nicht läuft, dann wird „thunderbird“ aufgerufen.
Doch warum steht dort „Mail.Thunderbird“? Das -x bedeutet, dass die übergebene Fenster-Bezeichnung der WM_CLASS-Name ist. (Dieser macht die Identifikation des Fensters einfacher als die Verwendung des Titels des Fensters.) Um herauszufinden, welchen Klassennamen das Fenster einer Anwendung erhält, starte die Anwendung und rufe im Terminal wmctrl -lx auf. Der Eintrag mit dem Punkt in der Mitte, ist der Klassenname.
Hier ein paar weitere Beispiele:
elif [ "$1" == "c" ]; then
if ! wmctrl -x -a "libreoffice.libreoffice-calc"; then localc &
fi
elif [ "$1" == "e" ]; then
if ! wmctrl -x -a "emacs.Emacs"; then emacs --maximized &
fi
elif [ "$1" == "f" ]; then
if ! wmctrl -x -a "Navigator.LibreWolf"; then librewolf &
fi
elif [ "$1" == "k" ]; then
if ! wmctrl -x -a "keepassxc.Keepassxc"; then keepassxc &
fi
elif [ "$1" == "w" ]; then
if ! wmctrl -x -a "libreoffice.libreoffice-writer"; then lowriter &
fi
Nach diesem Muster kann ich alle Anwendungen, die ich regelmäßig nutze, über jeweils eine Tastenkombination aufrufen.
Nun stelle ich noch ein paar speziellere Fälle, die nicht ganz so einfach wie die oberen Beispiele sind, vor.
Wenn ich statt des Haupt-Thunderbird-Fensters das Fenster, in dem ich gerade eine E-Mail schreibe, sehen möchte, tippe ich Super + Shift + m:
elif [ "$1" == "M" ]; then
if ! wmctrl -x -a "Msgcompose.thunderbird-default"; then
if ! wmctrl -x -a "Mail.Thunderbird"; then thunderbird &
fi
fi
Um ein über den ganzen Bildschirm maximiertes Terminal zu erhalten, tippe ich Super + t. Zur Identifikation des Fensters nutze ich einen Titel statt des WM_CLASS-Namens, um dieses Fenster unter potenziell mehreren Terminal-Fenstern referenzieren zu können. Manchmal möchte ich lieber ein Terminal in einem kleinen Fenster öffnen; Super + z öffnet immer ein neues Terminal.
elif [ "$1" == "t" ]; then
if ! wmctrl -F -a "fullterminal"; then
xfce4-terminal --title=fullterminal &
sleep 1
wmctrl -F -r fullterminal -b add,maximized_vert,maximized_horz
fi
elif [ "$1" == "z" ]; then
xfce4-terminal --geometry 71x22+640+300 &
Die Nextcloud-Anwendung lade ich von nextcloud.com als AppImage herunter. Der Dateiname enthält die Versionsnummer. Um das Umbenennen oder das Ändern des Bash-Skripts bei jedem Update zu sparen, ruft Super + n das alphabetisch zuletzt gelistete AppImage, das mit „Nextcloud“ beginnt aus einem bestimmten Verzeichnis auf:
elif [ "$1" == "n" ]; then
nohup `ls /home/sven/.sven_bin/Nextcloud* -1r | head -1` &
Jenseits von Anwendungsfenstern
Mit Super + Shift + b verbindet sich mein Laptop mit dem Bluetooth-Adapter meiner Stereoanlage. Die Kennung des Geräts muss natürlich angepasst werden:
elif [ "$1" == "B" ]; then
bluetoothctl connect A1:B2:C3:D4:E5:F6
sleep 2
pactl set-default-sink bluez_sink.A1_B2_C3_D4_E5_F6.a2dp_sink
Mit den Pfeiltasten steuere ich meinen Audioplayer:
elif [ "$1" == "down" ]; then
quodlibet --play-pause
elif [ "$1" == "left" ]; then
quodlibet --previous
elif [ "$1" == "right" ]; then
quodlibet --next
Im Internet möchte ich häufig meine E-Mail-Adresse in Formularfelder eintragen, manchmal auch in Dokumente oder in das Feld „Benutzername“ in meinem Passwortmanager. Super + Shift + q „schreibt“ meine E-Mail-Adresse, unabhängig davon, welche Anwendung gerade den Fokus hat. (Ich nutze den Clipboard-Manager copyq; ohne geht es sicher auch, ich habe es aber nicht hinbekommen.)
elif [ "$1" == "Q" ]; then
echo -n "mail@meinedomain.de" | xclip -i -selection c
copyq paste
(Auch meine IBAN tippte ich häufig. Jetzt macht das Super + Shift + i für mich.)
Nach dem Schreiben dieses Artikels ist es Zeit, meinen Laptop herunterzufahren. Dabei hilft Super + Esc. Nach dem Aufruf des Abmelden-Dialogs der von mir genutzten Desktopumgebung (xfce) „tippt“ das Programm xdotool zweimal „Tab“, wodurch im Abmelden-Dialog „Herunterfahren“ fokussiert wird. Dann muss ich zum Bestätigen nur noch Enter drücken.
elif [ "$1" == "esc" ]; then
xfce4-session-logout &
sleep .6
xdotool key "Tab" "Tab" &
Ich freue mich über eure Anregungen zur Verwendung von Tastenkombinationen in den Kommentaren!
Quellen:
Haupt-Bild: Creative Commons Zero license (https://openclipart.org, modifiziert)


Ein schöner Artikel Sven, ich würde nur zwei Tipps geben für Dein bash Skript.
nohup $( ls ... -1r | head -1 ) &. Da Deine Form in den nächsten Bash Versionen obsolete`ls ... -1r`ist; Ich meine die Gänsefüße nicht den ls Befehl.Bsp:
Sonst eine feine Sache, die du Dir da zusammen gebastelt hast. Ich werde damit mal ein wenig herum Probieren, ob ich mir auch dadurch etwas vereinfachen könnte.
Danke, Claudia, für die guten Hinweise!
Obwohl Shortcuts (Tastaturbelegungen) grundsätzlich gut, begrüßenswert und sinnvoll sind, empfinde ich Kombinationen von 3 Tasten als recht umständlich, überflüssig und gefährlich. Wenn man die Tasten versehentlich in falscher Reihenfolge drückt, werden ggf. völlig andere Aktionen ausgelöst. Gibt es Wege sicherstellen, dass die erstellten Shortcuts nicht mit anderen Anwendungen kollidieren und wer hat die Hoheit, das zuletzt geladene Programm? Wieso werden nicht einfach F1-F12 in Kombination mit Shift/String (bz.w Control) genutzt? Zum Einfügen von Textschnipsel bevorzuge ich Clipboard-Manager.
Meine Lösung ist dafür eine programmierbare Gaming-Tastatur und ein Streamdeck - damit liegen auch komplexe Shortcut-Ketten auf einer einzigen Taste, ohne dass ich mir das alles merken muss. Funktioniert seit Jahren gut bei mir und würde ich jedem empfehlen, der Abläufe automatisieren möchte.
Hallo Herbert, das klingt nach einem guten Tipp für Fortgeschrittene. Ich verwende in Laptops eingebaute Tastaturen und suchte eine Lösung dafür...
Hallo Stefan, ich habe keine Schwierigkeiten mit Konflikten, weil ich in den xfce-Einstellungen alle vorgegebenen Tastenkombinationen mit der Super-Taste entferne, sodass da keine Konflikte auftreten. (Das hätte ich vermutlich im Artikel erwähnen sollen.) Mir ist auch nicht bekannt, dass irgendwelche Anwendungen die Super-Taste verwenden, ist aber natürlich möglich. Die Hoheit hat - vermute ich - die aktive Anwendung und wenn die mit der Tastenkombination nichts anfängt, dann die Desktop-Umgebung. Ich verwende Shift/Strg in Anwendungen und z.B. die Kombination mit F1-F12 in Emacs. Darum verwende ich kein Strg auf der Ebene der Desktop-Umgebung. Super+Irgendwas wird also immer an die Desktop-Umgebung geleitet, weil keine von mir genutzte Anwendung etwas damit anfängt. Die F1-F12-Tasten finde ich nicht so einprägsam; Super-m für Mail, Super-k für Keepassxc u.s.w. kann ich mir besser merken.
Interssanter Ansatz. Gefällt mir. Du schreibst, dass du unter xfce unterwegs bist (wie ich auch), trotzdem definierst du eigene Tastenkürzel für deren Handhabung. xfce hat das doch schon gut gelöst? ctrl-F1, ctrl-F2, ect. für den jeweiligen Desktop. ctrl-alt-Keypad_1, ctrl-alt-keypad_2, etc. um die aktive Anwendung auf des desbetreffende Fenster zu verschieben. Was hat dich bewogen, diese nicht zu benützen?
Hallo Klaus, ja, sicherlich sind auch die Voreinstellungen von xfce praktikabel. Ich möchte gerne die klare Trennung zwischen Ctrl/Alt für Anwendungen und Super für die Ebene der Desktop-Umgebung. Strg/Ctrl+F1 nutze ich z.B. in Emacs. Wenn keine Anwendung die Super-Taste nutzt, kann ich mir sicher sein, dass Tastenkombinationen mit Super immer auf Ebene der Desktop-Umgebung funktionieren, egal welche Anwendung gerade aktiv ist.
Vielen Dank für diesen Artikel. Ich habe das übernommen und bin sehr erfreut, dass ich jetzt auch die Fenster in den Vordergrung befördern kann mit meinen Tastenkombinationen. Das hat mir wieder einmal geholfen. Dankeschön.
Diese Methode geht nur mit dem bereits sterbenden X11. Beim moderneren Wayland funktioniert es so leider nicht und es gibt die entsprechenden Tools auch noch nicht als Ersatz.