使用 systemd 设置 xscreensaver 的主目录

使用 systemd 设置 xscreensaver 的主目录

我编写了一个 systemd 用户单元来启动 xscreensaver,因为我希望它自动启动。它如下所示:

# ~/.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

它启动了;但是,它没有遵循我布置的配置(就像我手动启动它时一样)。我认为这是因为没有设置 HOME 目录(xscreensaver 查找~/.xscreensaver其配置)。但即使添加一行

Environment=HOME=/home/username

在我的单元中的部分中[Service]没有修复此问题;它仍然没有读取配置文件。据我所知,xscreensaver 没有命令行参数来自定义配置文件的路径。我需要做什么才能将正确的主目录传达给 xscreensaver?

编辑:经过仔细检查,似乎 xscreensaver查看正确的配置文件;但是,它根本就不显示任何图像(我的配置只是 GLSlideshow 指向一个目录)。可能是它在寻找的路径中找不到某些东西?

答案1

好的,我搞清楚了。问题在于 GLSlideshow 期望某个东西(不确定是什么)可以在其 PATH 上调用,而 systemd 没有为其提供路径。因此修复它的方法是:

[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

(请注意,该/run/current-system/sw/bin路径特定于我的发行版 NixOS。对于更标准的系统(例如使用/bin或 的系统/usr/bin),该路径可能不会出现。)

相关内容