任意のdbus信号でスクリプトを実行することは可能ですか?特権のないユーザーとして実行され、変更するためにルート権限を必要としないUpstartのようなものはありますか?
Bluetoothイベントが私の音楽プレーヤーを開始するのを待つ という愚かなスクリプトをすでに書いているので、私は尋ねます。ここで、マシンが特定のネットワークに接続するとき、または他のデバイスが接続するときに、似たようなことをしたいと思います。
EDIT:私の元の質問ではこれを指定していませんでしたが、「いくつかのスクリプトを一連のイベントの1つに関連付ける」ことを意味していました。 dは、それぞれが異なるdbusシグナルを処理する多数のスクリプトを管理する同じランチャーyのもの(Upstartなど)を持っています。すべてユーザー空間内。
dbus-monitor
が必要です
スクリプトは次のようになります
#!/bin/bash
interface=org.gnome.Rhythmbox.Player
member=playingUriChanged
# listen for playingUriChanged DBus events,
# each time we enter the loop, we just got an event
# so handle the event, e.g. by printing the artist and title
# see rhythmbox-client --print-playing-format for more output options
dbus-monitor --profile "interface='$interface',member='$member'" |
while read -r line; do
printf "Now playing: "
rhythmbox-client --print-playing
done