Я написал сценарий оболочки, который загружает случайные обои с веб-страницы и устанавливает его в качестве фона каждые 5 часов. Вот сценарий:
#!/bin/bash
countervar=1;
finish=0;
cd /home/guinness/.rwallpaper/
if [ -f counter ]
then
countervar=`cat counter`
fi
for (( i=$countervar; c<=2000000; i++ ))
do
echo $i > "counter"
if [ ! -f wallpaper-$i.jpg ]
then
wget "http://wallpapers.wallbase.cc/rozne/wallpaper-$i.jpg"
if [ -f wallpaper-$i.jpg ]
then
gsettings set org.gnome.desktop.background picture-uri "file:///home/guinness/.rwallpaper/wallpaper-$i.jpg"
exit
fi
fi
done
Если я запускаю этот скрипт, он работает как шарм. Я использую cron для запуска этого каждые 5 часов. Проблема в том, что он работает каждые 5 часов и успешно загружает следующее изображение, но не устанавливает его в качестве обоев. Может ли кто-нибудь сказать мне, что может быть проблемой?
Проблема, с которой вы сталкиваетесь, почти наверняка заключается в том, что часть переключения фона вашего сценария зависит от переменных среды из вашей X-сессии. Cron не устанавливает каких-либо переменных среды, поэтому это нарушит эту часть скрипта.
Чтобы обойти эту проблему, вы можете поместить скрипт в цикл while спящим примерно пять часов, а затем вызовите ваш скрипт в такое место, как /etc/X11/Xsession.d/my_script или ~ / .xprofile