15

Я использую Fedora 15 с GNOME 3 и хочу, чтобы мои обои периодически менялись, как это возможно в Windows 7. Было бы лучше, если бы он мог использовать RSS/Atom или указанный каталог.

Я не нашел никаких инструментов в хранилище. Я думаю, вы можете изменить это с помощью скрипта и cron, но я ищу что-то более элегантное.

5 ответов5

19

Сохраните где-нибудь следующий скрипт:

#!/bin/bash

WP_DIR=/home/honeyp0t/wallpapers

cd $WP_DIR
while [ 1 ] 
  do
  set -- * 
  length=$#
  random_num=$((( $RANDOM % ($length) ) + 1)) 

  gsettings set org.gnome.desktop.background picture-uri "file://$WP_DIR/${!random_num}"

  sleep 600 
done

Затем в вашем домашнем каталоге в .config/autostart поместите следующее в файл с именем wallpaper-changer.desktop

[Desktop Entry]
Name=wallpaper-changer
Exec=/home/sammhe/bin/setbg.sh
Comment=change wallpaper every so often
Hidden=false
Type=Application
X-GNOME-Autostart-enabled=true

Это будет менять ваши обои каждые 10 минут ... или любое значение, которое вы установили в сценарии ...

Первоначально я опубликовал это в качестве комментария к посту под названием "Настройка оболочки GNOME" на Musings of a plumber.

6

Это решение, которое вы ищете:

Я сделал это; просто тестовая версия, но работает!

3

Если вы предпочитаете использовать задание cron вместо сценария инициализации, вот что я сделал. Спасибо Юбер за вдохновение!

#!/bin/bash

walls_dir=$HOME/.wallpapers
selection=$(find $walls_dir -type f -name "*.jpg" -o -name "*.png" | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$selection"

Сохраните скрипт где-нибудь (например, $HOME/bin/rotate_bg), сделайте его исполняемым (chmod +x $HOME/bin/rotate_bg), затем добавьте задание cron чтобы запускать его так часто, как вы хотите, чтобы ваш фон изменился. Запустите crontab -e чтобы отредактировать таблицу cron для вашего пользователя. Вот ссылка, описывающая формат crontab. Следующая запись будет поворачивать ваш фон каждые 10 минут:

*0 * * * * $HOME/bin/rotate_bg
1

По какой-то причине я не вижу способа ответить Хьюберту Самму, но я нашел его ссылку полезной. На случай, если все пойдет не так, или вы не хотите читать все целиком, чтобы получить этот конкретный ответ, я добавил, как мне удалось добиться обновления живого фона в Gnome 3.

Зайдя в ~/.cache/gnome-control/center/фоны, вы найдете файл с длинным именем (что-то вроде "a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27"), который является кэшированной версией файла, для которого вы установили фон. Если вы удалите этот файл и создадите символическую ссылку с тем же именем, чтобы заменить его:

$ rm a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27 
$ ln -s /path/to/original/file a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27

затем, по мере обновления исходного файла, фон рабочего стола изменится, чтобы отразить это. Я использую эту технику, чтобы убедиться, что мой фон XPlanetFX остается актуальным. Например, просто создайте изображение с именем "background.jpg" и меняйте этот файл всякий раз, когда вы хотите обновить фон.

Возможно, более правильным способом было бы использовать gsettings для изменения адреса picture-uri, чтобы он указывал непосредственно на файл по вашему выбору, но я выбрал опцию символической ссылки, потому что я не знал, насколько постоянным будет изменение настроек. при использовании интерфейса для смены обоев. Любой способ должен работать в теории, однако.

Примечание. Я точно не знаю, так как не проверял, но есть большая вероятность, что если вы измените фон с помощью обычного пользовательского интерфейса, это длинное уникальное имя файла изменится, и ваша символическая ссылка больше не будет полезна ,

1

Сохраните где-нибудь следующий скрипт:

#!/bin/bash
while true; do
file=`/bin/ls -1 $1 | sort --random-sort | head -1`;path=`readlink --canonicalize "$dir/$file"`;
gsettings set org.gnome.desktop.background picture-uri "file://"$1$path;sleep $2;done

Запустите его, используя синтаксис:

scriptname directoryofpictures howmanyseconds

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .