跑步时
/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看起来是一个有用且足够简单的解决方法。如果同时没有更适合该任务的内容,我们可以将其作为重复项关闭。