오류의 명백한 부분은 볼륨을 변경할 때 여러 알림을 받는다는 것입니다.
증상은 비슷해 보임AskUbuntu에 대한 질문하지만 이건 다른 이유일 수도 있고 제가 실제로 우분투를 사용하지 않아서 새로운 질문을 드립니다.
몇번의 고민 끝에 이상한 점을 발견했습니다. D-Bus 서비스 Notify
의 메소드를 호출하면 xorg.freedesktop.Notifications
알림을 표시할 수 있지만 오류가 반환됩니다.
나는 이것을 d-feet
D-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.16
및 xfce4-pulseaudio-plugin=0.4.3-1
. 또한 실제로 다음에서 제공됩니다.xfce4-notifyd=0.6.3-1
dbus=1.14.0-1
xorg.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.48
D-Bus 서비스로 전송되는 것을 볼 수 있습니다.xfce4-notifyd
d-tree
하지만, 오류는 에서 발생합니다 :1.61
. 이를 살펴보면 다른 서비스가 메소드 호출로 무언가를 수행했음을 의미한다는 것을 d-tree
알았습니다 .eavesdrop=true
여기저기 돌아다니다 드디어 발견했어요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
모든 것이 정상으로 돌아왔습니다!