UnknownMethod 오류로 인해 xfce4에 대한 여러 볼륨 알림

UnknownMethod 오류로 인해 xfce4에 대한 여러 볼륨 알림

오류의 명백한 부분은 볼륨을 변경할 때 여러 알림을 받는다는 것입니다.

여러 볼륨 알림

증상은 비슷해 보임AskUbuntu에 대한 질문하지만 이건 다른 이유일 수도 있고 제가 실제로 우분투를 사용하지 않아서 새로운 질문을 드립니다.

몇번의 고민 끝에 이상한 점을 발견했습니다. D-Bus 서비스 Notify의 메소드를 호출하면 xorg.freedesktop.Notifications알림을 표시할 수 있지만 오류가 반환됩니다.

Notify 메서드를 호출하면 작동하지만 오류가 반환됩니다.

나는 이것을 d-feetD-Bus 서비스를 탐색하고 메소드 서명을 확인하는 데 사용하고 있으므로 올바른 매개변수 유형을 사용했기 때문에 기쁩니다(그렇지 않으면 더 구체적인 오류가 발생했을 것입니다). 다음을 사용할 때 동일한 오류가 발생했습니다 notify-send.

~% notify-send a                                                              
GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: Method "Notify" with signature "susssasa{sv}i" on interface "org.freedesktop.Notifications" doesn't exist

적어도 한 사람이 동시에 같은 문제를 겪었습니다.https://www.linuxquestions.org/questions/slackware-14/pygobject-desktop-notifications-stopped-working-4175710943/

버그가 없는 Xubuntu 20.04와 비교할 때 알림의 ID를 반환해야 한다는 것을 알았습니다. 그런 다음 replacedid알림을 업데이트하기 위한 매개 변수로 사용할 수 있습니다. 이는 xfce4-pulseaudio-plugin첫 번째 알림을 업데이트할 수 없지만 대신 새 알림이 열리는 이유를 설명합니다 .

나는 테스트(책벌레)와 최신 업데이트뿐만 아니라 , xfce4=4.16xfce4-pulseaudio-plugin=0.4.3-1. 또한 실제로 다음에서 제공됩니다.xfce4-notifyd=0.6.3-1dbus=1.14.0-1xorg.freedesktop.Notifications/usr/share/dbus-1/services/org.xfce.xfce4-notifyd.Notifications.service

[D-BUS Service]
Name=org.freedesktop.Notifications
Exec=/usr/lib/x86_64-linux-gnu/xfce4/notifyd/xfce4-notifyd
SystemdService=xfce4-notifyd.service

내 생각엔 이것이 xfce4-pulseaudio-plugin내 구성의 버그일 가능성이 더 높습니다 dbus. xfce4-notifyd진실을 알아내려면 어떻게 해야 할까요?

답변1

해결책을 찾는 것만으로는 충분하지 않다고 생각하지만 D-Bus 로그를 보는 것만으로도 올바른 길을 찾을 수 있었습니다.

그래서 알림을 켜는 동안 다음 명령을 실행했습니다 d-feet.

dbus-monitor >log

로그에서 해당 거래소를 찾을 수 있습니다.

method call time=1656781561.510107 sender=:1.75 -> destination=:1.48 serial=325 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
   string "Test"
   uint32 0
   string "computer"
   string "Title"
   string "Body"
   array [
   ]
   array [
   ]
   int32 1
error time=1656781561.510300 sender=:1.61 -> destination=:1.75 error_name=org.freedesktop.DBus.Error.UnknownMethod reply_serial=325
   string "Method "Notify" with signature "susssasa{sv}i" on interface "org.freedesktop.Notifications" doesn't exist
"

저와 같은 정보가 들어있어요.또한 통신 서비스의 ID도 포함됩니다.. 아래 스크린샷에 표시된 것처럼 메서드 호출이 :1.75( d-tree자체) 에서 :1.48D-Bus 서비스로 전송되는 것을 볼 수 있습니다.xfce4-notifydd-tree

d-tree의 xfce4-notified에서 제공하는 D-Bus 서비스

하지만, 오류는 에서 발생합니다 :1.61. 이를 살펴보면 다른 서비스가 메소드 호출로 무언가를 수행했음을 의미한다는 것을 d-tree알았습니다 .eavesdrop=true

D-tree의 또 다른 예상치 못한 서비스

여기저기 돌아다니다 드디어 발견했어요D-bus session.conf의 도청 지원 중단에 관한 기사. 내 시스템을 검색한 후 /usr/share/dbus-1/session.conf다음 패치를 적용하고 세션을 다시 시작했습니다. 이제 모든 것이 괜찮습니다!

-    <allow send_destination="*" eavesdrop="true"/>
+    <allow send_destination="*" eavesdrop="false"/>
     <!-- Allow everything to be received -->
-    <allow eavesdrop="true"/>
+    <allow eavesdrop="false"/>

제가 이해한 바로는 원래 서비스는 잘 작동하지만 다른 서비스가 이를 처리하려고 시도했지만 올바른 Notify방법이 없거나 서명이 잘못되어 실패했습니다. 이 버그가 어디서 발생하는지 모르겠습니다. 올바른 수정은 이를 식별하는 것을 의미합니다. 그러나 해결 방법은 원래 문제를 해결하는 것 같습니다.


편집하다:를 실행하여 범인을 찾았습니다 grep -r freedesktop.Notifications ~/.local. 업데이트를 하지 않은 것으로 나타났습니다발견 범위, 관리되지 않습니다 apt. 실행 pip install --upgrade discover-overlay하고 변경 사항을 로 되돌린 후 /usr/share/dbus-1/session.conf모든 것이 정상으로 돌아왔습니다!

관련 정보