Ubuntu ortamında dbus'un nasıl çalıştığını anlamak ve denemek için dbus-monitor ile oynuyorum . Bu konuda birkaç sorum var:
Lütfen aşağıdakileri doğru bir şekilde nasıl okuyacağımı bana bildirir misiniz? Büyük fikri anlıyorum ama detayları değil.
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
İlki bir sinyal, ikincisi ise bir yöntem. Hedef , bir sinyal için belirli bir alıcı / slot olabileceği anlamına mı geliyor? Bir nedir üyesi ? Ve listenin öğeleri, sinyalin ardından gelen ve sinyalin içerdiği argümanlar mı? Nelerdir gönderen ve diziler ?
Ses kontrolü ve bildirimler arasındaki ilişki hakkında bir şey fark ettim. Dbus-monitor çıkışından okuduklarımdan
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
Bildirimin yöntemiyle tetiklendiği anlaşılıyor. Sadece neden bu şekilde çalıştığını anlamıyorum. Benim görüşüme göre , bildirim bu sinyali dinleyip buna göre tepki verirken, "bildirim-ses-ses-orta-ortama" yayılan bir sinyal olup olmadığını daha mantıklı görecekti. Gönderme / alma özel değil halka açıksa, daha fazla esneklik ve verimlilik sağlayacak mı? Örneğin, "bildirim-ses-ses ortamı" için genel bir sinyal varsa o zaman birkaç uygulama bu sinyali dinleyebildi (bu, rakip bildirim uygulamalarının ortaya çıkmasına izin verecekti) ve geliştiricilerin sadece sinyal gönderme ile ilgilenmeleri gerekirken, bir sinyali almak ve yönetmek, bildiren uygulamanın işidir (ya da diğer bu sinyalleri gerektiren program).
Sadece Dbus için yeniyim ve daha çok öğrenmek istiyorum, çünkü Python üzerinde Dbus ile çalışıyorum, özellikle bazı uygulamaları geliştirmek için. Dbus-python öğreticisini gördüm ve tüm sinyalleri nasıl dinleyeceğimi öğretiyor (ne arabirim ne de yol vb. Belirterek) Ama dbus-monitor gibi, çağrıldıklarında yöntemleri nasıl izleyebilirim?
Nasıl çalıştığını öğretme sabrınız varsa, memnuniyetle karşılıyorsunuz.