Comment exécuter un script sur un signal dbus?


13

Est-il possible d'exécuter un script sur un signal dbus arbitraire? Quelque chose comme Upstart qui fonctionne en tant qu'utilisateur non privilégié et qui ne nécessite pas de modification des droits d'accès root?

Je demande parce que j'ai déjà écrit un script stupide qui attend les événements Bluetooth pour démarrer mon lecteur de musique . Maintenant, j'aimerais faire quelque chose de similaire lorsque ma machine se connecte à des réseaux spécifiques ou que d'autres appareils s'y connectent.

EDIT: Ma question d'origine ne spécifiait pas cela, mais je voulais dire "associer un certain nombre de scripts à l'un d'un ensemble d'événements" - donc j'aurais la même chose lanceur-y (comme Upstart) qui gère un certain nombre de scripts , dont chacun se soucie d'un signal dbus différent. Le tout dans l'espace utilisateur.


Peut-être que ce n'est pas exactement ce que vous recherchez, mais est apparu dans mon esprit lorsque vous avez parlé de parvenu. Vous pouvez déclencher des scripts avec systemd . Je ne sais pas exactement quel type d'unité crée votre appareil Bluetooth, mais je pense qu'il y en a un.
2015 à 9h03

Réponses:


16

Vous avez besoin du dbus-monitor

Le script ressemblera à quelque chose

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

Tiré de stackoverflow .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.