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.
Diese Howto-Anleitung wurde zuletzt von ChickenLipsRfun2eat am 12.12.2016 unter Kubuntu 16.04 und Kubuntu 16.10 erfolgreich getestet.
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.
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 aus Sicherheitsgründen nur Methoden aus dem Pfad /yakuake zur Manipulation vorgestellt.
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
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
Mit
qdbus org.kde.yakuake /yakuake/tabs org.kde.yakuake.setTabTitle SESSION_ID TITEL
lässt sich der Titel eines Tabs ändern.
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.
Die SessionID kann man über
qdbus org.kde.yakuake /yakuake/tabs org.kde.yakuake.sessionAtTab TAB_NUMMER
ermitteln.
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. |
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. |
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.
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
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 |
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 |
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 |
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/tabs 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 muss 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.
Diese Revision wurde am 19. Dezember 2016 18:53 von noisefloor erstellt.