Benutzerleerlaufzeit zurückgesetzt auf 0 nach 30 Sekunden auf Linux
-
12-10-2019 - |
Frage
Ich versuche, Zeit seit der letzten Benutzereingabe zu erkennen. Ich mache regelmäßig Anrufe XScreenSaverQueryInfo
die Leerlaufzeit zu erhalten. Das Problem, das ich bin vor, dass nach jeweils 20 bis 30 Sekunden der Leerlaufzeit, wie durch diesen Aufruf gemeldet, setzt auf 0. Dies geschieht, obwohl es keine tatsächlichen Benutzereingaben in dieser Zeit war. Ich bin total durch diese verwirrt. Das einzige, führen die ich habe ist, dass das Problem verschwindet, wenn ich gnome-screensaver
deinstallieren. Meine Frage ist, tut die gnome-screensaver
Simulieren Benutzereingaben aus irgendeinem Grund? Ich weiß, es klingt unwahrscheinlich, und wenn ja, es wird auf jeden Fall ein Fehler mit gnome-screensaver
sein, aber ich kann jetzt nicht an nichts anderes denken. Weiß jemand, wo ich mehr Informationen darüber, wie gnome-screensaver
funktioniert und wie es beeinflusst die XScreenSaverQueryInfo
Aufruf durch den Code zu gehen, ohne tatsächlich finden kann. Ich habe durch die Informationen gegangen bei gnome-screensaver
Hause konnte aber nichts relevant für mein Problem finden.
Aktualisieren : Ich habe die folgende Ausgabe von dbus-Monitor. Wie interpretiere ich diese:
method call sender=:1.97538 -> dest=org.gnome.ScreenSaver serial=3 path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=SimulateUserActivity
Ich denke, einig Prozess gnome-screensaver zu SimulateUserActivity bittet. Oder ist gnome-screensaver ein SimulateUserActivity Signal zu dbus Senden? Wenn es das erste ist, wie kann ich herausfinden, welches Verfahren gnome-screensaver bittet, das zu tun?
Lösung
Wenn Sie die dbus Sender (wie auf dbus-Monitor angezeigt dort) Sie tun können:
dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID string:':1.97538'
in dem eigentlichen Sender anschließen. Das gibt Ihnen die pid, der die Nachricht schickt.
sagen Dann wird die pid 2144, würden Sie tun:
cat /proc/2144/cmdline
als eine Möglichkeit, um zu sehen, was das Programm ist.
Andere Tipps
Ein Programm (Video-Player tut dies während der Videowiedergabe) könnte einen gnome-screensaver-command --poke
Befehl aussenden, die ein SimulateUserActivity
Ereignis senden die Leerlaufzeit zurückzusetzen, den Bildschirmschoner aktiv wird verhindert.