Я написал небольшой скрипт 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

но это тоже не помогло.

2 ответа2

1

Выполните это перед запуском xfconf-query:

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

Следующая комбинация, похоже, сработала, она рендерится и меняет фон каждую минуту.

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: /tmp в меню "Рабочий стол" графического интерфейса имеет значение
  • Автоматическая смена обоев каждые N минут должна быть отключена в XFCE-gui для настройки обоев.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .