temps d'inactivité utilisateur étant remise à 0 après 30 secondes sur Linux
-
12-10-2019 - |
Question
Je suis en train de détecter fois depuis la dernière entrée d'utilisateur à l'aide de la bibliothèque client de l'écran X11 Saver extension. Je fais des appels périodiques à XScreenSaverQueryInfo
pour obtenir le temps d'inactivité. Le problème que je suis confronté est que, après toutes les 20-30 secondes le temps d'inactivité, tel que rapporté par cet appel, se remet à 0. Cela se produit même si il n'y a pas d'entrée d'utilisateur réel dans ce moment-là. Je suis tout à fait perplexe par cela. Le qu'aboutir j'est que le problème disparaît si je désinstaller gnome-screensaver
. Ma question est, fait les entrées utilisateur de gnome-screensaver
Simuler pour une raison quelconque? Je sais que cela semble peu probable, et si elle le fait, il sera très certainement un bug avec gnome-screensaver
, mais je ne peux pas penser à autre chose en ce moment. Est-ce que quelqu'un sait où je peux trouver plus d'informations sur la façon dont gnome-screensaver
fonctionne et comment il influe sur l'appel XScreenSaverQueryInfo
sans avoir à passer par le code. Je suis passé par l'info à gnome-screensaver
maison mais n'a pas pu trouver quoi que ce soit pertinent à ma question.
Mise à jour : Je suis la sortie suivante de dbus-moniteur. Comment puis-je interpréter ceci:
method call sender=:1.97538 -> dest=org.gnome.ScreenSaver serial=3 path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=SimulateUserActivity
Je pense que certains processus demande gnome-screensaver à SimulateUserActivity. Ou, est-gnome-screensaver envoyer un signal SimulateUserActivity à dbus? Si elle est la première, comment puis-je savoir quel processus demande gnome-screensaver de le faire?
La solution
Une fois que vous avez l'expéditeur dbus (comme indiqué sur dbus-moniteur là-bas) vous pouvez faire:
dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID string:':1.97538'
brancher l'expéditeur réel. Cela vous donne le pid qui est l'envoi du message.
Ensuite, dire le pid est 2144, vous feriez:
cat /proc/2144/cmdline
comme un moyen de voir ce que le programme est.
Autres conseils
Un programme (lecteurs vidéo fait cela tout en jouant la vidéo) pourrait être l'envoi d'une commande gnome-screensaver-command --poke
qui enverra un événement SimulateUserActivity
pour réinitialiser le temps d'inactivité qui empêchera écran devient actif.