Я граю з dbus-монітором, щоб спробувати зрозуміти, як dbus працює в середовищі Ubuntu. У мене є кілька питань з цього приводу:
Не могли б ви сказати мені, як правильно прочитати наступне? Я розумію велику ідею, але не деталі.
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
Я розумію, що перший сигнал - тоді як другий - метод. Чи означає призначення, що може бути певний приймач / слот для сигналу? Що таке член ? І чи є пункти списку, наступними за сигналом, аргументи, передані в сигналі? Що таке відправник та серіали ?
Я помітив щось про взаємозв’язок між регулюванням гучності та сповіщеннями. З того, що я читав з виводу dbus-монітора
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
Здається, що сповіщення запускається його методом. Я просто не розумію, чому це працює так. На мій погляд, було б більше сенсу, якби був сигнал, що випромінюється "сповіщення-звук-об'єм-носій", тоді як сповіщення слухатиме цей сигнал і реагуватиме відповідно. Якщо відправлення / отримання буде публічним, а не приватним, чи не дозволить це досягти більшої гнучкості та ефективності? Наприклад, якщо був загальнодоступний сигнал для "сповіщення-аудіо-об'єм-носій" тоді декілька додатків могли прослухати цей сигнал (що дозволило б з’являтися конкуруючим додаткам для сповіщень), а розробникам просто слід було б перейматися надсиланням сигналів, тоді як підбір та обробка сигналу - це справа програми сповіщення (або будь-який інший програма, яка потребує цих сигналів).
Я просто новачок у Dbus і хочу дізнатися більше, оскільки я працюю з Dbus над Python, головним чином, щоб розробити деякі аплети. Я бачив підручник dbus-python, і він вчить як слухати всі сигнали (не вказуючи ні інтерфейс, ні шлях тощо). Але як відстежувати методи, коли вони викликаються, як це робить dbus-монітор?
Якщо у вас є терпіння викладати, як це працює, вас вітає.