走っている間
/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 -i
1001は私のユーザーIDです。
このヒントはより一般的で、おそらくより良いでしょう。質問:ユーザーに代わってグラフィックUIに基づいてcronジョブを実行する正しい方法は何ですか?
- ユーザーがグラフィックUI(xfce、gnomeなど)を実行していない場合は実行されません。
- 実際にジョブを実行できるように環境を正しく設定してください。
そうでなければ(GUIセッションで始まるループスクリプトに加えてcron
)何ですか?sleep
編集2:これhttps://unix.stackexchange.com/a/111190/140503便利でシンプルなソリューションのようです。その間、作業に適したものがない場合は、重複して終了できます。