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

1

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 achando que esse comando sempre retorna falso quando não executado de dentro da sessão do usuário. Por exemplo, todas essas variantes relatam que a proteção de tela está inativa, mesmo quando está ativa:

sudo gnome-screensaver-command -q
sudo -u myuser gnome-screensaver-command -q

Por que isso e como verifico o status da tela de um usuário de um usuário diferente, como o root?

    
por Cerin 04.10.2016 / 00:58

1 resposta

0

Eu sei que é um pouco tarde, mas talvez algumas outras pessoas possam ler a resposta agora.

O problema é com dbus. Você precisa exportar a variável correta antes de executar o gnome-screensaver-command .

Primeiro, você precisa saber o uid do usuário. Eu também exportei o DISPLAY do usuário. Você pode obter seu valor usando o comando w

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 e gnome-screensaver-command 3.6.1

    
por 07.10.2018 / 19:05