Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: свои картинки в слайд-шоу на рабочем столе  (Прочитано 20149 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nik-O-Lai

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
    • Конструктор рецептов блюд
Наверное почти все знают, что на рабочем столе может быть не статическая картинка, а  картинки из "пачки" слайд-шоу. Мне захотелось сделать свою, например из личных фотографий. Возможно есть какая-то утилита для этого, но не обнаружив ее я сделал скрипт на php . Если кто-то захочет повторить, я опишу процесс по шагам.
Если не установлен php-cli , то
sudo apt-get install php5-cli
Создаем в домашнем каталоге папку (например /home/myhomedir/wallpaper/ ) и копируем в нее картинки, которые будут автоматически сменяться на рабочем столе.
Затем в любом редакторе (предпочитаю geany) создаем сам скрипт (например wallpaper.php ) примерно такого содержания
#!/usr/bin/php
<?php
$dir
="/home/myhomedir/wallpaper/"// Каталог с картинками

$staticD="1795.0"// Длительность показа картинки (сек)
$transitionD="5";
$fout=fopen($dir."background.xml","w");
$head="<background>
\t<starttime>
\t\t<year>"
.date('Y')."</year>
\t\t<month>"
.date('m')."</month>
\t\t<day>"
.date('d')."</day>
\t\t<hour>00</hour>
\t\t<minute>00</minute>
\t\t<second>00</second>
\t</starttime>
<!-- This animation will start at midnight. -->\n"
;


fputs($fout,$head);

$dh  opendir($dir);
while (
false !== ($img readdir($dh))) {
    if(
substr($img,-4,4)==".jpg" || substr($img,-4,4)==".JPG" || substr($img,-4,4)==".gif" || substr($img,-4,4)==".GIF" || substr($img,-4,4)==".png" || substr($img,-4,4)==".PNG" || substr($img,-4,4)=="jpeg" || substr($img,-4,4)=="JPEG"){
$images[] = $img;
    }
}

$c=sizeof($images);
for(
$i=0;$i<$c;$i=$i+1){
    
$s=$i+1;
    if(
$s>=$c){$s=0;}
    
fputs($fout,"\t<static>\n\t\t<duration>".$staticD."</duration>\n\t\t<file>".$dir.$images[$i]."</file>\n\t</static>\n");
    
fputs($fout,"\t<transition>\n\t\t<duration>".$transitionD."</duration>\n\t\t<from>".$dir.$images[$i]."</from>\n\t\t<to>".$dir.$images[$s]."</to>\n\t</transition>\n");
}
fputs($fout,"</background>\n");
?>

Отредактируйте в ней только строку
$dir="/home/myhomedir/wallpaper/"; // Каталог с картинками
указав свой путь к картинкам.
Дайте права на выполнение скрипта
cmod u+x wallpaper.php
и, находясь в каталоге со скриптом, дайте команду
./wallpaper.php
или
php ./wallpaper.php
Врезультате в папке с картинками появится файл background.xml
Теперь правой кнопкой на рабочем столе "Изменить фон рабочего стола".
Жмем добавить, затем справа внизу на кнопке "Изображения"  выбираем "Все файлы"
Ищем наш каталог с картинками и в нем выбираем файл background.xml
Все, теперь ваш фон рабочего стола будет автоматически меняться и состоять из выбранных вами картинок.
Очень здорово получается, если в комплекте фотки из разных периодов жизни. Но это на любителя :)

denkin

  • Гость
Re: свои картинки в слайд-шоу на рабочем столе
« Ответ #1 : 28 Января 2011, 21:02:01 »
Ну что тут сказать? Спасибище!

Оффлайн Nik-O-Lai

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
    • Конструктор рецептов блюд
Re: свои картинки в слайд-шоу на рабочем столе
« Ответ #2 : 28 Января 2011, 21:25:08 »
А если кто-то напишет на bash или вообще с ГУИ, то я тоже скажу спасибище !  :) Все-таки на php не совсем оптимальный путь.

Оффлайн ZwS

  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн Nik-O-Lai

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
    • Конструктор рецептов блюд
Re: свои картинки в слайд-шоу на рабочем столе
« Ответ #4 : 28 Января 2011, 21:51:38 »
Оно! Спасибо за наводку и автору программы благодарность, то что нужно.

Оффлайн Ascaronter

  • Участник
  • *
  • Сообщений: 156
    • Просмотр профиля
Re: свои картинки в слайд-шоу на рабочем столе
« Ответ #5 : 29 Января 2011, 23:58:20 »
Это конечно хорошо, познавательно, php, но зачем? Есть гуёвая программа, которая всё это делает - CREBS
http://www.bubuntu.spb.ru/crebs-create-background-slideshow/

Для установки
sudo add-apt-repository ppa:crebs/ppa
sudo apt-get update && sudo apt-get install crebs
Находится в меню Система - Параметры

Оффлайн Nik-O-Lai

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
    • Конструктор рецептов блюд
Re: свои картинки в слайд-шоу на рабочем столе
« Ответ #6 : 30 Января 2011, 18:05:32 »
Спасибо, CREBS это то , что нужно. Дело не в познавательности, а неинформированности. Знал бы я раньше про эту утилиту, не пришлось бы изобретать. Хотя лишняя тренировка мозгам никогда не помешает :)

