Come posso eseguire uno script su un segnale dbus?


13

È possibile eseguire uno script su un segnale dbus arbitrario? Qualcosa come Upstart che funziona come un utente senza privilegi e che non necessita di permessi di root per modificare?

Lo chiedo perché ho già scritto una stupida sceneggiatura in attesa di eventi bluetooth per avviare il mio lettore musicale . Ora vorrei fare qualcosa di simile quando la mia macchina si collega a reti specifiche o altri dispositivi collegati.

EDIT: La mia domanda originale non specificava questo, ma intendevo "associare un numero di script a uno di una serie di eventi" - quindi avrei la stessa cosa launcher-y (come Upstart) che gestisce un numero di script , ognuno dei quali si preoccupa per un diverso segnale dbus. Tutto nello spazio utente.


Forse non è esattamente quello che cerchi, ma mi è venuto in mente quando hai parlato di upstart. È possibile attivare gli script con systemd . Non sono esattamente sicuro del tipo di unità che crea il tuo dispositivo bluetooth, ma penso che ce ne sia uno.
sumid

Risposte:


16

Hai bisogno di dbus-monitor

La sceneggiatura avrà un aspetto simile

#!/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

Tratto da StackOverflow .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.