Як запустити сценарій на сигналі dbus?


13

Чи можливо запустити скрипт на довільному сигналі dbus? Щось на кшталт Upstart, який працює як непривілейований користувач і не потребує кореневих perms для зміни?

Я прошу, бо я вже написав нерозумний сценарій, який чекає, коли події Bluetooth запустить мій музичний плеєр . Тепер я хотів би зробити щось подібне, коли моя машина підключається до певних мереж або приєднується до інших пристроїв.

EDIT: У моєму первісному запитанні це не було вказано, але я мав на увазі "пов’язати декілька сценаріїв з одним із набору подій" - тому я мав би таку саму запускаючу річ (як Upstart), яка керує низкою сценаріїв , кожен з яких піклується про інший сигнал dbus. Усі в просторі користувача.


Можливо, це не зовсім те, що ти шукаєш, але вискакував у мене на думці, коли ти говорив про випуск. Ви можете запускати сценарії з systemd . Я не точно впевнений, який тип пристрою створює ваш Bluetooth-пристрій, але я думаю, що він є.
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 .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.