Eine Anwendung benötigt zwei Dinge, um ein Fenster auf einer X-Anzeige zu öffnen. Es muss die Position der X-Anzeige kennen. Das wird durch die DISPLAYUmgebungsvariable vermittelt . Es muss sich auch beim X-Server authentifizieren. Dies wird durch ein Cookie übertragen, bei dem es sich um einen geheimen Wert handelt, der vom X-Server beim Start generiert und in einer Datei gespeichert wird, auf die nur der Benutzer zugreifen kann, der den X-Server gestartet hat. Die Standard-Cookie-Datei ist ~/.Xauthority.
Alternativ funktioniert das Ausführen des Programms als Benutzer, der den X-Server ausführt, vorausgesetzt, die Cookie-Datei befindet sich am Standardspeicherort (andernfalls müssen Sie die Cookie-Datei wie im Root-Fall suchen). Fügen Sie die UserDirektive hinzu (z User=dogs. B. ).
Natürlich wird der Dienst nicht ausgeführt, wenn für diese Nummer des von Ihnen angegebenen Benutzers keine X-Anzeige vorhanden ist.
Es ist ziemlich bizarr, ein GUI-Programm von Systemd aus zu starten. Es war nicht dafür ausgelegt. GUI-Programme befinden sich in einer X-Sitzung, die von einem Benutzer gestartet wurde. Systemd ist für Systemprozesse. Sie sollten stattdessen mit Dämonen experimentieren.
systemctl --user
. Auch dieDISPLAY
Variable spielt dann keine Rolle. Schauen Sie hier .Sie können hinzufügen
.xinitrc
:Für mich geht das!
quelle