cronから呼び出すとxfconf-queryが機能しなくなります/各cronに対してUI関連プログラムを実行する方法は?

cronから呼び出すとxfconf-queryが機能しなくなります/各cronに対してUI関連プログラムを実行する方法は?

走っている間

/usr/bin/xfconf-query -v -c xfce4-desktop \
  -p /backdrop/screen0/monitorHDMI-1/workspace0/last-image \
  -s $HOME/Photos/somephoto.jpg

コマンドラインで期待どおりに背景画像を設定します。

実行するとcron機能しません。コマンドラインに上記のプレフィックスを追加してもenv -i機能しないため、環境変数に違いがある可能性があります。

少し迷惑なのは、エラー出力がなく、終了コードまで0すべてが問題ないようです。確認しましたが/var/syslog出力がありません。 (コマンドラインには出力がなく、cron出力をキャプチャする方法を知っているので問題になりません。)

出力を試してみて、envこれらすべてのXDG_*変数は確かに良い候補ですが、誰かが実際に関連していて、理想的にはそれをどこに記録するのかを知ることができれば良いでしょう。

編集:DISPLAY=0.0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/busトリックの一部として、env -i1001は私のユーザーIDです。

このヒントはより一般的で、おそらくより良いでしょう。質問:ユーザーに代わってグラフィックUIに基づいてcronジョブを実行する正しい方法は何ですか?

  • ユーザーがグラフィックUI(xfce、gnomeなど)を実行していない場合は実行されません。
  • 実際にジョブを実行できるように環境を正しく設定してください。

そうでなければ(GUIセッションで始まるループスクリプトに加えてcron)何ですか?sleep

編集2:これhttps://unix.stackexchange.com/a/111190/140503便利でシンプルなソリューションのようです。その間、作業に適したものがない場合は、重複して終了できます。

関連情報