25.06.2020

Fedora'ya çevrimiçi duvar kağıtları

Manjaro'da kullandığım günlük otomatik internetten duvar kağıdı indirme özelliğinin benzerini Fedora'da uygulamak istedim. Youtube'da denk geldiğim şu video üzerinde çalışmaya başladım. Videonun yorumlarında bağlantısı verilen zip dosyasını indirerek işe başladım. Süreç otomatik değil; yönergeleri en azından Fedora 32'de uygulayınca olmadı, ama ufak değişikliklerle çalıştırmayı başardım.

İşin özü bir shell scripti tarafından gerçekleştiriliyor. Adım adım anlatmaya çalışacağım.

Öncelikle bing adresini bir değişkene atalım:
bing="www.bing.com"
Arkasından Bing'de günlük duvar kağıdını almak için kullanılacak adres bir değişkende toplanmış:
xmlURL="http://www.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=en-US"
Bing'in günlük duvar kağıdının kaydedileceği yeri /Resimler klasörümün altındaki bingwallpapers olarak belirledim ve bunu da bir değişkene atalım:
saveDir=$HOME'/Resimler/bingwallpapers/'
Bu klasör -yoksa bile- yaratmak için aşağıdaki komudu çalıştıralım:
mkdir -p $saveDir
Geçerli seçeneklerin arasında

none
wallpaper
centered
scaled
stretched
zoom
spanned

olan resim seçenekleri için varsayılan olarak zoom seçilmiş:
picOpts="zoom"
Kullanmak istediğimiz resim uzantısını (farklı seçenekleri denemedim) seçelim:
picExt=".jpg"
Ekranımıza göre resim çözünürlüğünü belirliyoruz:
desiredPicRes="_1920x1080"
Burada string'in ilk karakterinin bir alt-tire olduğuna dikkat. Resim çözünürlüğü olarak örneğin "_1366x768" de kullanabilirdik.

Her resmin her çözünürlükte kopyası bulunmuyor sanırım. Bu sebeple eğer istediğimiz çözünürlük yoksa varsayılan çözünürlüğü kullanacağız.

Şimdi yukarıda xmlURL olarak verilen URL'deki içeriğin ilk birkaç satırını inceleyelim:
<images>
<image>
<startdate>20200625</startdate>
<fullstartdate>202006250000</fullstartdate>
<enddate>20200626</enddate>
<url>
/th?id=OHR.GorchFock_EN-US6157323134_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
</url>

<urlBase>/th?id=OHR.GorchFock_EN-US6157323134</urlBase>
<copyright>
German navy tall ship Gorch Fock in waters off Reykjavík, Iceland (© DEEPOL by plainpicture/Henn Photography)
</copyright>
Burada dikkat edilecek bölümleri kalın olarak yazmaya çalıştım:

url tag'ının içindeki kısım varsayılan çözünürlükteki resmin kısmi yolu (başına bing eklenecek). Bu amaçla aşağıdaki değişkeni yaratıyoruz:
defaultPicURL=$bing$(echo $(curl -s $xmlURL) | grep -oP "<url>(.*)</url>" | 
cut -d ">" -f 2 | cut -d "<" -f 1)
urlBase tag'ının içindeki kısım ise bizim istediğimiz çözünürlükteki resmi elde etmek için kullanacağımız kısmi yol. Bu amaçla da aşağıdaki değişkeni yaratıyoruz:
desiredPicURL=$bing$(echo $(curl -s $xmlURL) | grep -oP "<urlBase>(.*)</urlBase>" | 
cut -d ">" -f 2 | cut -d "<" -f 1)$desiredPicRes$picExt
Sonra istediğimiz çözünürlükte resim URL'i geçerli mi diye bir if koşulu içinde gerekli denetimi gerçekleştirip geçerli ise bu adresi, geçerli değilse varsayılanı indirmeyi gerçekleştiriyoruz (çok fazla hata denetimi yok).
if wget --quiet --spider "$desiredPicURL"
then
    picName=${desiredPicURL##*OHR.}
    curl -s -o $saveDir$picName $desiredPicURL
else
    picName=${defaultPicURL##*OHR.}
    picName=${picName%%&*}
    curl -s -o $saveDir$picName $defaultPicURL
fi
Burada indirdiğimi resmin adını da picName değişkeninde depoladık. Şimdi bu indirdiğimiz resmi gsettings aracını kullanarak duvar kağıdı olarak değiştirelim:
gsettings set org.gnome.desktop.background picture-uri "$saveDir$picName"
Sonra da resmin duvar kağıdı olarak nasıl ölçeklendirileceğini seçelim:
gsettings set org.gnome.desktop.background picture-options $picOpts
Şimdi bir tek bu script'i oturum açışta çalıştırmak kaldı. Bunu yapmak için de Youtube videosındaki Laberinto kullanıcısı ev klasörünün altındaki .config klasörünün altında autostart alt klasörü oluşturup, içine daha önce indirdiğimiz zi dosyasının içinden çıkan  bingwallpapers.desktop dosyasını yapıştırmış. Bu iki dosya için de çalıştırma yetkileri vermeyi unutmayalım.

Bu şekilde bing.com'un günlük resimlerini duvarkağıdı olarak kullanabiliriz :)

Hiç yorum yok: