Yakuake Steuerung über DBUS
Achtung!
Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.
Hinweis:
Diese Howto-Anleitung wurde zuletzt von ChickenLipsRfun2eat am 25.03.2019 unter Kubuntu 19.04 (dailybuild, beta) erfolgreich getestet.
Höchste getestete Plasma-Version: 5.15.3
Höchste getestete Yakuake-Version: 3.0.5
Vorherige getestete Kubuntu-Version: 18.04 LTS
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Yakuake bietet sehr viele Möglichkeiten zur Automatisierung und Manipulation durch D-BUS-Methoden. Im folgenden werden einzelne Möglichkeiten beschrieben und am Ende einige Beispiele gegeben. Die D-BUS-Methoden lassen sich seit Version 3.0.5 auch aufrufen, bevor Yakuake selbst gestartet wurde.
Aufbau¶
Einschränkungen¶
qdbus org.kde.yakuake
gibt eine Übersicht der Möglichkeiten:
... /Sessions /Sessions/1...n /Windows /Windows/1..n ... /yakuake /yakuake/sessions /yakuake/tabs /yakuake/window
Die Sessions, bzw. Windows - Nummern enthalten zwar die aktuell geöffneten Tabs, beziehen sich aber auf das in Yakuake verwendete Terminalprogramm Konsole. Verwendet man diese Methoden, so erhält man einen Warnhinweis. Im Folgenden werden daher nur Methoden aus dem Pfad /yakuake zur Manipulation vorgestellt.
Windows, Tabs und Sessions¶
Zum besseren Verständnis:
Window ist Yakuake selbst und beinhaltet alle Tabs, Sessions und Terminals
Ein Tab ist ein Reiter in Yakuake, der jeweils mindestens eine Session beinhaltet
Eine Session kann mehrere Terminals beinhalten (siehe splitSession/Terminal)
Ein Terminal repräsentiert eine Instanz von Konsole mit all ihren Eigenschaften
Fenster manipulieren¶
Hier bietet Yakuake lediglich den Wechsel zwischen Anzeigen und Verstecken an, was die selbe Funktion darstellt, die auch von der eingestellten Taste (Standard:F12) ausgelöst wird.
qdbus org.kde.yakuake /yakuake/window org.kde.yakuake.toggleWindowState
Tabs manipulieren¶
Titel ändern¶
Mit
qdbus org.kde.yakuake /yakuake/tabs org.kde.yakuake.setTabTitle SESSION_ID TITEL
lässt sich der Titel eines Tabs ändern.
Titel ermitteln¶
Den aktuell verwendeten Titel bekommt man mit
qdbus org.kde.yakuake /yakuake/tabs org.kde.yakuake.tabTitle SESSION_ID
Hinweis: Yakuake beginnt beim zählen mit 0. Tab 1 ist also das zweite Register von links.
SessionID ermitteln¶
Die SessionID kann man über
qdbus org.kde.yakuake /yakuake/tabs org.kde.yakuake.sessionAtTab TAB_NUMMER
ermitteln.
Sessions manipulieren¶
Sessions: Informationen¶
Die Tabelle bietet eine Übersicht der möglichen Befehle und Abfragen. Aus Gründen der Übersichtlichkeit wurde der Pfad org.kde.yakuake. entfernt. Die Befehle können wie folgt ausgeführt werden:
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.BEFEHL PARAMETER
Lese-Befehl(e) | Rückgabe-Typ | Parameter | Beschreibung |
activeSessionId activeTerminalId | int | - | Gibt die Session- oder Terminal-ID des Tabs an, die sich im Vordergrund befindet. Dies gilt auch, wenn sich Yakuake selbst im Hintergrund befindet. |
hasUnclosableSessions() | bool | - | Ermittelt, ob in einer der Sessions noch ein Prozess läuft. |
isSessionClosable | bool | int sessionID | Ermittelt, ob eine bestimmte Session einen laufenden Prozess enthält, oder beendet werden kann. |
terminalIdList | QString | - | Gibt eine Zahlenfolge der verfügbaren Terminal-IDs aus. |
terminalIdsForSessionId | QString | int sessionID | Gibt die Terminal-IDs für eine bestimmte SessionID aus. |
Sessions: hinzufügen, entfernen, wechseln¶
Yakuake bietet mehrere Möglichkeiten eine neue Session zu öffnen. Der Rückgabewert ist ein Integer (Ganzzahl), die die hochgezählte Session-Nummer enthält. Diese kann zur weiteren Manipulation verwendet werden. Die Tabelle bietet eine Übersicht der möglichen Befehle und Abfragen. Aus Gründen der Übersichtlichkeit wurde der Pfad org.kde.yakuake. entfernt. Die Befehle können wie folgt ausgeführt werden:
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.BEFEHL PARAMETER
Methode | Beschreibung | Screenshot |
hinzufügen | ||
addSession | Öffnet eine einfache Session | |
addSessionQuad | Öffnet eine Session mit vier Konsolenfenstern | BILD |
addSessionTwoHorizontal | Session mit zwei Konsolenfenstern nebeneinander | BILD |
addSessionTwoVertical | Session mit zwei Konsolenfenstern untereinander | BILD |
entfernen | ||
removeSession SESSION_ID | Session mit Hilfe der SessionID entfernen. | |
removeTerminal TERMINAL_ID | Ein Terminal innerhalb einer Session entfernen. | |
aktivieren | ||
raiseSession SESSION_ID | Session anhand ihrer ID in den Vordergrund holen. | |
Sperren | ||
setSessionClosable SESSION_ID BOOL | Eine Session kann vor versehentlichem Schließen geschützt, oder dieser Schutz wieder aufgehoben werden. |
Sessions: Befehle ausführen¶
Unabhängig vom derzeit aktivierten Yakuake und der aktivierten Session lassen sich Befehle in den vorhandenen Terminals ausführen.
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.runCommandInTerminal TERMINAL_ID "BEFEHL"
Um Befehle im derzeit aktiven Terminal auszuführen kann
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.runCommand "BEFEHL"
verwendet werden.
Sessions: aufteilen (split)¶
Bestehende Terminals, so wie Sessions können in mehrere Terminals aufgeteilt werden.
#Vertikale Aufteilung qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.splitSessionLeftRight SESSION_ID qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.splitTerminalLeftRight TERMINAL_ID #horizontale Aufteilung qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.splitSessionTopBottom SESSION_ID qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.splitTerminalTopBottom TERMINAL_ID
Sessions: Tastatureingaben blockieren¶
Mit Hilfe dieser Methoden kann man "nur lesen"-Terminals oder Sessions erstellen in denen Tastatureingaben gesperrt sind. Man kann dort aber Befehle mittels runCommand absetzen.
Die Tabelle bietet eine Übersicht der möglichen Befehle und Abfragen. Aus Gründen der Übersichtlichkeit wurde der Pfad org.kde.yakuake. entfernt. Die Befehle können wie folgt ausgeführt werden:
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.BEFEHL PARAMETER
Befehl(e) | Rückgabe-Typ | Parameter |
hasTerminalsWithKeyboardInputDisabled | bool | int sessionID |
hasTerminalsWithKeyboardInputEnabled | bool | int sessionID |
setSessionKeyboardInputEnabled | void | int sessionID, bool enabled |
setTerminalKeyboardInputEnabled | void | int sessionID, bool enabled |
Sessions: Aktivität überwachen¶
Yakuake bietet eine Möglichkeit Terminalprozesse zu überwachen. Dabei ist es möglich, sowohl die Aktivität, als auch die Inaktivität als Auslöser zu definieren. Der Auslöser sendet eine Benachrichtigung über das KDE-Benachrichtigungssystem. Über den DBUS lässt sich dieses Signal abfangen und weiterverarbeiten.
Die Tabelle bietet eine Übersicht der möglichen Befehle und Abfragen. Aus Gründen der Übersichtlichkeit wurde der Pfad org.kde.yakuake. entfernt. Die Befehle können wie folgt ausgeführt werden:
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.BEFEHL PARAMETER
Lese-Befehl(e) | Rückgabe-Typ | Parameter | Änderungsbefehl | Parameter |
hasTerminalsWithMonitorActivityEnabled hasTerminalsWithMonitorActivityDisabled | bool | - | setSessionMonitorActivityEnabled | int terminalId, bool enabled |
hasTerminalsWithMonitorSilenceEnabled hasTerminalsWithMonitorSilenceDisabled | bool | int sessionID | setSessionMonitorSilenceEnabled | int terminalId, bool enabled |
Beispiele¶
Status des Sessionschutzes ermitteln¶
1 2 3 4 5 | #!/bin/bash IFS=',' #Feldtrenner auf Komma setzen for i in $(qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.sessionIdList); do echo "Session:$i is closable: $(qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.isSessionClosable $i)" done |
Tab mit ssh-Verbindung öffnen¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash #neue Session hinzufügen und ID in $newSession speichern newSession=$(qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.addSession) #Session schützen qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.setSessionClosable $newSession FALSE #Titel des Tabs der Session ändern qdbus org.kde.yakuake /yakuake/tabs org.kde.yakuake.setTabTitle $newSession "SSH-Session" #terminalID herausfinden: (ACHTUNG: Erstellt man mit split weitere Terminals, so enthält die terminalID eine Liste! terminalID=$(qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.terminalIdsForSessionId $newSession) #Befehl zur Verbindung ins Terminal absetzen qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.runCommandInTerminal $terminalID "ssh user@server -p22 -i /Pfad/zum/PublicKey" |
Hinweis: Verwendet man keinen PublicKey, so muss selbstverständlich das Passwort eingegeben werden, bevor die Verbindung hergestellt werden kann.
Links¶
intern¶
extern¶