Ich versuche, ein Bash-Skript zu schreiben, die ein Programm (Konsole) starten und dbus Nachrichten an es senden wird. Hier ist mein VersuchMapping Pid zu Qdbus Service-Nummern nach dem Start
konsole &
echo pid is $!
ps aux | grep konsole
qdbus | grep konsole
Diese gibt
pid is 2726
me 2726 0.0 0.4 45404 9952 pts/0 S+ 14:59 0:00 konsole
org.kde.konsole-2729
Der qdbus Service-Name ist immer org.kde.konsole-{pid+epsilon}
aber der epsilon Teil ist unberechenbar.
In meinem Bash-Skript, wie bekomme ich den genauen qdbus Service-Namen für die bestimmte Konsole-Instanz, die ich gerade erzeugt habe?
Hier ist eine böse, hacky Lösung
qdbus | grep konsole | sed 's/[^0-9]//g' > /tmp/before
konsole &
sleep 1
qdbus | grep konsole | sed 's/[^0-9]//g' > /tmp/after
N=`sort /tmp/before /tmp/after | uniq -u`
aber sicher gibt es einen besseren Weg!
'Service 'org.kde.konsole' existiert nicht. Aber wenn ich Konsole manuell starte, dann existiert der Service' org.kde.konsole.12345' (oder ähnlich). 'qdbus | grep konsole' listet keine Ergebnisse auf, wenn ich nicht mindestens eine Konsole betreibe. – spraff