
Вы можете определить, активна ли заставка пользователя, с помощью:
gnome-screensaver-command -q
Я пытаюсь создать демона для выполнения действий, когда пользователь неактивен, но я обнаружил, что эта команда всегда возвращает false, если не запущена из сеанса пользователя. Например, все эти варианты сообщают, что заставка неактивна, даже если она активна:
sudo gnome-screensaver-command -q
sudo -u myuser gnome-screensaver-command -q
Почему это происходит, и как мне проверить статус экрана пользователя из-под другого пользователя, например root?
решение1
Я знаю, что уже немного поздно, но, возможно, другие люди смогут прочитать ответ сейчас.
Проблема с dbus. Вам нужно экспортировать правильную переменную перед запуском gnome-screensaver-command
.
Сначала вам нужно узнать uid пользователя. Я также экспортировал uid DISPLAY
пользователя. Вы можете получить его значение с помощью командыw
sudo -u myuser DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID_OF_MYUSER/bus DISPLAY=:0 gnome-screensaver-command --query
Это работало с Debian 9 иgnome-screensaver-command 3.6.1