So ermitteln Sie, ob der Bildschirmschoner in einer anderen Sitzung aktiv ist

So ermitteln Sie, ob der Bildschirmschoner in einer anderen Sitzung aktiv ist

Ob der Bildschirmschoner eines Benutzers aktiv ist, können Sie folgendermaßen erkennen:

gnome-screensaver-command -q

Ich versuche, einen Daemon zu erstellen, der Aktionen ausführt, wenn der Benutzer inaktiv ist, aber ich stelle fest, dass dieser Befehl immer „false“ zurückgibt, wenn er nicht innerhalb der Benutzersitzung ausgeführt wird. Diese Varianten melden beispielsweise alle, dass der Bildschirmschoner inaktiv ist, selbst wenn er aktiv ist:

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

Warum ist das so und wie überprüfe ich den Status des Benutzerbildschirms von einem anderen Benutzer, beispielsweise Root, aus?

Antwort1

Ich weiß, dass es ein bisschen spät ist, aber vielleicht können jetzt andere Leute die Antwort lesen.

Das Problem liegt bei dbus. Sie müssen die richtige Variable exportieren, bevor Sie es ausführen gnome-screensaver-command.

Zuerst müssen Sie die UID des Benutzers kennen. Ich habe auch die DISPLAYdes Benutzers exportiert. Sie können den Wert mit dem Befehl abrufenw

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

Dies funktionierte mit Debian 9 undgnome-screensaver-command 3.6.1

verwandte Informationen