Tôi đang chơi xung quanh với màn hình dbus để thử và hiểu cách thức hoạt động của dbus trong môi trường Ubuntu. Tôi có một số câu hỏi về vấn đề này:
Bạn có thể vui lòng cho tôi biết làm thế nào để đọc đúng sau đây? Tôi hiểu ý tưởng lớn, nhưng không phải là chi tiết.
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
Tôi hiểu rằng cái đầu tiên là tín hiệu trong khi cái thứ hai là một phương thức. Có phải đích có nghĩa là có thể có một bộ thu / khe cụ thể cho tín hiệu không? Một là những gì thành viên ? Và các mục của danh sách có theo tín hiệu các đối số được truyền trong tín hiệu không? Người gửi và serial là gì?
Tôi nhận thấy điều gì đó về mối quan hệ giữa điều khiển âm lượng và thông báo. Từ những gì tôi đọc được từ đầu ra màn hình 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
Có vẻ như thông báo được kích hoạt bởi phương thức của nó. Tôi thực sự không hiểu tại sao nó hoạt động theo cách này. Theo quan điểm của tôi, sẽ có ý nghĩa hơn nếu có một tín hiệu phát ra "thông báo-âm thanh-âm lượng trung bình" trong khi thông báo sẽ lắng nghe tín hiệu này và phản ứng tương ứng. Nếu việc gửi / nhận sẽ là công khai chứ không phải riêng tư, liệu nó có cho phép linh hoạt và hiệu quả hơn không? Chẳng hạn, nếu có tín hiệu chung cho "thông báo-âm thanh-âm lượng trung bình" sau đó một số ứng dụng có thể lắng nghe tín hiệu này (cho phép các ứng dụng thông báo cạnh tranh tồn tại) và các nhà phát triển sẽ phải quan tâm đến việc gửi tín hiệu, trong khi chọn và xử lý tín hiệu sẽ là doanh nghiệp của ứng dụng thông báo (hoặc bất kỳ ứng dụng nào khác chương trình cần những tín hiệu đó).
Tôi chỉ mới làm quen với Dbus và muốn tìm hiểu thêm khi tôi làm việc với Dbus trên Python, chủ yếu để phát triển một số applet. Tôi đã xem hướng dẫn về dbus-python và nó dạy cách nghe tất cả các tín hiệu (bằng cách chỉ định cả giao diện và đường dẫn, v.v.) Nhưng làm thế nào để theo dõi các phương thức khi chúng được gọi, giống như màn hình dbus?
Nếu bạn có đủ kiên nhẫn để dạy cách thức hoạt động, bạn sẽ được chào đón.