Оффлайн Fergot

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: свои картинки в слайд-шоу на рабочем столе
« Ответ #7 : 01 Февраля 2011, 19:08:16 »
Спасибо. Никогда до этого не додумался бы.

Оффлайн Urr

  • Любитель
  • *
  • Сообщений: 63
    • Просмотр профиля
Я тоже не знал что есть программы для создания слайдов на фон, узнал только когда начал в форуме гуглить, по своему вопросу. Но начну сначала. Тоже увидел слайд шоу "cosmos" и  решил тоже создать такой, подсмотрел в папке вышеназванного слайда файлик xml, скопирывал оный в новую папку, вписал свои папки и файлы, но вот ведь досада, начинает показывать мои картинки, сменяет одну за другой, а потом берет и ставит сплошную заливку, которая стоит как один из вариантов фонового рисунка, вот эту, (под ней курсор)

А потом сколько не кликай, но мою тему, сплошная заливка не меняется, еще вот что, возможно это тоже имеет отношение к проблеме, когда кликаешь мышью по стрелочке, которая находится снизу текущей темы, то эскизики насчитывают только 12, а последним 13 показывает опять эту сплошную заливку, а в моем слайд-шоу картинок 16. Уж от отчаяния отредактировал xml из папки "contents", думал что может оттуда сработает, но  проблема осталась.
Господа знающие, подскажите пожалуйста, в чем может быть проблема; понимаю, можно юзать программы указанные в верхних постах, но ведь сначала хочется узнать, где моя ошибка ???
Вот мой xml:
(Нажмите, чтобы показать/скрыть)

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
А зачем создавать xml файл, можно написать скрипт на bash и напрямую через gconftool менять.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Nik-O-Lai

  • Автор темы
  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
    • Конструктор рецептов блюд
Картинки все есть реально от1 до 16 ? Проверьте внимательно. Потом попробуйте уменьшать количество в файле xml до исчезания ошибки. А так беглым взглядом в вашем файле не видно криминала.

Оффлайн Urr

  • Любитель
  • *
  • Сообщений: 63
    • Просмотр профиля
Как ни странно, вчера-сегодня глюков не замечено, прям не знаю что, может тогда глюки системы были... Спасибо за советы. Картинки точно 16)

Оффлайн Hunter

  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
Вот, что использую. Запускаю из коньков строкой: ${execi 30 /home/ramires/.conky/change_wallpapers}

#! /bin/bash

WALLPAPERS="$HOME/Wallpapers"
ALIST=( `ls -w1 $WALLPAPERS` )
RANGE=${#ALIST[*]}
SHOW=$(( $RANDOM % $RANGE ))
/usr/bin/gconftool-2 -t string -s /desktop/gnome/background/picture_filename $WALLPAPERS/${ALIST[$SHOW]};

Каждые 30 секунд меняет обои.

Если коньков нет, то можно сделать бесконечный цикл и поставить этот скрипт в автозагрузку, например:
#! /bin/bash

WALLPAPERS="$HOME/Wallpapers"
while [ 1 ]; do
ALIST=( `ls -w1 $WALLPAPERS` )
RANGE=${#ALIST[*]}
SHOW=$(( $RANDOM % $RANGE ))
/usr/bin/gconftool-2 -t string -s /desktop/gnome/background/picture_filename $WALLPAPERS/${ALIST[$SHOW]}
sleep 30
done

А по поводу xml файла, то вот скрипт нарыл(кидается в папку с картинками и запускается после выставления чмодов):
#!/bin/bash
# Создание xml файла автоматической смены обоев рабочего стола,
# используя картинки расширением 'jpg', находящиеся в текущей папке
find "`echo $PWD`" -maxdepth 1 -iname '*.jpg' -fprint wp.xml
# Параметр "1" использует только текущую папку (без вложенных), что
# можно легко изменить или вообще убрать "-maxdepth" для всех уровней
sed -i 's/\(.*\)/    <to>\1<\/to>\n  <\/transition>\n  <static>\n    <duration>1795.0<\/duration>\n    <file>\1<\/file>\n  <\/static>\n  <transition>\n    <duration>5.0<\/duration>\n    <from>\1<\/from>/' wp.xml
# Цифры "1795.0" - время показа картинки на рабочем столе,
# "5.0" - длительность смены на следующую картинку  
head -2 wp.xml >> wp.xml
sed -i '1,2d' wp.xml
echo '</background>' >> wp.xml
# форматирование созданного файла
sed -i '1i <background>\n  <starttime>\n    <year>2010</year>\n    <month>09</month>\n    <day>06</day>\n    <hour>00</hour>\n    <minute>00</minute>\n    <second>00</second>\n  </starttime>\n<!-- This animation will start at midnight. -->' wp.xml
# указывается время запуска анимации - подойдет в принципе любое, но
# чтоб работало надо дату раньше чем сегодня

В итоге на выходе получается wp.xml
« Последнее редактирование: 11 Мая 2011, 20:13:47 от Hunter »

ikstlen

  • Гость
в репах есть desktopnova, в gui задаются и время смены и папка откуда брать картинки. демон всего ~500kb хавает, автозапуск есть, есть дополнение в трей иконка. в общем вариант довольно не плохой

Оффлайн Бумер

  • Активист
  • *
  • Сообщений: 996
  • Кто злой, я злой?О_о
    • Просмотр профиля
В KDE всё искаропки.

 

Страница сгенерирована за 0.033 секунд. Запросов: 25.