xscreensaver systemd 用户服务初始化:等待显示

xscreensaver systemd 用户服务初始化:等待显示

我将 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

我认为它失败了,因为它尝试启动一次,但还没有准备好图形会话(有时是这样,我记得有一半的时间)。

相关内容