LinuxForum.Fans
Тема

Автоматическая смена обоев gnome через bash

Автор: foozzi 3 сообщений 1608 просмотров
#197137

[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.* которые берет с сайта, как допилить так что бы он брал обои с определенной папки?

#197141

а в общем вот скрипт, он уже готов, но громоздкий и использует xml заголовки

Показать
text
#!/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




далее выбираем папку с картинками и все

#197353
text
#!/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
Скрип должен быть в папке с обоями.

Войдите или зарегистрируйтесь, чтобы ответить.