在 xfce4 中从 cron 设置壁纸

在 xfce4 中从 cron 设置壁纸

我编写了一个小脚本createCountdownWallpaper.py,用于/tmp/wallpaper.png每隔几分钟重新渲染一次壁纸,setWallpaper.sh其脚本如下所示:

#!/bin/bash
cd /home/path/to/countdown
/usr/bin/python3.5 createCountdownWallpaper.py

xfconf-query  \
  --channel xfce4-desktop \
  --property /backdrop/screen0/monitor0/workspace0/last-image \
  --set /tmp/wallpaper.png

通道和property已使用-m标志进行选择xfconf-query,如中所述这个答案。从终端运行时它可以工作。但是,从运行时cron,它似乎没有效果。Crontab:

SHELL=/bin/bash

*/1 * * * * /home/path/to/countdown/setWallpaper.sh 2>/tmp/cron_errors.txt

我也尝试过获取各种.bashrc脚本.profile并设置环境变量,例如

DBUS_SESSION_BUS_ADDRESS=unix:abstract=tmp/dbus-r4nd0MjunK

但这也无济于事。

答案1

运行之前执行此操作xfconf-query

PID=$(echo $(ps -C xfce4-session -o pid=))                                      
export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)

答案2

以下组合似乎有效,它每分钟重新渲染并更改背景。

SHELL=/bin/bash

*/1 * * * * yourUsername source $HOME/.profile ; source $HOME/.bashrc; env DISPLAY=:0.0 /home/path/to/countdown/setWallpaper.sh 2>/tmp/cron_errors.txt

提示:

  • DBUS_SESSION_BUS_ADDRESS似乎无所谓
  • Folder: /tmpGUI“桌面”菜单中的设置事情
  • N必须在 XFCE-gui 中停用壁纸设置中每分钟自动更换壁纸的功能

相关内容