Die wahrscheinlichste Erklärung ist, dass gnome-screensaver-command, wenn es in dem von udev bereitgestellten Kontext ausgeführt wird, keine Ahnung hat, wessen Bildschirmschoner auf welcher Anzeige es steuern soll - es wird nicht unter Ihrem Benutzerkonto ausgeführt und verfügt nicht über die Umgebung Variablen, die während Ihrer X-Benutzersitzung verbreitet werden.
Ein Ansatz, der wahrscheinlich funktionieren kann:
- Führen Sie gnome-screensaver-command unter einem su für Ihren Benutzer aus
- Stellen Sie sicher, dass die Umgebungsvariable DISPLAY auf den gleichen Wert wie in einem Terminal Ihrer X-Sitzung gesetzt ist
- Stellen Sie sicher, dass die Verbindungsautorität für Ihre X-Sitzung eingerichtet ist. Dies erfordert einige Spielereien mit xauth und / oder xhost. Die Details hängen sehr von Ihrem genauen Setup ab
Um das Problem genauer zu erläutern: X11, das gnome als Infrastruktur verwendet, ermöglicht Szenarien wie "mehrere unabhängige Sitzungen, bei denen möglicherweise unterschiedliche Benutzerkonten angemeldet sind, die über Funktionstasten umschaltbar sind oder mit verschiedenen Monitoren und Mäusen / Tastaturen verkabelt sind "(" Multiseat ") und" die eigentliche Sitzung läuft auf einem anderen Rechner als dem, an den Monitor und HID-Geräte angeschlossen sind "(" XDMCP "ist hier das Schlüsselwort). "Eine Sitzung, ein Benutzer" ist eigentlich nur ein möglicher Anwendungsfall, und der einzige, in dem ein Befehl, der in einer solchen Sitzung irgendetwas stört, ohne Teil davon zu sein, richtig reagieren kann - es sind jedoch keine besonderen Vorkehrungen eingebaut für diesen Fall.