우분투 환경에서 dbus가 어떻게 작동하는지 이해하기 위해 dbus-monitor 를 가지고 놀고 있습니다. 이와 관련하여 몇 가지 질문이 있습니다.
다음을 올바르게 읽는 방법을 알려주시겠습니까? 나는 큰 아이디어를 이해하지만 세부 사항은 이해하지 못합니다.
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-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
알림이 메소드에 의해 트리거 된 것 같습니다. 왜 이런 식으로 작동하는지 이해하지 못합니다. 내 생각에, "알림-오디오-볼륨-중간" 방출되는 신호가 있다면 , 통지가이 신호를 듣고 그에 따라 반응 하는 것이 더 의미가있을 것이다. 송신 / 수신이 개인이 아닌 공개 인 경우 더 많은 유연성과 효율성을 허용하지 않습니까? 예를 들어 "알림-오디오-볼륨-중간" 에 대한 공개 신호가있는 경우 그런 다음 여러 응용 프로그램이이 신호를 수신 할 수 있으며 (경쟁 알림 응용 프로그램의 존재를 허용 할 수 있음) 개발자는 신호 전송에 관심을 가져야하지만 신호를 수집하고 처리하는 것은 응용 프로그램의 비즈니스 (또는 기타 해당 신호가 필요한 프로그램).
저는 Dbus를 처음 접했고 Python에서 Dbus와 함께 일하면서 주로 애플릿을 개발하기 위해 더 많은 것을 배우고 싶습니다. 나는 dbus-python 튜토리얼을 보았고 모든 인터페이스를 듣는 방법 (인터페이스 나 경로 등을 지정하지 않음)을 가르치고 있지만 dbus-monitor처럼 메소드가 호출 될 때 추적하는 방법은 무엇입니까?
그것이 어떻게 작동하는지 가르치는 인내심이 있다면 환영합니다.