Fórum Ubuntu CZ/SK
Ostatní => Archiv => Téma založeno: Krehy 13 Listopadu 2007, 21:11:04
-
Neporadil by mi někdo se skriptem, který by umožnil změnu tapety ve vybraný čas? Jako antiprogramátor vůbec netuším jak na to.
-
http://planetearthworm.com/projects/wp_tray/ (http://planetearthworm.com/projects/wp_tray/)
http://marp.blog.root.cz/0706/zmena-tapet-v-nastavenem-case-v-gnome (http://marp.blog.root.cz/0706/zmena-tapet-v-nastavenem-case-v-gnome)
-
Omlouvám se, nenapsal jsem, že jedu na Kubuntu 7.04. Bude tento postup fungovat i pod KDE? Jinak mým cílem je podle denní doby nastavovat jeden ze 4 definovaných wallpaperů. Takže bych nejspíš potřeboval vytvořit skript, který by po spuštění zkontroloval kolik je hodin a podle toho by vybral tapetu, která je přiřazena k danému časovému intervalu (nechci měnit pozadí náhodně). Skript by se potom spouštěl pravidelně dejme tomu jednou za 5 minut. Existuje nějaký příkaz pro terminál na změnu tapety?
-
Takovy skript zrejme neni, ale napiste si ho. :-)
Btw, je zbytecne jej poustet co pet minut. Napiste jej tak, aby podle casu nastavil pozadovane pozadi. Pak jej poustejte jen pri startu pocitace a dale pres crontab v ty hodiny (resp. minutu po), kdy se se ma pozadi zmenit (tedy 3xdenne). Proc jej spoustet co pet minut.
S prikazem na zmenu pozadi v KDE vam bohuzel neporadim, ja si vytvarel skript pro GNOME na nahodny vyber z dane mnoziny tapet.
-
No právě v tom je ten problém. Věděl bych teoreticky jak na to, jak má skript pracovat, ale nemám ani páru o tom, jaké příkazy použít. Pokud bych pro spouštění skriptu použil crontab, pak by jednoduše stačilo vytvořit skript, který by obsahoval příkaz "nastavit jako pozadí soubor xy" a v příslušný čas by se spustil příslušný skript. Bohužel takový příkaz neznám (což zdaleka neznamená, že neexistuje).
-
no tak to pak uz nezbyva nez pouzit pritele googla (kde change wallpaper command). Odpoved je hned v prvnim odkazu a kdo by to byl rekl, dokonce jsem nasel vcelku primitivni skript umoznujici nastavit tapetu pro kazdou hodinu.
#!/bin/bash
if [ "$(date +%k)" = " 0" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX2.jpg 6
fi
if [ "$(date +%k)" = " 1" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX2.jpg 6
fi
if [ "$(date +%k)" = " 2" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX2.jpg 6
fi
if [ "$(date +%k)" = " 3" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX3.jpg 6
fi
if [ "$(date +%k)" = " 4" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX3.jpg 6
fi
if [ "$(date +%k)" = " 5" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX3.jpg 6
fi
if [ "$(date +%k)" = " 6" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX4.jpg 6
fi
if [ "$(date +%k)" = " 7" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX4.jpg 6
fi
if [ "$(date +%k)" = " 8" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX4.jpg 6
fi
if [ "$(date +%k)" = " 9" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX5.jpg 6
fi
if [ "$(date +%k)" = " 10" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX5.jpg 6
fi
if [ "$(date +%k)" = " 11" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX5.jpg 6
fi
if [ "$(date +%k)" = " 12" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX6.jpg 6
fi
if [ "$(date +%k)" = " 13" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX6.jpg 6
fi
if [ "$(date +%k)" = " 14" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX6.jpg 6
fi
if [ "$(date +%k)" = " 15" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX7.jpg 6
fi
if [ "$(date +%k)" = " 16" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX6.jpg 6
fi
if [ "$(date +%k)" = " 17" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX6.jpg 6
fi
if [ "$(date +%k)" = " 18" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX9.jpg 6
fi
if [ "$(date +%k)" = " 19" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX9.jpg 6
fi
if [ "$(date +%k)" = " 20" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX9.jpg 6
fi
if [ "$(date +%k)" = " 21" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX10.jpg 6
fi
if [ "$(date +%k)" = " 22" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX10.jpg 6
fi
if [ "$(date +%k)" = " 23" ];
then
dcop kdesktop KBackgroundIface setWallpaper /usr/share/wallpapers/BIGLINUX10.jpg 6
fi
-
Děkuju moc. Strejdu googla jsem zkoušel, ale asi jsem se ho pat špatně ??? . Hned jak budu moct tak vyzkouším. Ještě jednou díky.
-
Tak s přidáním příkazů do crontab by nebyl problém. Teď jenom vytvořit skript, který by po spuštění zjistil, který časový interval zrovna je a podle toho by nastavil odpovídající tapetu. Zkoušel jsem modifikovat příkazy ze skriptu výše, ale vyhořel jsem na tom, že potřebuju zadat podmínku stylem "6" <= "$(date +%k)" <= "12" (časový interval mezi 6 a 12 dopoledne...např.) Bohužel jsem nikde nenašel, jakým způsobem takovou podmínku nadefinovat, resp. žádný z nalezených způsobů nefungoval.
-
A nestačilo by jen vynechat ty nepotřebné?
-
Pokud bych vynechal nepotřebné a nechal jenom např. 6 a pak 12, potom by se mi tapeta změnila pouze přesně v 6 a ve 12. Jenže když počítač zapnu třeba v 9 tak se nezmění. Potřebuju otestovat pomocí IF jaký je časový úsek (např. mezi 6-12) a dle toho nastavit tapetu. Teoreticky by to šlo udělat tak, že bych využil všech 24 možností a k nim bych přidal 4 tapety. Ve vysledku bych pro hodinu 0,1,2,3,4,5,6 nastavoval jednu tapetu, pro 7,8,9... druhou atd. Je to sice neohrabané řešení, ale pokud se skript spouští jen jednou po startu tak by to mělo fungovat.
-
Tak nějak sem to myslel ;)
Nevim moc neprogramuju ale nešlo by zkusit tohle? :
if [ "$(date +%k)" > " 0" & < "6"]
-
Tak tohle mi nefunguje. Předchozí postup ale pracuje dobře. Jenom jsem ještě zaměnil +%k za +%H.
-
A co ? :
if [ "$(date +%k)" > " 0" And < "6"]PS: +%k je to samé jako +%H ;)
-
nebylo by lepsi si to najit, nez sem vkladat nefungujici dohady?
HODINA=$( date +%H )
if [ $HODINA -ge 0 ] && [ $HODINA -le 5 ]; then # cili $HODINA >= 0 AND $HODINA <= 5
...
fi;
-
nebylo by lepsi si to najit, nez sem vkladat nefungujici dohady?
HODINA=$( date +%k )
if [ $HODINA -ge 0 ] && [ $HODINA -le 5 ]; then # cili $HODINA >= 0 AND $HODINA <= 5
...
fi;
No ale že to byla doba, než se ozval nějaký programátor :D
-
A co ? :
if [ "$(date +%k)" > " 0" And < "6"]PS: +%k je to samé jako +%H ;)
Je to to samo, ale při použití %k se mi tapeta nezměnila (tipuju, že tento parametr bych použil, kdybych chtěl měnit tapetu např. přesně v 1:00). Při použití %H se mi tapeta změnila i když bylo např. 1:23. Možná, že mojě doměnka není správná, každopádně %H mi funguje lépe.
kkaarreell: Díky, přesně tak nějak jsem to zamýšlel, ale špatně jsem to zapisoval. Vyzkouším a dám vědět.
-
Při použití %H se mi tapeta změnila i když bylo např. 1:23. Možná, že mojě doměnka není správná, každopádně %H mi funguje lépe.
Oboje vraci celou hodinu, takze v 1:23 to vrati 1. Rozdil je v tom, ze %k da pred hodinu mezeru (" 1"), %H ne (jen "1"). Takze asi je pri porovnavani lepsi pouzivat %H.
-
Díky moc za řešení. Skript funguje na 100%.