X11 화면 보호기 확장 클라이언트 라이브러리를 사용하여 마지막 사용자 입력 이후 시간을 감지하려고합니다. 유휴 시간을 얻으려면 정기적으로 XScreenSaverQueryInfo
번으로 전화를 겁니다. 내가 직면하고있는 문제는 매 20-30 초 후에 유휴 시간이이 호출에 의해보고 된대로 0으로 다시 설정된다는 것입니다.이 시간에 실제 사용자 입력이 없더라도 발생합니다. 나는 이것으로 완전히 혼란 스럽다. 유일한 단서는 내가 gnome-screensaver
을 제거하면 문제가 사라진다는 것입니다. 제 질문은 gnome-screensaver
이 어떤 이유로 사용자 입력을 시뮬레이트합니까? 나는 그럴 가능성이 없다는 것을 알고 있으며, 그렇다면 gnome-screensaver
을 가진 버그가 될 것이 분명합니다. 그러나 지금 당장은 다른 것을 생각할 수 없습니다. 누구든지 gnome-screensaver
이 어떻게 작동하고 실제로 코드를 통과하지 않고도 XScreenSaverQueryInfo
호출에 영향을 미치는 방식에 대한 정보를 어디서 찾을 수 있는지 알고 있습니까? gnome-screensaver
home에있는 정보를 살펴 보았지만 문제와 관련이 없습니다.Linux에서 30 초 후 사용자 유휴 시간이 0으로 재설정 됨
업데이트 : dbus-monitor에서 다음 출력을 받았습니다. 어떻게 해석합니까 :
method call sender=:1.97538 -> dest=org.gnome.ScreenSaver serial=3 path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=SimulateUserActivity
나는 어떤 프로세스가 gnome-screensaver에 SimulateUserActivity를 요구하고 있다고 생각합니다. 또는 gnome-screensaver가 dbus에 SimulateUserActivity 신호를 보내고 있습니까? 첫 번째 경우, 어떤 프로세스가 gnome-screensaver에 그렇게하도록 요청하는지 어떻게 알 수 있습니까?
나는 그것을했다. 그것은 말합니다 : 오류 org.freedesktop.DBus.Error.NameHasNoOwner : 이름 ': 1.ddddd'의 PID를 가져올 수 없습니다. 그런 이름이 없습니다. 여기에서 1.ddddd는 실제 발신자입니다. – 341008
은 연결 대상을 가리키고 SimulateUserActivity를 전송 한 다음 연결을 끊고 조사 할 수 있습니다. 위의 gnome-screensaver-command -poke를 참고하십시오. gnome-screensaver-command를 쉘 스크립트로 대체하는 제안은 흥미 롭습니다. –