Отправляет email-рассылки с помощью сервиса Sendsay

Wallpaper

В общем захотелось, что бы обоины на рабочем столе менялись раз эдак в
дней 5, а то рисунок один и тот же напрягает. В кде скажем эта функция
встроена в свойства рабочего стола, очень сильно глючит, при каждой
загрузке новую картинку выдает. Может кто подскажет универсальное
средство, что бы не только в кде работало, но и в другом виндосменеджере
тоже смена Wallpaper была. Я так бумаю, что нужно везде писать одно и
тоже название скажем Wallpaper.jpg, а каждые 5 дней его подменять другой
картинкой.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 22024; Возраст листа: 811; Участников: 1426
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/454908

Ответить   Thu, 13 Oct 2005 20:13:53 +0300 (#454908)

 

Ответы:

On Thu, 13 Oct 2005 20:13:53 +0300
Ignatiy Goloviznin <Ign10***@m*****.ru> wrote:

Пишем какой нибудь тупенький скрипт:

#!/bin/sh
#/usr/local/bin/change_wp.sh
IMG_DIR=<каталог/с/обоями>
WALLPAPER=<path>/Wallpaper.jpg
N=$(ls -1 "$IMG_DIR" |wc -l) # количество обоев
NEXTWP=$( ls -1 "$IMG_DIR" | sed -ne "$(($RANDOM/$N)) p" ) # выбираем
cp $IMG_DIR/$NEXTWP $WALLPAPER #копируем

Пихаем это в /etc/crontab:

1 20 * * 5 /usr/local/bin/change_wp.sh

Скрипт не проверял, может где ошибся. Но идея ясна, по-моему.

Ответить   Matvey Thu, 13 Oct 2005 22:42:27 +0300 (#455055)

 

В сообщении от 1129232547 секунд после начала Эпохи Matvey написал(а):

Опция `-1' тут не нужна. Когда `ls' выводит данные не на терминал, он
по умолчанию не использует цвета, и выводит список в одну колонку.

Будут случаи когда одна картинка будет выпадать слишком часто, а другая
слишком редко. Таков генератор случайных чисел.

Использовать cron для такой задачи - это уже слишком.

Ответить   Konstantin Korikov Fri, 14 Oct 2005 07:17:40 +0300 (#455272)

 

On Fri, 14 Oct 2005 07:17:40 +0300
Konstantin Korikov <lostcl***@u*****.net> wrote:

Знаю. А на всякий случай.

Обязательно будет. Я же сказал: тупенький ;)
В принципе, можно перебирать все подряд, но тогда нужно в файлике хранить
номер текущего обоя. Да и вообще, если бы людей не напрягала детерминированность,
никто бы не придумывал ГСЧ.

Ну да. Можно это впихнуть в цикл while 1;do done и в его конце поставить
sleep 5d
;)

Ответить   Matvey Fri, 14 Oct 2005 12:02:22 +0300 (#455739)

 

В сообщении от 1129280542 секунд после начала Эпохи Matvey написал(а):

Нет, нет, sleep ставить не нужно. Вместо него нужно вставить еще один
вложенный цикл

while i in `seq 1 432000` ;do sleep 1; done

это на всякий случай, вдруг sleep не поддерживает `d'. ;)

Ответить   Konstantin Korikov Fri, 14 Oct 2005 21:42:16 +0300 (#455749)

 

В сообщении от 1129223633 секунд после начала Эпохи Ignatiy Goloviznin
написал(а):

Установите http://lostclus.linux.kiev.ua/scripts/random-file .
В `~/.bash_profile' добавьте:

if [ x$DISPLAY != x ]; then
dir=~/wallpapers
link=~/wallpaper.jpg
days=5
age=$(( `date +%s` - `stat -c %Y $link` ))
test $age -gt $(( $days * 86400 )) &&
ln -sf `random-file -h ~/.wallpaper_history $dir` $link
fi

Ответить   Konstantin Korikov Fri, 14 Oct 2005 07:09:40 +0300 (#455275)

 

Konstantin Korikov wrote:

Как его установить? И ещё это perl, какое расширение файла ему
поставить? Я знаю только .sh :)

Это тот который в домашнем каталоге /home/ лежит?

Меня это не напрягает. А смотреть обоины в строго заданном порядке не
нравится.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 22162; Возраст листа: 820; Участников: 1442
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/460807

Ответить   Sat, 22 Oct 2005 10:19:18 +0300 (#460807)

 

Konstantin Korikov wrote:

Как его установить? И ещё это perl, какое расширение файла ему
поставить? Я знаю только .sh :)

Это тот который в домашнем каталоге /home/ лежит?

Меня это не напрягает. А смотреть обоины в строго заданном порядке не
нравится.

P.S. У меня почтовый ящик глючил, если кто ответил, просьба
продублировать сообщение.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 22303; Возраст листа: 826; Участников: 1444
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/464333

Ответить   Thu, 27 Oct 2005 23:20:53 +0300 (#464333)

 

В сообщении от 1130444453 секунд после начала Эпохи Ignatiy Goloviznin
написал(а):

Просто скопировать в один из каталогов указанных в переменной `PATH'.
Например в `/usr/local/bin'. И сделать выполняемым.

Не нужно никаких расширений.

Да.

Ответить   Konstantin Korikov Fri, 28 Oct 2005 20:23:19 +0300 (#464834)

 

Konstantin Korikov wrote:

Скопировал в /usr/local/bin

Неработает. Что я не так делаю?

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

if [ x$DISPLAY != x ]; then
dir=/usr/share/wallpapers/ign
link=/usr/share/wallpapers/ign/wallpaper.jpg
days=1
age=$(( `date +%s` - `stat -c %Y $link` ))
test $age -gt $(( $days * 86400 )) &&
ln -sf `random-file -h ~/.wallpaper_history $dir` $link
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME

Накидал несколько картинок в /usr/share/wallpapers/ign
Менял дату в биосе для проверки, картинка таже.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 22454; Возраст листа: 834; Участников: 1453
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/469485

Ответить   Sat, 05 Nov 2005 01:58:10 +0200 (#469485)

 

В сообщении от 1131148690 секунд после начала Эпохи Ignatiy Goloviznin
написал(а):

Ссылка не должна лежать в каталоге с обоями. Лучше сделать:

link=~/wallpaper.jpg

Лучше проверять так:

$ bash ~/.bash_profile

Если будет ругаться, напишите о чем.

И еще, ссылку нужно создать заранее. А можно модифицировать код чтобы
она создавалась автоматически:

if [ x$DISPLAY != x ]; then
dir=/usr/share/wallpapers/ign
link=~/wallpaper.jpg
days=1
need_update=yes
if [ -L $link ]; then
age=$(( `date +%s` - `stat -c %Y $link` ))
test $age -gt $(( $days * 86400 )) || need_update=no
fi
test $need_update = yes &&
ln -sf `random-file -h ~/.wallpaper_history $dir` $link
fi

Ответить   Konstantin Korikov Sat, 5 Nov 2005 15:23:26 +0200 (#469796)

 

Konstantin Korikov wrote:

Так она и нележит в каталоге с обоями, она лежит в моем домашнем
каталоге и указывает на /usr/share/wallpapers/ign/wallpaper.jpg, если же
указать link=~/wallpaper.jpg то линк указывает на файл
home/ign/wallpaper.jpg которого несуществует.

Не ругается, но и картинки не меняются.

Так она до этого создалась сама в домашнем каталоге. С модифицированним
кодом тоже неработает. Может я чего-то не то сделал?

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 22472; Возраст листа: 835; Участников: 1452
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/469864

Ответить   Sun, 06 Nov 2005 00:26:22 +0200 (#469864)

 

В сообщении от 1131229582 секунд после начала Эпохи Ignatiy Goloviznin
написал(а):

В эмуляторе терминала:

$ sed -i s/days=1/days=0/ ~/.bash_profile
$ cat ~/.bash_profile
$ ls -l ~/wallpaper.jpg
$ bash ~/.bash_profile
$ ls -l ~/wallpaper.jpg

Ответить   Konstantin Korikov Sun, 6 Nov 2005 16:23:45 +0200 (#470223)

 

Konstantin Korikov wrote:

$ sed -i s/days=1/days=0/ ~/.bash_profile
$ cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

if [ x$DISPLAY != x ]; then
dir=/usr/share/wallpapers/ign
link=~/wallpaper.jpg
days=0
need_update=yes
if [ -L $link ]; then
age=$(( `date +%s` - `stat -c %Y $link` ))
test $age -gt $(( $days * 86400 )) || need_update=no
fi
test $need_update = yes &&
ln -sf `random-file -h ~/.wallpaper_history $dir` $link
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME
$ ls -l ~/wallpaper.jpg
lrwxrwxrwx 1 ignat ignat 25 Лис 11 2005 /home/ignat/wallpaper.jpg ->
/home/ignat/wallpaper.jpg
$ bash ~/.bash_profile
$ ls -l ~/wallpaper.jpg
lrwxrwxrwx 1 ignat ignat 25 Лис 11 2005 /home/ignat/wallpaper.jpg ->
/home/ignat/wallpaper.jpg
$

/home/ignat/wallpaper.jpg - выделено красным цветом и мигает

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 22479; Возраст листа: 835; Участников: 1453
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/470360

Ответить   Sun, 06 Nov 2005 22:03:19 +0200 (#470360)

 

В сообщении от 1131307399 секунд после начала Эпохи Ignatiy Goloviznin
написал(а):

^^^^^^^^^^^^
Гы-гы-гы, файл из будущего. :) На данный момент его возраст
отрицательный, следовательно он будет меньше 1 * 86400 секунд, и даже
меньше нуля. Скрипт не будет работать до 11(12) ноября, или пока вы не
удалите/исправите эту ссылку.

Ответить   Konstantin Korikov Mon, 7 Nov 2005 02:44:12 +0200 (#470429)

 

Konstantin Korikov wrote:

Всякое бывает, но я уже писал, что ссылка /home/ign/wallpaper.jpg
ссылается на /home/ign/wallpaper.jpg, т.е. сама на себя... Она должна
ссылаться на один из файлов в каталоге /usr/share/wallpapers/ign ? А
файл из будущего, потому, что я ускорял течение времени, что бы его
возраст был больше 1 * 86400 секунд.

ln -sf `random-file -h ~/.wallpaper_history $dir` $link

Создать мягкую ссылку перезаписать в любом случае, даже если файл
существует, а дальше что
random-file -h ~/.wallpaper_history $dir

что такое random-file -h потом какой-то скрытый файл, который должен
быть у меня в домашнем каталоге, а на самом деле его нет и дальше
название этого файла заканчивается путём к этому файлу, т.е. насколько я
понимаю, получается ссылка на файл
kde3blue.jpg/.wallpaper_history/usr/share/wallpapers/ign ? Почему тогда
ссылка ссылается сама на себя.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 22506; Возраст листа: 836; Участников: 1454
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/470971

Ответить   Mon, 07 Nov 2005 20:56:45 +0200 (#470971)

 

В сообщении от 1131389805 секунд после начала Эпохи Ignatiy Goloviznin
написал(а):

А ну да. Я забыл. Но все равно часы лучше не трогать, так как кто его
знает что еще потом отвалится.

Это не страшно.

Нет, какое точно не должно получится. Предположим что у нас есть такие
входные данные:

переменная `dir' имеет значение `/usr/share/wallpapers/ign';
переменная `link' имеет значение `/home/ign/wallpaper.jpg';
каталог `/usr/share/wallpapers/ign' содержит один файл -
`kde3blue.jpg'

Тогда упростим выражение:

ln -sf `random-file -h ~/.wallpaper_history $dir` $link
ln -sf `random-file -h ~/.wallpaper_history /usr/share/wallpapers/ign` /home/ign/wallpaper.jpg
ln -sf /usr/share/wallpapers/ign/kde3blue.jpg /home/ign/wallpaper.jpg

Что означает создать символическую (мягкую) ссылку
`/home/ign/wallpaper.jpg' (перезаписать в любом случае, даже если файл
существует), которая будет ссылаться на
`/usr/share/wallpapers/ign/kde3blue.jpg'.

Как вышло так что ссылка `/home/ign/wallpaper.jpg' ссылается
на саму себя не могу даже представить.

Чувствую тут пахнет сырыми дистрибутивами. Или чьими-то кривыми руками
(например, моими). :)

Попробуйте так:

$ cd
$ mkdir tmp-papers
$ touch tmp-papers/{1,2}.jpg
$ ls -l tmp-papers
$ rm -f wallpaper.jpg
$ dir=tmp-papers
$ link=~/wallpaper.jpg
$ ln -sf `random-file -h ~/.wallpaper_history $dir` $link
$ ls -l wallpaper.jpg
$ ln -sf `random-file -h ~/.wallpaper_history $dir` $link
$ ls -l wallpaper.jpg
$ random-file -h ~/.wallpaper_history $dir
$ random-file -h ~/.wallpaper_history $dir

Очень хочется узнать где же это сельскохозяйственное орудие для
сгребания сена.

Ответить   Konstantin Korikov Tue, 8 Nov 2005 00:29:48 +0200 (#471084)

 

Konstantin Korikov wrote:

А лучше сутки ждать? :)

Так и сделал.

Неа, опять сам на себя ссылается.

Снова, сам на себя.

О, супер! Теперь осталось только каждых пять дней новый файл прописывать. :)

$ cd
$ mkdir tmp-papers
$ touch tmp-papers/{1,2}.jpg
$ ls -l tmp-papers
итого 0
-rw-r--r-- 1 ign ign 0 Лис 8 23:57 1.jpg
-rw-r--r-- 1 ign ign 0 Лис 8 23:57 2.jpg
$ rm -f wallpaper.jpg
$ dir=tmp-papers
$ link=~/wallpaper.jpg
$ ln -sf `random-file -h ~/.wallpaper_history $dir` $link
bash: random-file: command not found
$ ls -l wallpaper.jpg
lrwxrwxrwx 1 ign ign 25 Лис 8 23:58 wallpaper.jpg ->
/home/ign/wallpaper.jpg
$ ln -sf `random-file -h ~/.wallpaper_history $dir` $link
bash: random-file: command not found
$ ls -l wallpaper.jpg
lrwxrwxrwx 1 ign ign 25 Лис 9 00:02 wallpaper.jpg ->
/home/ign/wallpaper.jpg
$ random-file -h ~/.wallpaper_history $dir
bash: random-file: command not found
$ random-file -h ~/.wallpaper_history $dir
bash: random-file: command not found

Похоже, что в наличии отсутствия используемых команд.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 22535; Возраст листа: 838; Участников: 1451
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/471831

Ответить   Wed, 09 Nov 2005 00:09:11 +0200 (#471831)

 

В сообщении от 1131487751 секунд после начала Эпохи Ignatiy Goloviznin
написал(а):

Нет, лучше установить `days' в 0.

Я это показал просто для примера как bash делает parameter expansion and
command substitution.

Вы не установили `random-file', как я вам говорил.

Ссылается на саму себя потому что `ln -sf /home/ign/wallpaper.jpg'.

Во, во. Установите `random-file', как я вам говорил. И без всяких
расширений.

Еще мне непонятно поведение вашего bash, он должен был сразу (при
`bash .bash_profile') сообщить об ошибке, но он этого не сделал.
Баг?... Какая версия bash и какой дистрибутив?

Ответить   Konstantin Korikov Wed, 9 Nov 2005 15:11:35 +0200 (#472352)

 

Konstantin Korikov wrote:

Когда Вы мне говорили?

Что-то я его в базе ненашёл. Неподскажите где его искать в интернете?

Дистрибутив Ваш улюбленний Mamdriva 2005 LE. :)))
GNU bash, version 3.00.16(2)-release-(i586-mandrake-linux-gnu)

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 22590; Возраст листа: 841; Участников: 1461
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/474192

Ответить   Sat, 12 Nov 2005 20:26:43 +0200 (#474192)

 

В сообщении от 1131820003 секунд после начала Эпохи Ignatiy Goloviznin написал(а):

http://subscribe.ru/archive/comp.soft.linux.discuss/msg/464834

http://lostclus.linux.kiev.ua/scripts/random-file

Ответить   Konstantin Korikov Sun, 13 Nov 2005 01:53:38 +0200 (#474267)

 

Konstantin Korikov wrote:

Я очень сильно извеняюсь, что из-за своих кривых рук отнял у Вас столько
времени.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 22600; Возраст листа: 842; Участников: 1460
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/474423

Ответить   Sun, 13 Nov 2005 14:07:23 +0200 (#474423)