我将 xscreensaver 作为用户服务运行,发现它经常无法启动。状态显示DISPLAY not set
.
我已将服务定义更改为现在重试,这似乎有效
[Unit]
Description=XScreenSaver
StartLimitInterval=200
StartLimitBurst=5
[Service]
ExecStart=/usr/local/bin/xscreensaver -nosplash
Restart=always
RestartSec=30
[Install]
WantedBy=default.target
有一个更好的方法吗?我的猜测是,因为这是一项用户服务,所以有时它会在用户环境完全设置之前启动。理想情况下,启动将等待 DISPLAY 设置。
重启策略看起来很粗糙,但也许这是我能做的最好的事情。
答案1
我找到了你的问题,对我来说它失败了一半。
[Service]
Environment=DISPLAY=:0
ExecStart=/usr/bin/xscreensaver -nosplash
更新:
这是我的用户 xscreensaver systemd 用户单元的内容,它现在 100% 工作。 // ~/.config/systemd/user/xscreensaver.service
[Unit]
Description=XScreenSaver
After=graphical.target
[Service]
Environment=DISPLAY=:0
ExecStart=/usr/bin/xscreensaver -nosplash
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=graphical.target
我认为它失败了,因为它尝试启动一次,但还没有准备好图形会话(有时是这样,我记得有一半的时间)。