Hallo, hat jemand von Euch ne Idee wie ich das gelöst bekomme?
Ich hab ungefähr 10 laufende Sessions von Konsole (KDE-Terminal mit bash), jeweils mit ca. 10 bis 20 offenen Tabs. In genau einem davon läuft ein vim in der eine bestimmte Datei offen ist. Via "ps aux | grep dateiname", bekomm ich die PID. Aber wie finde ich nun den entsprechenden Konsole-Tab? Und wie bekomm ich ihn den Vordergrund geholt? Der WM ist Fluxbox, der hat einiges an Shortcuts, die man Fenstern bzw getabten Programmen zuweisen kann. Mein Problemfall sind aber die Konsole eigenen Tabs, an die komm ich via Fluxbox vermutlich nicht ran.
Ich dachte, dass man mit "wmctrl -l -p" vielleicht was anfangen kann, leider werden die Konsole-Fenster da auch nur im Ganzen aufgelistet, die Konsole Tabs darin leider nicht.
Und ja, dass mit den tausend Tabs muss so sein, screen ist zwar toll, in dem Fall aber keine Lösung (und tmux und Kollegen ebenfalls nicht).
Fernsteuern von Konsole-Tabs
Re: Fernsteuern von Konsole-Tabs
Mit dbus vielleicht?
Es gibt in der Dokumentation einen leider sehr viel zu kurzen Abschnitt dazu, mit qdbus (qdbus-qt5): https://docs.kde.org/trunk5/en/applicat ... pting.html
Es gibt in der Dokumentation einen leider sehr viel zu kurzen Abschnitt dazu, mit qdbus (qdbus-qt5): https://docs.kde.org/trunk5/en/applicat ... pting.html
Re: Fernsteuern von Konsole-Tabs
Das sieht schonmal gut aus. Danke!
Re: Fernsteuern von Konsole-Tabs
Doch.eggy hat geschrieben:Und ja, dass mit den tausend Tabs muss so sein, screen ist zwar toll, in dem Fall aber keine Lösung (und tmux und Kollegen ebenfalls nicht).
Ich denke ich würde eher tmux nutzen, da es dort weniger Probleme mit den Zeichensätzen gibt.
Code: Alles auswählen
tmux new -s meinevimsitzung
Code: Alles auswählen
tmux a -t meinevimsitzung
Und im Notfall legst du ein paar Scripte unter /usr/local/bin an.
ich denke mit
Code: Alles auswählen
tmux a -t $1 || tmux new -s $1
Statt Detach können sie ja das Fenster einfach schließen.
https://gist.github.com/henrik/1967800
Re: Fernsteuern von Konsole-Tabs
@uname:uname hat geschrieben:16.07.2020 15:16:40Doch.eggy hat geschrieben:Und ja, dass mit den tausend Tabs muss so sein, screen ist zwar toll, in dem Fall aber keine Lösung (und tmux und Kollegen ebenfalls nicht).
Nein, nix doch.
Wie oben erwähnt "in dem Fall", u.a. weil die Fenster gleichzeitig im Vordergrund sichtbar sein müssen.
Sonst bin ich auch ein großer Fan von Terminalmultiplexern, aber hier bringen die ausnahmsweise mal wirklich nichts.
@smutbert :
Danke nochmal, ich hab's direkt ins Script eingebaut, funktioniert perfekt
Nach Deinem Hinweis war es auch ganz einfach: mit "qdbus $fenster /Windows/1 org.kde.konsole.Window.nextSession" solange durch die Tabs schalten, bis der gesuchte gefunden ist.
qdbusviewer ist übrigens ne echte Hilfe, falls man bei den vielen qbus Methoden mal den Überblick verliert, da findet man schnell was man sucht. Weitere Doku war (diesmal) nicht notwendig, die entsprechenden Methoden sind glücklicherweise sinnvoll benannt.
Re: Fernsteuern von Konsole-Tabs
Du kannst aber auch gezielt auf einen TAB umschalten, in deinem Fall wohl so (2. TAB):
Für das was mit gerade geöffneten Fenstern möglich ist hatte ich mal ein kleines Skript geschrieben:
Suche halt in dieser Textdatei nach der Pid der Konsole, wäre auch die Bezeichnung anstelle von $fenster oder so...
Code: Alles auswählen
qdbus $fenster /Windows/1 org.kde.konsole.Window.setCurrentSession 2
# oder einen Befehl im 1. TAB ausführen:
qdbus $fenster /Sessions/1 org.kde.konsole.Session.runCommand ls
Code: Alles auswählen
#!/bin/bash
qdbus_Befehle=$(qdbus)
cd /tmp
>qdbus_Befehle.txt
for Servicename in $qdbus_Befehle; do
echo -e "╔══════════ Anfang Service Name: $Servicename ══════════╗\n" >>qdbus_Befehle.txt
x=$(qdbus $Servicename)
for y in $x; do
echo "╔══ Unterpunkt: qdbus $Servicename $y" >>qdbus_Befehle.txt
qdbus $Servicename $y 2>/dev/null >>qdbus_Befehle.txt
echo -e "╚══ Ende Unterpunkt: qdbus $Servicename $y\n" >>qdbus_Befehle.txt
done
echo -e "╚═══════════ Ende Service Name: $Servicename ═══════════╝\n" >>qdbus_Befehle.txt
done
Code: Alles auswählen
qdbus | grep konsole
org.kde.konsole-12275
qdbus org.kde.konsole-12275 /Sessions/3 org.kde.konsole.Session.runCommand ls # wird in TAB 3 ausgeführt
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!
Macht ohne Haftung funktioniert nicht!