Festlegen des Basisverzeichnisses von xscreensaver mit systemd

801
limp_chimp

Ich habe eine systemd-Benutzereinheit geschrieben, um xscreensaver zu starten, da ich möchte, dass er automatisch startet. So sieht es aus:

# ~/.config/systemd/user/xscreensaver.service [Unit] Description=XScreensaver  [Service] Type=simple ExecStart=/run/current-system/sw/bin/xscreensaver -no-splash Restart=always  [Install] WantedBy=multi-user.target 

Das fängt an; Es folgt jedoch nicht der Konfiguration, die ich angelegt habe (wie wenn ich sie nur manuell starte). Ich denke, das liegt daran, dass das HOME-Verzeichnis nicht gesetzt ist (xscreensaver sucht ~/.xscreensavernach seiner Konfiguration). Aber auch in einer Zeile hinzufügen

Environment=HOME=/home/username 

In dem [Service]Abschnitt in meiner Einheit wird dies nicht behoben. Es liest die Konfigurationsdatei immer noch nicht. Soweit ich weiß, hat xscreensaver kein Befehlszeilenargument, um den Pfad zur Konfigurationsdatei anzupassen. Was muss ich tun, um das richtige Basisverzeichnis an xscreensaver zu übermitteln?

EDIT: Nach näherer Betrachtung scheint es, dass xscreensaver wird auf der rechten Seite Config - Datei suchen; Es wird jedoch einfach kein Bild angezeigt (meine Konfiguration ist nur GLSlideshow, die auf ein Verzeichnis zeigt). Es kann sein, dass es nicht auf dem gesuchten Pfad etwas findet?

0

1 Antwort auf die Frage

0
limp_chimp

OK, I figured this one out. The problem was that GLSlideshow was expecting something (not exactly sure what) to be callable on its PATH, and systemd wasn't giving it the path. So what fixed it was:

[Unit] Description=XScreensaver [Service] Type=simple ExecStart=/run/current-system/sw/bin/xscreensaver -no-splash Restart=always Environment=HOME=/home/myusername Environment=PATH=/run/current-system/sw/bin [Install] WantedBy=multi-user.target 

(Note that the /run/current-system/sw/bin path is specific to my distribution, NixOS. It's possible that for more standard systems, e.g. ones that use /bin or /usr/bin, that this wouldn't come up.)

Vielleicht möchten Sie PATH in `/ etc / profile` oder so` / run / current-system / sw / bin` hinzufügen. Ich glaube nicht, dass Sie in einer Benutzereinheit auch "Environment = HOME =" einstellen müssen. Auch "multi-user.target" ist für eine Benutzereinheit nicht wirklich sinnvoll (ich bezweifle, dass Sie es auf diese Weise praktisch aktivieren können). Wahrscheinlich möchten Sie stattdessen `default.target`. Tom Yan vor 8 Jahren 0