Как запустить скрипт на сигнале dbus?

10

Можно ли запустить скрипт на произвольном сигнале dbus? Что-то вроде Upstart, который работает как непривилегированный пользователь и не требует изменения root perms?

Я спрашиваю, потому что я уже написал глупый сценарий, который ждет событий bluetooth, чтобы запустить мой музыкальный плеер . Теперь я хотел бы сделать что-то подобное, когда моя машина подключается к определенным сетям или другим устройствам.

РЕДАКТИРОВАТЬ: Мой оригинальный вопрос не указал этого, но я имел в виду "связать несколько скриптов с одним из множества событий" - так что у меня будет такая же пусковая установка (например, Upstart), который управляет несколькими скриптами, каждый из которых заботится о другом сигнале dbus. Все в пространстве пользователя.     

задан Erigami 14.06.2012 в 12:56
источник

1 ответ

12

Вам нужно 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

Взято из Ссылка

    
ответ дан int_ua 14.06.2012 в 15:17