Saya bermain-main dengan dbus-monitor untuk mencoba dan memahami bagaimana dbus bekerja di lingkungan Ubuntu. Saya punya beberapa pertanyaan dalam hal ini:
Bisakah Anda memberi tahu saya cara membaca yang berikut dengan benar? Saya mengerti ide besarnya, tapi tidak detailnya.
signal sender=:1.1948 -> dest=(null destination) serial=1829990 path=/org/ayatana/menu/DA00003; interface=org.ayatana.dbusmenu; member=ItemPropertyUpdated int32 23 string "enabled" variant boolean true method call sender=:1.6 -> dest=org.freedesktop.Notifications serial=1399 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetCapabilities
Saya mendapatkan bahwa yang pertama adalah sinyal sedangkan yang kedua adalah metode. Apakah tujuan berarti ada penerima / slot tertentu untuk sinyal? Apa itu anggota ? Dan apakah item dari daftar mengikuti sinyal argumen yang diberikan dalam sinyal? Apa itu pengirim dan serial ?
Saya memperhatikan sesuatu tentang hubungan antara kontrol volume dan pemberitahuan. Dari apa yang saya baca dari output dbus-monitor
method call sender=:1.6 -> dest=org.freedesktop.Notifications serial=1400 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify string "gnome-settings-daemon" uint32 0 string "notification-audio-volume-medium" string " " string "" array [ ] array [ dict entry( string "value" variant int32 38 ) dict entry( string "x-canonical-private-synchronous" variant string "volume" ) ] int32 -1
Tampaknya notifikasi dipicu oleh metodenya. Saya hanya tidak benar-benar mengerti mengapa ini bekerja seperti ini. Dalam pandangan saya akan lebih masuk akal jika ada sinyal yang dipancarkan "notifikasi-audio-volume-medium" sementara notifikasi akan mendengarkan sinyal ini dan bereaksi sesuai. Jika pengiriman / penerimaan akan bersifat publik daripada pribadi, tidakkah hal itu akan memberikan fleksibilitas dan efisiensi yang lebih? Misalnya jika ada sinyal publik untuk "notifikasi-audio-volume-medium" kemudian beberapa aplikasi dapat mendengarkan sinyal ini (yang akan memungkinkan aplikasi notifikasi yang bersaing muncul) dan pengembang hanya harus peduli dengan pengiriman sinyal, sementara mengambil dan menangani sinyal akan menjadi bisnis aplikasi yang memberi tahu (atau bisnis lainnya yang memberi tahu) program yang membutuhkan sinyal tersebut).
Saya baru mengenal Dbus dan ingin belajar lebih banyak karena saya bekerja dengan Dbus di Python, terutama untuk mengembangkan beberapa applet. Saya telah melihat tutorial dbus-python dan mengajarkan cara mendengarkan semua sinyal (dengan tidak menentukan antarmuka atau jalur dll.) Tetapi bagaimana cara melacak metode ketika mereka dipanggil, seperti dbus-monitor?
Jika Anda memiliki kesabaran untuk mengajarkan cara kerjanya, Anda dipersilakan.
sumber
org.freedesktop.Notifications
layanan. Dengan cara ini semua metode panggilan ke layanan ini akan ditangani oleh kode Anda.Saya juga mencari solusi untuk mengumpulkan notifikasi desktop melalui dbus dengan skrip python. Pertanyaan ini adalah yang paling dekat yang saya dapatkan dengan googling, tetapi menulis pengganti notify-osd sepertinya berlebihan :)
Melihat sumber applet notifikasi baru-baru ini saya mendapat beberapa petunjuk bagaimana memonitor pesan dbus dan di sini adalah implementasi python saya datang dengan:
Semoga ini bisa membantu seseorang, karena tampaknya tidak ada banyak contoh python sederhana yang terkait dengan pemantauan pesan dbus.
sumber
NameAquired
pesan pertama )