Como determinar se o protetor de tela está ativo em outra sessão

Como determinar se o protetor de tela está ativo em outra sessão

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 DISPLAYdo 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

informação relacionada