
Você pode detectar se o protetor de tela de um usuário está ativo por meio de:
gnome-screensaver-command -q
Estou tentando criar um daemon para executar ações quando o usuário está inativo, mas estou descobrindo que esse comando sempre retorna falso quando não é executado dentro da sessão do usuário. Por exemplo, todas essas variantes relatam que o protetor de tela está inativo, mesmo quando está ativo:
sudo gnome-screensaver-command -q
sudo -u myuser gnome-screensaver-command -q
Por que isso acontece e como verifico o status da tela de um usuário de um usuário diferente, como root?
Responder1
Eu sei que é um pouco tarde, mas talvez outras pessoas possam ler a resposta agora.
O problema é com o dbus. Você precisa exportar a variável correta antes de executar o arquivo gnome-screensaver-command
.
Primeiro você precisa saber o uid do usuário. Exportei também o DISPLAY
do usuário. Você pode obter seu valor usando o comandow
sudo -u myuser DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID_OF_MYUSER/bus DISPLAY=:0 gnome-screensaver-command --query
Isso funcionou com o Debian 9 egnome-screensaver-command 3.6.1