Периодически меняете обои под GNOME 3?

15

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

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

KovBal
источник

Ответы:

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.

Хьюберт Самм
источник
Я не могу найти ничего о смене обоев или Хьюберта Сэма по вашей ссылке. Не могли бы Вы уточнить?
КовБал
Или вы можете просто написать это здесь :) (я не проверил ваше имя, извините :))
KovBal
1
Стоит отметить, что вы также можете установить pictures-options:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
Даниэль Куинн
это не работает для гнома 2, верно?
Vicfred
Что именно "set - *" делает?
SergioAraujo
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
Натан Уоллес
источник
Вы не правы здесь. Сон - это не напряженное ожидание
Арт Гертнер,
если у вас есть цитата, я изменю свой ответ
Натан Уоллес
из того же источника , что я связан выше: The sleep instruction suspends the calling process for at least the specified number of seconds (the default), minutes, hours or days. Например, процесс не вызывается и не тратит циклы процессора. Также из Busy Waiting на Wiki :Busy-waiting itself can be made much less wasteful by using a delay function (e.g., sleep()) found in most operating systems. This puts a thread to sleep for a specified time, during which the thread will waste no CPU time
Арт Гертнер,
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
Brainz
источник