5

プログラム (konsole) を起動して dbus メッセージを送信する bash スクリプトを作成しようとしています。これが私の実験です

konsole &
echo pid is $!
ps aux | grep konsole
qdbus | grep konsole

これは出力します

pid is 2726
me    2726  0.0  0.4  45404  9952 pts/0    S+   14:59   0:00 konsole
 org.kde.konsole-2729

qdbus サービス名は常にorg.kde.konsole-{pid+epsilon}ですが、イプシロンの部分は予測できません。

私の bash スクリプトで、生成したばかりの特定の konsole インスタンスの正確な qdbus サービス名を取得するにはどうすればよいですか?


これは厄介でハッキーなソリューションです

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`

しかし、確かにもっと良い方法があります!

4

2 に答える 2

0

を使用して、D-Bus API 経由で新しい Konsole インスタンスを起動してみてくださいqdbus org.kde.konsole /Konsole newSession/Session/$SIDサービスのオブジェクトへの呼び出しで後でそれを制御するために使用できるセッション ID を返しorg.kde.konsoleます。

于 2012-04-01T05:59:29.890 に答える