Bir dbus sinyalinde bir komut dosyasını nasıl çalıştırabilirim?


13

Rasgele bir dbus sinyali üzerinde bir komut dosyası çalıştırmak mümkün müdür? Upstart gibi ayrıcalıklı bir kullanıcı olarak çalışan ve değiştirmek için kök izinleri gerektirmeyen bir şey mi?

Soruyorum çünkü zaten müzik çalarımı başlatmak için bluetooth olaylarını bekleyen aptal bir senaryo yazdım . Şimdi, makinem belirli ağlara bağlandığında veya diğer cihazlar bağlandığında benzer bir şey yapmak istiyorum.

DÜZENLEME: Orijinal sorum bunu belirtmedi, ancak "bir dizi betiği bir dizi olayla ilişkilendirmek" demek istedim. her biri farklı bir dbus sinyali ile ilgileniyor. Hepsi kullanıcı alanında.


Belki de tam olarak aradığın şey değil, ama başlangıçtan bahsettiğinde aklımda belirdi. Systemd ile komut dosyalarını tetikleyebilirsiniz . Bluetooth cihazınızı ne tür bir ünite oluşturduğundan tam olarak emin değilim, ancak bir tane olduğunu düşünüyorum.
Eylül'de

Yanıtlar:


16

İhtiyacın var dbus-monitor

Senaryo şöyle görünecek

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

Alındığı stackoverflow .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.