从 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 -i,其中 1001 是我的用户 ID。

这提示更通用并且可能更好问题:根据代表用户的图形 UI 运行 cron 作业的正确方法是什么?

  • 如果用户没有运行图形 UI(xfce、gnome、...),则不会运行
  • 正确设置环境以真正能够运行作业

如果不是,那么(除了与 GUI 会话一起启动的cron循环脚本之外)呢?sleep

编辑2:这个https://unix.stackexchange.com/a/111190/140503看起来是一个有用且足够简单的解决方法。如果同时没有更适合该任务的内容,我们可以将其作为重复项关闭。

相关内容