
다음을 통해 사용자의 화면 보호기가 활성화되어 있는지 확인할 수 있습니다.
gnome-screensaver-command -q
사용자가 비활성 상태일 때 작업을 수행하는 데몬을 만들려고 하는데 이 명령이 사용자 세션 내부에서 실행되지 않으면 항상 false를 반환하는 것으로 나타났습니다. 예를 들어, 다음 변형은 모두 화면 보호기가 활성화된 경우에도 비활성 상태라고 보고합니다.
sudo gnome-screensaver-command -q
sudo -u myuser gnome-screensaver-command -q
이유는 무엇이며 루트와 같은 다른 사용자의 사용자 화면 상태를 어떻게 확인합니까?
답변1
조금 늦었다는 것을 알고 있지만 아마도 다른 사람들이 지금 답변을 읽을 수 있을 것입니다.
문제는 dbus에 있습니다. 를 실행하기 전에 올바른 변수를 내보내야 합니다 gnome-screensaver-command
.
먼저 사용자의 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