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
一度起動しようとしましたが、グラフィックセッションがまだ準備されていないので失敗したようです(たまにそうですが、半分くらいは覚えています)。