Gibt es eine Möglichkeit, Guake über die Kommandozeile zu steuern oder zu skripten?
- Einleitung
- Grundlagen der Steuerung von Guake
- D-Bus Schnittstelle und Beispielbefehle
- Text in Guake senden
- Guake Kommandozeilenoptionen
- Beispiel eines Bash-Skripts mit Guake D-Bus Steuerung
- Zusammenfassung
Einleitung
Guake ist ein Dropdown-Terminal, das häufig unter Linux-Systemen verwendet wird, um schnellen Zugriff auf eine Konsole zu ermöglichen.
Es ist inspiriert von der Konsole in Spielen und öffnet sich üblicherweise über eine Tastenkombination, oft F12.
Eine zentrale Frage für Nutzer, die ihre Arbeitsumgebung automatisieren möchten, ist, ob und wie sich Guake über die Kommandozeile steuern oder in Skripten ansprechen lässt.
Grundlagen der Steuerung von Guake
Guake bietet eine D-Bus-Schnittstelle (Desktop Bus), über die verschiedene Funktionen ansprechbar sind. D-Bus ist ein Interprozess-Kommunikationsmechanismus, mit dem Programme unter Linux miteinander kommunizieren können.
Durch diese Schnittstelle lässt sich Guake aus Skripten heraus steuern, indem Befehle zum Beispiel über das Tool dbus-send oder einfache D-Bus Bindings in Skriptsprachen wie Python ausgeführt werden.
D-Bus Schnittstelle und Beispielbefehle
Guake registriert sich üblicherweise unter dem D-Bus Service-Namen org.guake und bietet eine Vielzahl von Methoden, um Tabs zu öffnen, zu schließen, das Terminal ein- oder auszublenden oder Text in das Terminal zu senden.
Mit Tools wie gdbus oder dbus-send können Sie diese Methoden aufrufen.
Ein einfaches Beispiel, um Guake über die Kommandozeile ein- oder auszublenden, könnte so aussehen:
gdbus call --session --dest org.guake --object-path /org/guake/Window0 --method org.guake.Window0.toggle_windowDieser Befehl ruft die Methode toggle_window auf und bewirkt damit das Ein- oder Ausblenden des Guake-Fensters.
Weitere häufig verwendete Methoden sind zum Beispiel show_hide_window, open_new_tab oder close_tab. Um diese nutzen zu können, muss man entweder die Guake-Dokumentation zur D-Bus API konsultieren oder über d-feet (ein D-Bus-Browser) die verfügbaren Methoden inspizieren.
Text in Guake senden
Ein wichtiges Anwendungsgebiet ist, beliebige Shell-Befehle in Guake laufen zu lassen. Dazu gibt es die Methode send_text, die einen String als Befehl ins Terminal schreibt (und je nach Einstellung auch abschickt).
gdbus call --session --dest org.guake --object-path /org/guake/Window0 --method org.guake.Window0.send_text "ls -la\n"Beachten Sie, dass der Befehl mit einem Zeilenumbruch \n endet, um die Eingabe auszuführen.
Guake Kommandozeilenoptionen
Neben D-Bus bietet Guake auch einige Optionen beim Start, beispielsweise für das Setzen von Profilen oder das Starten im Hintergrund. Für die Steuerung im laufenden Betrieb sind diese Optionen jedoch weniger geeignet.
Die eigentliche Steuerung findet meist über D-Bus statt, da Guake als Daemon im Hintergrund läuft.
Beispiel eines Bash-Skripts mit Guake D-Bus Steuerung
Hier ein einfaches Beispiel, wie man Guake öffnen, einen neuen Tab erstellen und einen Befehl ausführen kann:
#!/bin/bash# Guake-Fenster öffnen oder schließengdbus call --session --dest org.guake --object-path /org/guake/Window0 --method org.guake.Window0.show_hide_window
# Neuen Tab erzeugengdbus call --session --dest org.guake --object-path /org/guake/Tabs --method org.guake.Tabs.open_new_tab 1
# Einen Befehl im aktuellen Tab ausführengdbus call --session --dest org.guake --object-path /org/guake/Window0 --method org.guake.Window0.send_text "echo Hallo Guake!\n"
gdbus call --session --dest org.guake --object-path /org/guake/Window0 --method org.guake.Window0.show_hide_window
gdbus call --session --dest org.guake --object-path /org/guake/Tabs --method org.guake.Tabs.open_new_tab 1
gdbus call --session --dest org.guake --object-path /org/guake/Window0 --method org.guake.Window0.send_text "echo Hallo Guake!\n"
Dabei kann es nötig sein, die genauen Objektpfade und Methoden für Ihre Guake-Version anzupassen, da diese sich über verschiedene Versionen ändern können.
Zusammenfassung
Guake lässt sich gut über die Kommandozeile oder eigene Skripte steuern, indem man die D-Bus Schnittstelle nutzt. Voraussetzung ist, dass Guake bereits läuft und seine D-Bus-Interface verfügbar ist. Mit Werkzeugen wie gdbus oder Programmiersprachen mit D-Bus-Unterstützung kann man Fenster anzeigen oder verstecken, Tabs verwalten oder direkt Befehle in Guake-Terminals schicken.
