
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 DISPLAY
des 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