Sto giocando con dbus-monitor per cercare di capire come funziona dbus in ambiente Ubuntu. Ho diverse domande al riguardo:
La prego di farmi sapere come leggere correttamente quanto segue? Capisco la grande idea, ma non i dettagli.
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
Capisco che il primo è un segnale mentre il secondo è un metodo. Ha destinazione significa che ci può essere una specifica ricevitore / slot per un segnale? Cos'è un membro ? E gli elementi dell'elenco seguono il segnale gli argomenti passati nel segnale? Cosa sono mittente e numeri di serie ?
Ho notato qualcosa sulla relazione tra controllo del volume e notifiche. Da quello che ho letto dall'output di 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
Sembra che la notifica sia attivata dal suo metodo. Semplicemente non capisco davvero perché funzioni in questo modo. A mio avviso, avrebbe più senso se venisse emesso un segnale "notifica-volume-audio-medio" mentre la notifica avrebbe ascoltato questo segnale e avrebbe reagito di conseguenza. Se l'invio / la ricezione fossero pubblici piuttosto che privati, non consentirebbe maggiore flessibilità ed efficienza? Ad esempio se c'era un segnale pubblico per "notifica-volume-audio-medio" quindi diverse applicazioni potrebbero ascoltare questo segnale (che consentirebbe la realizzazione di applicazioni di notifica concorrenti) e gli sviluppatori dovrebbero semplicemente preoccuparsi di inviare segnali, mentre la raccolta e la gestione di un segnale sarebbe l'attività dell'applicazione di notifica (o qualsiasi altra programma che necessita di quei segnali).
Sono appena nuovo su Dbus e voglio saperne di più mentre lavoro con Dbus su Python, principalmente per sviluppare alcune applet. Ho visto il tutorial di dbus-python e insegna come ascoltare tutti i segnali (specificando né interfaccia né percorso, ecc.) Ma come tenere traccia dei metodi quando vengono chiamati, come fa dbus-monitor?
Se hai la pazienza di insegnare come funziona, sei il benvenuto.