Bagaimana cara menjalankan skrip pada sinyal dbus?

13

Apakah mungkin menjalankan skrip pada sinyal dbus yang berubah-ubah? Sesuatu seperti Pemula yang berjalan sebagai pengguna yang tidak memiliki hak pribadi dan tidak memerlukan izin root untuk memodifikasi?

Saya bertanya karena saya sudah menulis skrip konyol yang menunggu acara bluetooth untuk memulai pemutar musik saya . Sekarang saya ingin melakukan sesuatu yang serupa ketika mesin saya terhubung ke jaringan tertentu, atau perangkat lain terpasang.

EDIT: Pertanyaan asli saya tidak menentukan ini, tapi saya maksudkan "kaitkan sejumlah skrip dengan salah satu dari serangkaian peristiwa" - jadi saya akan memiliki peluncur-y yang sama (seperti Upstart) yang mengelola sejumlah skrip , masing-masing peduli pada sinyal dbus yang berbeda. Semua ada di ruang pengguna.

Erigami
sumber
Mungkin itu bukan apa yang Anda cari, tetapi muncul di pikiran saya ketika Anda berbicara tentang pemula. Anda dapat memicu skrip dengan systemd . Saya tidak begitu yakin apa jenis unit yang menciptakan perangkat bluetooth Anda, tapi saya pikir ada satu.
sumid

Jawaban:

16

Anda membutuhkan dbus-monitor

Script akan terlihat seperti ini

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

Diambil dari stackoverflow .

int_ua
sumber