Періодично змінюючи шпалери під GNOME 3?


15

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

Я не знайшов інструментів у сховищі. Я думаю, ви можете змінити це за допомогою сценарію та крона, але я шукаю щось більш елегантне.

Відповіді:



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" сантехніка ОС.


Я не можу знайти нічого про зміну шпалер або Hubert Samm у вашому посиланні. Чи можете ви бути більш конкретними?
KovBal

Або ви можете просто записати це тут :) (я не перевірив ваше ім'я, вибачте :))
KovBal

1
Варто зазначити, що ви також можете встановити pictures-options:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
Даніель Квін

це не працює для gnome 2, правда?
Віфред

Що саме "set - *" робить саме?
SergioAraujo

3

Якщо ви вважаєте за краще використовувати роботу cron замість сценарію init, ось що я зробив. Дякую Губерту за натхнення!

#!/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. Наприклад, процес не викликається і не витрачає цикли процесора. Також із зайнятого очікування на 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
Art Gertner

1

Чомусь я не бачу способу відповісти на Губерта Самма, але знайшов його посилання корисним. На всякий випадок, якщо він знижується або ви не хочете читати все, щоб отримати цю конкретну відповідь, я додав, як мені вдалося здійснити оновлювальний фон у Gnome 3.

Перейшовши до ~ / .cache / gnome-control / center / background, ви знайдете файл із довгим ім'ям (щось на зразок "a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27"), який є кешованою версією файлу, для якого ви встановили фон. Якщо ви видалите цей файл і створите символьне посилання з тим самим іменем, щоб замінити його:

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

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

Можливо, більш правильним шляхом для цього було б використовувати gsettings для зміни адреси малюнка-урі, щоб безпосередньо вказати на обраний вами файл, але я вибрав варіант symlink, оскільки не знав, наскільки стійкими будуть зміни налаштувань. при використанні інтерфейсу користувача для зміни шпалер. У будь-якому випадку слід працювати теоретично.

Примітка. Це я точно не знаю, оскільки я не перевіряв це, але є хороший шанс, що якщо ви зміните фон через звичайний інтерфейс, то довге унікальне ім'я файлу зміниться, і ваше посилання більше не буде корисним .


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.