Cómo determinar si el protector de pantalla está activo en otra sesión

Cómo determinar si el protector de pantalla está activo en otra sesión

Puedes detectar si el salvapantallas de un usuario está activo a través de:

gnome-screensaver-command -q

Estoy intentando crear un demonio para realizar acciones cuando el usuario está inactivo, pero encuentro que este comando siempre devuelve falso cuando no se ejecuta desde dentro de la sesión del usuario. Por ejemplo, todas estas variantes informan que el protector de pantalla está inactivo, incluso cuando está activo:

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

¿Por qué sucede esto y cómo verifico el estado de la pantalla de un usuario desde un usuario diferente como root?

Respuesta1

Sé que es un poco tarde, pero tal vez otras personas puedan leer la respuesta ahora.

El problema está en dbus. Debe exportar la variable correcta antes de ejecutar el archivo gnome-screensaver-command.

Primero necesitas saber el uid del usuario. Exporté también el DISPLAYdel usuario. Puedes obtener su valor usando el comando.w

sudo -u myuser DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID_OF_MYUSER/bus DISPLAY=:0 gnome-screensaver-command --query

Esto funcionó con Debian 9 ygnome-screensaver-command 3.6.1

información relacionada