Mengubah wallpaper secara berkala di bawah GNOME 3?

15

Saya menggunakan Fedora 15 dengan GNOME 3 dan saya ingin wallpaper saya secara berkala berubah seperti mungkin dengan Windows 7. Ini akan menjadi yang terbaik jika bisa menggunakan RSS / Atom atau direktori yang ditentukan.

Saya belum menemukan alat di repositori. Saya kira Anda dapat mengubahnya dengan script dan cron, tapi saya mencari sesuatu yang lebih elegan.

KovBal
sumber

Jawaban:

19

Simpan skrip shell berikut di suatu tempat:

#!/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

Kemudian di direktori home Anda di .config / autostart masukkan yang berikut ke dalam file bernama 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

Ini akan mengubah wallpaper Anda setiap 10 menit ... atau nilai apa pun yang Anda tetapkan dalam skrip ...

Saya awalnya memposting ini sebagai komentar pada posting berjudul "Menyesuaikan Shell GNOME" di Renungan seorang tukang ledeng OS.

Hubert Samm
sumber
Saya tidak dapat menemukan apa pun tentang mengganti wallpaper atau Hubert Samm di tautan Anda. Bisakah kamu lebih spesifik?
KovBal
Atau Anda bisa menuliskannya di sini :) (Saya tidak memeriksa nama Anda, maaf :))
KovBal
1
Perlu dicatat bahwa Anda mungkin juga ingin mengatur pictures-options: gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
Daniel Quinn
ini tidak bekerja untuk gnome 2 kan?
Vicfred
Apa "set - *" tidak tepatnya?
SergioAraujo
3

Jika Anda lebih suka menggunakan pekerjaan cron daripada skrip init, inilah yang saya lakukan. Terima kasih kepada Hubert untuk inspirasi!

#!/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"

Simpan skrip di suatu tempat (mis. $HOME/bin/rotate_bg ), buat itu dapat dieksekusi ( chmod +x $HOME/bin/rotate_bg ), lalu tambahkan cron pekerjaan untuk menjalankannya sesering yang Anda inginkan latar belakang Anda berubah. Menjalankan crontab -e untuk mengedit cron tabel untuk pengguna Anda. Berikut ini tautan yang menjelaskan format crontab . Entri berikut akan merotasi latar belakang Anda setiap 10 menit:

*0 * * * * $HOME/bin/rotate_bg
Nathan Wallace
sumber
Anda tidak benar di sini. Tidur bukan menunggu sibuk
Art Gertner
jika Anda mendapat kutipan saya akan mengubah jawaban saya
Nathan Wallace
dari sumber yang sama yang saya tautkan di atas: The sleep instruction suspends the calling process for at least the specified number of seconds (the default), minutes, hours or days. Misalnya. proses tidak dipanggil dan tidak membuang siklus CPU. Juga dari Sibuk Menunggu di 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

Untuk beberapa alasan, saya tidak dapat melihat cara untuk membalas Hubert Samm, tetapi tautannya bermanfaat. Kalau-kalau turun atau Anda tidak ingin membaca semuanya untuk mendapatkan jawaban khusus ini, saya telah menambahkan bagaimana saya berhasil menyelesaikan latar belakang pembaruan langsung di Gnome 3.

Dengan membuka ~ / .cache / gnome-control / pusat / latar belakang Anda akan menemukan file dengan nama panjang (sesuatu seperti "a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27") yang merupakan versi cache dari file yang telah Anda setel ke latar belakang file yang telah Anda setel pada latar belakang file yang telah Anda setel pada file yang telah Anda setel pada latar belakang file yang telah Anda setel pada file yang telah Anda setel di latar belakang file yang telah Anda setel di latar belakang file yang telah Anda setel di latar belakang file yang telah Anda setel di latar belakang file yang telah Anda setel pada latar belakang file yang telah Anda setel ke latar belakang file yang telah Anda atur untuk latar belakang file yang telah Anda setel pada latar belakang file yang telah Anda setel pada latar belakang file yang telah Anda atur. Jika Anda menghapus file ini dan membuat symlink dengan nama yang sama untuk menggantinya:

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

kemudian, ketika file asli diperbarui, latar belakang desktop akan berubah untuk mencerminkan itu. Saya menggunakan teknik ini untuk memastikan latar belakang XPlanetFX saya tetap up to date. Misalnya, cukup minta gambar bernama "background.jpg" dan ubah file ini setiap kali Anda ingin memperbarui latar belakang.

Mungkin cara yang lebih tepat untuk melakukan ini adalah dengan menggunakan gsettings untuk mengubah alamat gambar-uri untuk menunjuk langsung ke file yang Anda pilih, tapi saya memilih opsi symlink karena saya tidak tahu seberapa gigih perubahan pengaturan akan saat menggunakan UI untuk mengubah wallpaper. Namun demikian, cara mana pun harus bekerja secara teori.

Catatan: Saya tidak tahu pasti karena saya tidak mengujinya, tetapi ada kemungkinan besar bahwa jika Anda mengubah latar belakang Anda melalui UI normal, nama file lama yang unik itu akan berubah, dan symlink Anda tidak lagi berguna .

Adam
sumber
1

Simpan skrip shell berikut di suatu tempat:

#!/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

Jalankan menggunakan sintaks:

scriptname directoryofpictures howmanyseconds
Brainz
sumber