Fórum Ubuntu CZ/SK

Ostatní => Archiv => Téma založeno: Krehy 13 Listopadu 2007, 21:11:04

Název: Změna tapety v určitý čas
Přispěvatel: 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.
Název: Re: Změna tapety v určitý čas
Přispěvatel: nodrive 13 Listopadu 2007, 21:22:19
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)
Název: Re: Změna tapety v určitý čas
Přispěvatel: Krehy 14 Listopadu 2007, 06:10:20
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?
Název: Re: Změna tapety v určitý čas
Přispěvatel: kkaarreell 14 Listopadu 2007, 10:23:24
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.
Název: Re: Změna tapety v určitý čas
Přispěvatel: Krehy 14 Listopadu 2007, 11:17:18
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).
Název: Re: Změna tapety v určitý čas
Přispěvatel: kkaarreell 14 Listopadu 2007, 12:12:40
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.
Kód: [Vybrat]
#!/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
Název: Re: Změna tapety v určitý čas
Přispěvatel: Krehy 14 Listopadu 2007, 12:24:38
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.
Název: Re: Změna tapety v určitý čas
Přispěvatel: Krehy 14 Listopadu 2007, 20:17:12
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. 
Název: Re: Změna tapety v určitý čas
Přispěvatel: Beetljuice 14 Listopadu 2007, 20:40:16
A nestačilo by jen vynechat ty nepotřebné?
Název: Re: Změna tapety v určitý čas
Přispěvatel: Krehy 14 Listopadu 2007, 21:00:19
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.
Název: Re: Změna tapety v určitý čas
Přispěvatel: Beetljuice 14 Listopadu 2007, 21:18:17
Tak nějak sem to myslel ;)
Nevim moc neprogramuju ale nešlo by zkusit tohle? :
Kód: [Vybrat]
if [ "$(date +%k)" > " 0"  & < "6"]
Název: Re: Změna tapety v určitý čas
Přispěvatel: Krehy 14 Listopadu 2007, 21:29:40
Tak tohle mi nefunguje. Předchozí postup ale pracuje dobře. Jenom jsem ještě zaměnil +%k za +%H.
Název: Re: Změna tapety v určitý čas
Přispěvatel: Beetljuice 14 Listopadu 2007, 21:32:28
A co ? :
Kód: [Vybrat]
if [ "$(date +%k)" > " 0"  And < "6"]PS: +%k je to samé jako +%H ;)
Název: Re: Změna tapety v určitý čas
Přispěvatel: kkaarreell 14 Listopadu 2007, 21:43:15
nebylo by lepsi si to najit, nez sem vkladat nefungujici dohady?

Kód: [Vybrat]
HODINA=$( date +%H )
if [ $HODINA -ge 0 ]  && [ $HODINA -le 5 ]; then     # cili $HODINA >= 0  AND $HODINA <= 5
...
fi;
Název: Re: Změna tapety v určitý čas
Přispěvatel: Beetljuice 14 Listopadu 2007, 21:46:09
nebylo by lepsi si to najit, nez sem vkladat nefungujici dohady?

Kód: [Vybrat]
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
Název: Re: Změna tapety v určitý čas
Přispěvatel: Krehy 15 Listopadu 2007, 11:51:55
A co ? :
Kód: [Vybrat]
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.
Název: Re: Změna tapety v určitý čas
Přispěvatel: kkaarreell 15 Listopadu 2007, 13:16:50
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.
Název: Re: Změna tapety v určitý čas
Přispěvatel: Krehy 15 Listopadu 2007, 20:27:37
Díky moc za řešení. Skript funguje na 100%.