Yanıtlar:
Aradığınız çözüm budur:
Ben yaptım; sadece bir test sürümü ama çalışıyor!
Aşağıdaki kabuk komut dosyasını bir yere kaydedin:
#!/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
Ardından .config / autostart içindeki ana dizininize aşağıdakileri wallpaper-changer.desktop adlı bir dosyaya koyun
[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
Bu, duvar kağıdınızı her 10 dakikada bir değiştirir… veya kodda ayarladığınız değer…
Başlangıçta bunu bir OS tesisatçısının Musings'teki "GNOME Kabuğunu Özelleştirme" başlıklı bir yorum üzerine yorum olarak gönderdim .
pictures-options
:gsettings set org.gnome.desktop.background picture-options '<zoom|centered|none|scaled|spanned|stretched|wallpaper|zoom>'
Init betiği yerine bir cron işi kullanmayı tercih ederseniz, işte yaptığım şey bu. İlham için Hubert'e teşekkürler!
#!/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"
Komut dosyasını bir yere kaydedin (örn. $HOME/bin/rotate_bg
Yürütülebilir) ( chmod +x $HOME/bin/rotate_bg
), ardından cron
işi arka planınızın değişmesini istediğiniz sıklıkta çalıştırmak için ekleyin . Kullanıcının tablosunu crontab -e
düzenlemek için çalıştırın cron
. İşte crontab formatını açıklayan bir link . Aşağıdaki giriş her 10 dakikada bir arka planınızı döndürür:
*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
. Örneğin süreç çağrılmaz ve CPU döngülerini boşa harcamaz. Wiki'de de Meşgul Beklerken :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
Nedense, Hubert Samm'e cevap vermenin bir yolunu göremiyorum, ama bağlantısını yararlı buldum. Aşağı inmesi veya bu özel cevabı almak için her şeyi okumak istemiyorsanız, Gnome 3'te canlı güncelleme arka planını nasıl başarabildiğimi ekledim.
~ / .Cache / gnome-control / center / background'a giderek arka planınızı ayarladığınız dosyanın önbelleğe alınmış sürümü olan uzun bir dosya ("a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27" gibi bir dosya bulacaksınız. Bu dosyayı silip değiştirmek için aynı ada sahip bir sembolik bağlantı oluşturursanız:
$ rm a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27
$ ln -s /path/to/original/file a4f327082b43572cfa36ad23b5e1fda7be77b6fb6bfe362e4d682fd9c6699f27
orijinal dosya güncellendiğinde, masaüstü arka planı bunu yansıtacak şekilde değişir. XPlanetFX arka planımın güncel kalmasını sağlamak için bu tekniği kullanıyorum. Örneğin, "background.jpg" adlı bir resme sahip olun ve arka planı güncellemek istediğinizde bu dosyayı değiştirin.
Muhtemelen bununla ilgili daha doğru yol, resim-uri adresini doğrudan seçtiğiniz dosyaya işaret edecek şekilde değiştirmek için gsettings kullanmak olacaktır, ancak symlink seçeneğini seçtim çünkü ayar değişikliğinin ne kadar kalıcı olacağını bilmiyordum duvar kağıdını değiştirmek için UI kullanırken. Ancak her iki şekilde de teoride çalışmalıdır.
Not: Bunu test etmediğimden emin değilim, ancak arka planınızı normal kullanıcı arayüzünden değiştirirseniz, bu uzun benzersiz dosya adının değişmesi ve symlink'inizin artık yararlı olmaması için iyi bir şans var .
Aşağıdaki kabuk komut dosyasını bir yere kaydedin:
#!/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
Sözdizimini kullanarak çalıştırın:
scriptname directoryofpictures howmanyseconds