Bádal jsem nad tím, jak v Gnome mít na ploše zobrazený obrázek, který by se v pravidelných intervalech aktualizoval z internetu.
Ve Windows je to poměrně jednoduché - díky Active Desktop se prostě vloží HTML stránka na plochu, na které je ten obrázek a pomocí JavaScriptu se obnovuje - vypadá to třeba takto:
<html style="margin: 0px; padding: 0px;">
<body style="margin: 0px; padding: 0px;">
<script type="text/javascript">
var stranka = 'http://www.nějakástránka.cz/webkamera.jpg';
var prekresleni_sekund = 60; //pocet sekund do dalsiho nacteni obrazku
var prodleva_nacteni = 2; //pocet sekund mezi zacatkem nacteni a zobrazenim - pro plynulost
function ObnovObrazek() {
var obrazek_soubor = stranka+'?rnd='+Math.random();
document.getElementById('skryte').src = obrazek_soubor;
setTimeout('document.getElementById("mapa").src = "'+obrazek_soubor+'";',prodleva_nacteni*1000);
setTimeout('ObnovObrazek();',prekresleni_sekund*1000);
}
window.onload = ObnovObrazek;
</script>
<img id="mapa" src="" width="1280" height="1024" style="border-width: 0px;">
<img id="skryte" src="" style="display: none;">
</body>
</html>
Tohle umí všechny Windows od verze 95 po XP. Windows Vista z nějakého zvláštního důvodu už Active Desktop nepodporuje, takže tam to tak jednoduché není (možná by to šlo nějak přes gadget a ActiveX).
Nicméně jak to udělat v Linuxu?
Udělal jsem pro to 2 skripty - jeden (v bashi) stáhne obrázek a přejmenuje ho. Pak zavolá druhý skript (v Pythonu), který to pozadí nastaví. (Určitě by to šlo celé udělat v Pythonu, ale tak zběhlý v něm nejsem.)
A to celé se pak volá cronem.
Takže první skript v bashi zmen_pozadi.sh:
#!/bin/sh
cd "~/pozadi/automaticky-stazeno" #cesta, kam se budou obrazky ukladat, musi existovat
wget http://www.nějakástránka.cz/webkamera.jpg
obrazek=`date '+%Y-%m-%d %H-%M-%S'`.jpg
mv webkamera.jpg "$obrazek"
~/skripty/zmen_pozadi.py "/moje/Na pozadi/automaticky-stazeno/$obrazek"
a druhý skript zmen_pozadi.py:
#!/usr/bin/env python
import gconf
import os
import sys
client = gconf.client_get_default()
changeSet = gconf.ChangeSet()
gs = '/desktop/gnome/background/'
changeSet.set_string(gs + 'picture_filename',sys.argv[1])
client.commit_change_set(changeSet, True)
Je třeba ještě nastavit v tom prvním skriptu:
- adresář, do kterého se budou obrázky stahovat. Ta cesta už musí existovat. Obrázků v něm bude přibývat, bylo by proto dobré udělat do skriptu i automatické promazávání, ale občas je dobré mít i historii a smáznout to lze vždy ručně
- adresu k tomu obrázku, který se vlastně bude stahovat. Líbí se mi třeba kamery na http://www.humlak.cz/index.php?page=webcam (hlavně kvůli vysokému rozlišení), ale lze použít vše, co není streamované. Na internetu je toho hromada
- nastavit cestu k tomu druhému pythonímu skriptu
- a dát ten shellový skript do cronu
Mění se pouze samotný obrázek, už ne např. styl vykreslení (roztáhnout na celou plochu atd.). Tyto vlastnosti tam tedy zůstanou stejné jako předtím a lze to nastavit normálně v systému.
Musím říct, že je to docela zajímavé mít na ploše něco “živého”. Třeba teď pozoruju náměstí v Trutnově - ještě včera bylo prázdné, ale během dopoledne tam přibyly atrakce a stánky, tak můžu pozorovat, co je zrovna nového a vůbec ten cvrkot A taky třeba když je noc, tak vidím že je noc a tak
A zároveň to neruší, protože je to jen na ploše.
Tak doufám, že se někdo minimálně inspiruje A neříkejte, že je to v podstatě na nic - nejen důležitými věcmi je člověk živ