dbusシグナルでスクリプトを実行するにはどうすればよいですか?


13

任意のdbus信号でスクリプトを実行することは可能ですか?特権のないユーザーとして実行され、変更するためにルート権限を必要としないUpstartのようなものですか?

bluetoothイベントが音楽プレーヤーを開始するの待つ馬鹿げたスクリプトをすでに書いているのでお願いします。ここで、マシンが特定のネットワークに接続するとき、または他のデバイスが接続するときに、似たようなことをしたいと思います。

編集:私の元の質問はこれを指定しませんでしたが、「一連のイベントの1つにいくつかのスクリプトを関連付ける」ことを意味していました。 、それぞれが異なるdbusシグナルを処理します。すべてユーザー空間内。


たぶんそれはあなたが探しているものではないかもしれませんが、あなたが新興企業について話したときに私の心に浮かびました。systemdを使用してスクリプトをトリガーできます。Bluetoothデバイスを作成するユニットの種類は正確にはわかりませんが、1つあると思います。
sumid

回答:


16

あなたが必要です 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

stackoverflowから取得

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.