Tastenkombinationen in der Desktop-Umgebung

  Sven   Lesezeit: 6 Minuten  🗪 10 Kommentare Auf Mastodon ansehen

Der Artikel beschreibt, wie ich mit Tastenkombinationen z. B. Anwendungen in den Vordergrund hole bzw. starte. Grundlage sind ein sehr einfaches Bash-Skript und die Einstellungsmöglichkeiten der Desktop-Umgebung.

tastenkombinationen in der desktop-umgebung

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)

Tags

Tastatur, Konfiguration, Desktop-Umgebung

Claudia
Geschrieben von Claudia am 7. August 2026 um 10:20

Ein schöner Artikel Sven, ich würde nur zwei Tipps geben für Dein bash Skript.

  1. Wenn man einen Befehl ausführen möchte sollte man eher dies nutzen 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.
  2. Statt so viele IF-Statements warum nicht einfach ein Switch Case (Übersichtlicher).

Bsp:

case "${1}" in
    down)  quodlibet --play-pause ;;
    left)  quodlibet --previous ;;
    right) quodlibet --next ;;
    esc) 
        xfce4-session-logout &
        sleep .6
        xdotool key "Tab" "Tab" &
   ;;
   ja|Ja|jA|JA)  echo "So kann man auch verschiedene Eingaben abfangen (Tippfehler)" ;;
   *)  echo "Wenn nichts zutrifft, dann landet man hier." ;;
esac

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.

Sven
Geschrieben von Sven am 7. August 2026 um 20:03

Danke, Claudia, für die guten Hinweise!

Stefan
Geschrieben von Stefan am 7. August 2026 um 11:33

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.

Herbert Hertramph
Geschrieben von Herbert Hertramph am 7. August 2026 um 17:18

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.

Sven
Geschrieben von Sven am 7. August 2026 um 20:13

Hallo Herbert, das klingt nach einem guten Tipp für Fortgeschrittene. Ich verwende in Laptops eingebaute Tastaturen und suchte eine Lösung dafür...

Sven
Geschrieben von Sven am 7. August 2026 um 20:10

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.

Klaus
Geschrieben von Klaus am 7. August 2026 um 12:45

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?

Sven
Geschrieben von Sven am 7. August 2026 um 20:17

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.

Pol
Geschrieben von Pol am 12. August 2026 um 07:37

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.

Karl
Geschrieben von Karl am 22. August 2026 um 17:26

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.