[console]#!/bin/bash
COUNTER=0
while [ $COUNTER ]; do
sleep 3600;
FN=`wget -q http://fotobash.ru/random.php -O -`;
ID=`echo $FN | sed 's/http:\/\/сайт.ru\/pic\///'`;
wget -q $FN -O /tmp/$ID;
`DISPLAY=":0" /usr/bin/gconftool-2 --set --type string /desktop/gnome/background/picture_filename /tmp/$ID`
let COUNTER=COUNTER+1
done[/console]
этот скрипт меняет обои на рабочем столе gnome 2.* которые берет с сайта, как допилить так что бы он брал обои с определенной папки?
Автоматическая смена обоев gnome через bash
а в общем вот скрипт, он уже готов, но громоздкий и использует xml заголовки
Показать
#!/bin/bash
# Скрипт автоматической смены обоев для среды GNOME 2
# Настройки констант
declare -r FILENAME="$HOME/wallpaper.xml"
declare -r TMP_FILE="tmp.$$"
declare -r TMP_LS="LS_$TMP_FILE"
declare -r TITLE="Выберите файл"
declare -r FILTER="*.jpg *.JPG *.png *.PNG"
declare -r VIEWER=`which eog`
declare -r DEFAULT_STATIC=10
declare -r DEFAULT_SLIDE=2
# Выбираю режим работы
_MODE=0
zenity --question --ok-label="Файлы" --cancel-label="Папку" \
--title="Выбор режима работы" \
--text="Выбирать картинки пофайлово или закатать целую папку?" || _MODE=1
# Запрашиваю время между сменой обоев
tmp=$(zenity --entry --title="Период смены картинок..." \
--text="Введите время задержки между сменой катринок в минутах:" \
--entry-text $DEFAULT_STATIC)
if [ -z ${tmp} ]; then exit 1; fi
# Запрашиваю время перехода
slide_period=$(zenity --entry --title="Время перехода..." \
--text="Введите время перехода между обоями в секундах:" \
--entry-text $DEFAULT_SLIDE)
if [ -z ${slide_period} ]; then exit 1; fi
# Перевожу время задержки в секунды
tmp=$((tmp*60-slide_period))
if [ $tmp -le 30 ];then exit 1; fi
static_period=$tmp.0
slide_period=$slide_period.0
# Создаю шапку XML-скрипта
echo "<!-- This XML-script is created by the bash-script written by Wlad Terehov for http://my.mail.ru/community/win_xp -->" > $TMP_FILE
echo "<background>" >> $TMP_FILE
echo " <starttime>" >> $TMP_FILE
echo " <hour>0</hour>" >> $TMP_FILE
echo " <minute>00</minute>" >> $TMP_FILE
echo " <second>01</second>" >> $TMP_FILE
echo " </starttime>" >> $TMP_FILE
echo "<!-- this creates an arbitrary start time of 12 am -->" >> $TMP_FILE
# Функция пофайлового выбора слайдов
fn_from_file()
{
echo " <static>" >> $TMP_FILE
echo " <duration>$static_period</duration>" >> $TMP_FILE
# Запрашиваю первый слайд
first_slide=$(zenity --file-selection --file-filter="$FILTER" --title "$TITLE")
if [ -z "${first_slide}" ]; then exit 1; fi
[ -f "$VIEWER" ] && eog "$first_slide"&
echo " <file>$first_slide</file>" >> $TMP_FILE
echo " </static>" >> $TMP_FILE
picture_file="$first_slide"
# Создаю цикл запросов последующих слайдов
while true; do
second_slide=$(zenity --file-selection --file-filter="$FILTER" --filename="$picture_file" --title="$TITLE")
# При выборе отмены заканчиваю цикл
if [ -z "${second_slide}" ];then
second_slide="$picture_file"
break
else
[ -f "$VIEWER" ] && eog "$second_slide"&
echo " <transition>" >> $TMP_FILE
echo " <duration>$slide_period</duration>" >> $TMP_FILE
echo " <from>$picture_file</from>" >> $TMP_FILE
echo " <to>$second_slide</to>" >> $TMP_FILE
echo " </transition>" >> $TMP_FILE
echo " <static>" >> $TMP_FILE
echo " <duration>$static_period</duration>" >> $TMP_FILE
echo " <file>$second_slide</file>" >> $TMP_FILE
echo " </static>" >> $TMP_FILE
# Обновляю переменные
picture_file="$second_slide"
fi
done
}
# Фукция обработки целой папки
fn_from_dir()
{
echo " <static>" >> $TMP_FILE
echo " <duration>$static_period</duration>" >> $TMP_FILE
dir_name=$(zenity --file-selection --directory --title="Выберите папку с картинками")
if [ -z "${dir_name}" ]; then exit 1; fi
# Цикл обработки картинок
first_slide="empty"
second_slide="empty"
# Помещаю во временный файл список всех файлов с заданными расширениеми
for e in $FILTER; do
f=`echo "$e"|tail -c 5`
echo "`ls $dir_name|grep $f`" >> "$TMP_LS"
done
while read i; do
if [ -n "${i}" ]; then
# Сохраняю путь к первому слайду
if [ "$first_slide" == "empty" ]; then
first_slide="$dir_name/$i"
echo " <file>$dir_name/$i</file>" >> $TMP_FILE
echo " </static>" >> $TMP_FILE
else
echo " <transition>" >> $TMP_FILE
echo " <duration>$slide_period</duration>" >> $TMP_FILE
echo " <from>$dir_name/$second_slide</from>" >> $TMP_FILE
echo " <to>$dir_name/$i</to>" >> $TMP_FILE
echo " </transition>" >> $TMP_FILE
echo " <static>" >> $TMP_FILE
echo " <duration>$static_period</duration>" >> $TMP_FILE
echo " <file>$dir_name/$i</file>" >> $TMP_FILE
echo " </static>" >> $TMP_FILE
fi
second_slide="$i"
fi
done < "$TMP_LS"
# Добавляю к имени последнего файла путь,
# дабы правильно отработала концовка скрипта
second_slide="$dir_name/$second_slide"
}
if [ $_MODE == 1 ]; then
fn_from_dir
else
fn_from_file
fi
# Завершаю скрипт переходом на первый пункт серии
echo " <transition>" >> $TMP_FILE
echo " <duration>$slide_period</duration>" >> $TMP_FILE
echo " <from>$second_slide</from>" >> $TMP_FILE
echo " <to>$first_slide</to>" >> $TMP_FILE
echo " </transition>" >> $TMP_FILE
echo "</background>" >> $TMP_FILE
# Закрепляю скрипт и удаляю времянки
mv "$TMP_FILE" "$FILENAME"
[ -f $TMP_LS ] && rm $TMP_LS
# Подключаю полученный XML-скрипт к обоям GNOME-среды
gconftool-2 --set "/desktop/gnome/background/picture_filename" --type string "$FILENAME"
exit 0
Для запуска скрипта запускаем терминал, и создаем в nano пустой файл:
nano ~/.wallpaper
даем скрипту право на исполнение:
chmod +x ~/.wallpaper
и запускаем:
~/.wallpaper


далее выбираем папку с картинками и все
#!/bin/bash
COUNTER=0
while [ $COUNTER ]; do
sleep 3600;
`DISPLAY=":0" /usr/bin/gconftool-2 --set --type string /desktop/gnome/background/picture_filename "$(pwd)/$[$RANDOM % $(ls |wc -l)].jpg"`
let COUNTER=COUNTER+1
doneКак-то так.
Файлы должны быть пронумерованы от 1.jpg
Скрип должен быть в папке с обоями.