Время простоя пользователя сбрасывается на 0 через 30 секунд в Linux - PullRequest
0 голосов
/ 18 января 2011

Я пытаюсь определить время с момента последнего ввода пользователя с помощью клиентской библиотеки расширения X11 Screen Saver. Я делаю периодические звонки на XScreenSaverQueryInfo, чтобы получить время простоя. Проблема, с которой я сталкиваюсь, заключается в том, что через каждые 20-30 секунд время простоя, как сообщается в этом вызове, сбрасывается до 0. Это происходит, даже если в это время не было никакого действительного пользовательского ввода. Я полностью озадачен этим. Единственное, что у меня есть, - проблема исчезнет, ​​если я удалю gnome-screensaver. У меня вопрос: gnome-screensaver имитирует ли пользовательский ввод по какой-то причине? Я знаю, что это звучит маловероятно, и если это произойдет, это определенно будет ошибка с gnome-screensaver, но я не могу думать ни о чем другом прямо сейчас. Кто-нибудь знает, где я могу найти больше информации о том, как работает gnome-screensaver и как он влияет на вызов XScreenSaverQueryInfo без необходимости проходить через код. Я просмотрел информацию на gnome-screensaver home , но не смог найти ничего, имеющего отношение к моей проблеме.

Обновление : я получил следующий вывод от dbus-monitor. Как мне это интерпретировать:

method call sender=:1.97538 -> dest=org.gnome.ScreenSaver serial=3 path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=SimulateUserActivity

Я думаю, что какой-то процесс запрашивает заставку gnome для SimulateUserActivity. Или гном-заставка отправляет сигнал SimulateUserActivity на dbus? Если это первое, как я могу узнать, какой процесс запрашивает у gnome-screensaver?

Ответы [ 2 ]

2 голосов
/ 18 января 2011

Получив отправитель dbus (как показано на dbus-monitor), вы можете сделать:

dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID string:':1.97538'

подключение фактического отправителя. Это дает вам pid, который отправляет сообщение.

Тогда скажите, что pid - 2144, вы бы сделали:

cat /proc/2144/cmdline

как способ узнать, что это за программа.

1 голос
/ 18 января 2011

Программа (видеопроигрыватели делают это во время воспроизведения видео) может отправлять команду gnome-screensaver-command --poke, которая отправит событие SimulateUserActivity для сброса времени простоя, что помешает активизации заставки.

...