다른 세션에서 화면 보호기가 활성화되어 있는지 확인하는 방법

다른 세션에서 화면 보호기가 활성화되어 있는지 확인하는 방법

다음을 통해 사용자의 화면 보호기가 활성화되어 있는지 확인할 수 있습니다.

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

이것은 데비안 9에서 작동하며gnome-screensaver-command 3.6.1

관련 정보