Не может изменить настольный фон с crontab

Я запланировал задание в crontab для изменения настольного фона случайным образом, каждую минуту в Lubuntu, с помощью следующего сценария:

#!/bin/bash
export DISPLAY=:0
PHOTOS_PATH=~/Pictures/wallpapers/
number_of_photos=$(ls $PHOTOS_PATH | wc -l)

# generates a random number in range 1 through $number_of_photos
random=$( shuf -i 1-$number_of_photos -n 1 )

# returns the name of the file at line number $random of `ls` output
photo_file=$(ls $PHOTOS_PATH | head --lines=$random | tail --lines=1)

pcmanfm --set-wallpaper=$PHOTOS_PATH/$photo_file
exit 0

Но каждую минуту, следующее сообщение об ошибке появляется на экране:

enter image description here

Проблема со строкой сценария, который дает команду pcmanfm, с тех пор (согласно моим экспериментам) это сообщение появляется точно при выполнении той команды. Я также запустил этот скрипт из tty1, и он изменил мое настольное образование успешно без ошибки. Как я могу преодолеть эту проблему с crontab?

1
задан 26 March 2018 в 15:29

1 ответ

Вот моя версия Вашего сценария. Этим подходом мы не должны волноваться, какую переменную среды мы должны экспортировать, потому что мы экспортирующий все доступные переменные для сессии текущего пользователя.

#!/bin/bash

# NAME: lubuntu-wp-changer

# Initial variables
ITEMS_PATH="$HOME/Pictures/wallpapers"
ITEMS=("$ITEMS_PATH"/*)

# Check whether the user is logged-in, if yes export the current desktop session environment variables
[ -z "$(pgrep lxsession -n -U $UID)" ] && exit 0 || export $(xargs -0 -a "/proc/$(pgrep lxsession -n -U $UID)/environ") >/dev/null

# Generates a random number in the range determinated by the number of the items in the array ${ITEMS[@]}
ITEM=$(( ($RANDOM) % ${#ITEMS[@]} ))

# Set the wallpaper
pcmanfm --set-wallpaper="${ITEMS[$ITEM]}"

exit 0

Вот мой Cronjob что, изменяя обои каждые три секунды:

* * * * * bash -c 'for i in {1..20}; do $HOME/lubuntu-wp-changer; sleep 3; done'

Вот результат:

enter image description here

Больше деталей могло быть найдено в моем проекте GitHub: cron-gui-launcher.

0
ответ дан 8 December 2019 в 01:49

Другие вопросы по тегам:

Похожие вопросы: