Mam zabawy z dbus-monitora , aby spróbować zrozumieć, jak dbus pracuje w środowisku Ubuntu. Mam kilka pytań w tym zakresie:
Czy możesz dać mi znać, jak prawidłowo przeczytać poniższe informacje? Rozumiem wielki pomysł, ale nie szczegóły.
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
Rozumiem, że pierwszy to sygnał, a drugi to metoda. Czy przeznaczenie oznacza, że może istnieć określony odbiornik / gniazdo dla sygnału? Co jest członkiem ? I czy pozycje na liście po sygnale przekazywane są w argumencie? Kim są nadawcy i seriale ?
Zauważyłem coś o związku między regulacją głośności a powiadomieniami. Z tego, co przeczytałem z wyjścia monitora 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
Wygląda na to, że powiadomienie jest uruchamiane za pomocą tej metody. Po prostu tak naprawdę nie rozumiem, dlaczego to działa w ten sposób. Moim zdaniem bardziej sensowne byłoby, gdyby emitowany był sygnał „powiadomienie-audio-objętość-nośnik”, podczas gdy powiadomienie nasłuchiwałoby tego sygnału i odpowiednio zareagowałoby. Jeśli wysyłanie / odbieranie byłoby publiczne, a nie prywatne, czy nie pozwoliłoby to na większą elastyczność i wydajność? Na przykład, jeśli istniał publiczny sygnał dla „powiadomienia-audio-głośności-medium” następnie kilka aplikacji mogłoby nasłuchiwać tego sygnału (co pozwoliłoby na powstanie konkurencyjnych aplikacji powiadamiających), a programiści musieliby się martwić wysyłaniem sygnałów, podczas gdy odbiór i obsługa sygnału byłaby działalnością aplikacji powiadamiającej (lub jakiejkolwiek innej) program, który potrzebuje tych sygnałów).
Jestem dopiero nowym użytkownikiem Dbus i chcę dowiedzieć się więcej, pracując z Dbus nad Pythonem, głównie w celu opracowania niektórych apletów. Widziałem samouczek dbus-python, który uczy, jak słuchać wszystkich sygnałów (nie określając ani interfejsu, ani ścieżki itp.) Ale jak śledzić metody, gdy są one wywoływane, tak jak robi to dbus-monitor?
Jeśli masz cierpliwość, aby nauczyć, jak to działa, nie ma za co.