28.2.2014

Yöllistä nörttipuuhastelua

Blogi ja sen päivittäminen on näköjään ollut unohduksissa pitkään, mutta jospa sitä joskus
muistaessaan muutaman sanan yrittäisi kirjoitella. Ja heti vedetään pari henkäystä taaksepäin: ei kannata odottaa mitään huimaa kerran kuukaudessa -tahtia tulevaisuudessakaan. Tässä artikkelissa ajattelin muutamalla sanalla kuvata muutamia yöpuuhasteluina omaan käyttöön syntyneitä modifikaatioita, joilla ei ole mitään käytännön merkitystä, mutta ehkä mieltä piristävä vaikutus kuitenkin. Mikäli haluat testailla näitä, ole hyvä vain.

Säätila työpöydälle


Vaikka nörtti ei välttämättä osaa katsoa vallitsevaa säätä ikkunasta - puhumattakaan siitä että pistäisi nenän ulos - voi hän olla kiinnostunut säätilasta ja -ennustuksista, muutenkin kuin pelkästään Kerttu Kotakorven ja Mette Mannosen vuoksi. Selaimeen Ilmatieteenlaitoksen tai vastaavien sivuja tulee kuitenkin hyvin harvoin auottua, joten tärkein sääinformaatio suoraan työpöydällä näytettynä on toimiva ratkaisu. Itse olen tiiraillut vuosien aikana sääennusteita Xfcen ja Gnomen plugineista ja sopivasti modifioidusta Dasbaerin Ilmatieteenlaitoksen sivuilta parsimasta Conkysta. Taannoin Arch Linuxin foorumeilla surffailesssani silmiini sattuisatya164:n Yahoon Weather API:a hyödyntävä Conky-skripti, joka vaikutti mainiolta korvaajalta silloin tällöin virheellistä sääinformaatiota Norjan ilmatieteenlaitokselta välittäneelle Xfcen Weather-pluginille.

Halusin kuitenkin sovittaa sääskriptin yhtenäiseksi työpöytäni ja olemassa olevaan Conky- skriptin kanssa (kuva alla) sekä lisätä siihen tietoa esimerkiksi päivänpituudesta, tuntuu kuin -lämpötilasta ja ilmanpaineen vaihtelusta. Lisäksi Yahoon Weather API palauttaa osan tiedoista jenkkiformaatissa (mm. auringon nousu- ja laskuajat sekä tuulen nopeus), joten tiedot oli myös  konvertoitava Suomessa käytettäviin yksiköihin. Koska konvertointi vaati pientä laskentaa, päädyin erilliseen komentotulkkiskriptiin jota kutsutaan Conkysta. Bash ei pysty ilman pieniä kikkailuja käsittelemään liukulukuja ja koska olen itse jokin aika sitten siirtynyt käyttämään komentotulkkina Zsh:ta, oli se luonteva vaihtoehto. Sinällään skriptissä ei ole muuta Zsh-spesifistista kuin laskenta float-luvuilla.

Säätiedot integroituna työpöydän Conkyyn

Lämpöasteita helmikuussa


#!/usr/bin/zsh
# Perustuu satya164:n Conky-Google-Now -määrittelyihin

woeid=12590704 # Jyväskylän woeid
ay=227 # säätietojen sijoittaminen conkyn y-akselille

# hae sääennuste
curl -s "http://weather.yahooapis.com/forecastrss?w=$woeid&u=c" -o ~/.cache/weather.xml

# lue muuttujiin
temperature=`grep "yweather:condition" ~/.cache/weather.xml | grep -o "temp=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"`
weathertext=`grep "yweather:condition" ~/.cache/weather.xml | grep -o "text=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"`
speedkmh=`grep "yweather:wind" ~/.cache/weather.xml | grep -o "speed=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"`
feelslike=`grep "yweather:wind" ~/.cache/weather.xml | grep -o "chill=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"`
humidity=`grep "yweather:atmosphere" ~/.cache/weather.xml | grep -o "humidity=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"`
pressure=`grep "yweather:atmosphere" ~/.cache/weather.xml | grep -o "pressure=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"`
rising=`grep "yweather:atmosphere" ~/.cache/weather.xml | grep -o "rising=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"`

# tuulen nopeus m/s
speed=`printf "%.1f" $(($speedkmh * 0.28)) | sed -e "s/,/./g"`


# auringon nousu ja lasku suomalaisessa muodossa
sr=`grep "yweather:astronomy" ~/.cache/weather.xml | grep -o "sunrise=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"`
sunrise=`date -d "$sr" +%H:%M`
ss=`grep "yweather:astronomy" ~/.cache/weather.xml | grep -o "sunset=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*"`
sunset=`date -d "$ss" +%H:%M`

# päivän pituus
srsec=`date -d "$sr" +%s`
sssec=`date -d "$ss" +%s`
diff=$(($sssec-$srsec))
dlen="($(($diff / 3600))h $(($diff % 3600 /60 ))m)"

# ennuste
high1=`grep "yweather:forecast" ~/.cache/weather.xml | grep -o "high=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*" | awk 'NR==2'`
low1=`grep "yweather:forecast" ~/.cache/weather.xml | grep -o "low=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*" | awk 'NR==2'`
high2=`grep "yweather:forecast" ~/.cache/weather.xml | grep -o "high=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*" | awk 'NR==3'`
low2=`grep "yweather:forecast" ~/.cache/weather.xml | grep -o "low=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*" | awk 'NR==3'`

# kopio oikeat kuvat
cp -f ~/.config/conky/.conky-google-now/$(grep "yweather:condition" ~/.cache/weather.xml | grep -o "code=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*").png ~/.cache/weather.png
cp -f ~/.config/conky/.conky-google-now/$(grep "yweather:forecast" ~/.cache/weather.xml | grep -o "code=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*" | awk 'NR==2').png ~/.cache/weather-tomorrow.png
cp -f ~/.config/conky/.conky-google-now/$(grep "yweather:forecast" ~/.cache/weather.xml | grep -o "code=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*" | awk 'NR==3').png ~/.cache/weather-tomorrow2.png

# conkylle menevä tulos
echo "\${color white}\${font Caviar Dreams:size=18}\${alignr}$temperature°"
echo "\${voffset -26}\${font caviar dreams:size=9}$weathertext"
echo "\${font}\${voffset -20}\${alignr}\${image ~/.cache/weather.png -p 160,$ay -s 40x40}"
echo "\${image ~/.config/conky/.conky-google-now/wind.png -p 0,$ay -s 15x15}\${goto 35}\${voffset 10}$speed m/s ($feelslike°)"
echo "\${image ~/.config/conky/.conky-google-now/humidity.png -p 0,$(($ay+15)) -s 15x15}\${goto 35}\${voffset 2}$humidity%"
echo "\${image ~/.config/conky/.conky-google-now/pressure.png -p 0,$(($ay+29)) -s 15x15}\${goto 35}\${voffset 2}$pressure hPa \${font Arial:size=10}\${if_match $rising == 1} ▲\${else}\${if_match $rising == 2} ▼\${else}\${if_match $rising == 0} ~\${endif}\${endif}\${endif}"
echo "\${font}\${image ~/.config/conky/.conky-google-now/moon.png -p 0,$(($ay+46)) -s 15x15}\${goto 35}\${voffset -2}$sunrise - $sunset $dlen"
echo "\${image ~/.cache/weather-tomorrow.png -p 0,$(($ay+60)) -s 20x20}\${image ~/.cache/weather-tomorrow2.png -p 115,$(($ay+60)) -s 20x20}"
echo "\${voffset -10}\${goto 35}$low1° / $high1°\${alignr}$low2° / $high2°"


Mikäli haluat kokeilla skriptiä, niin lataa satya164:n Conky-Google-Now -paketti ja pura siitä .conky-google-now -kuvahakemisto (muita tiedostoja ei tarvita) hakemiston ~/.config/conky alle. Sijoita sitten yllä oleva conkyweather-skripti joko ~/.config/conky -hakemistoon tai esim. ~/bin -hakemistoon, anna sille suoritusoikeus (chmod +x conkyweather) ja vaihda woeid-muuttujan arvo vastaamaan omaa sijaintiasi (Google auttaa). Skriptin kutsuminen Conkysta on helppoa: oikeaan kohtaan konffitiedostossa sijoitettu ${excepi 1800 conkyweather} päivittää säätiedot Conkyyn puolen tunnin välein (1800 sekuntia on puoli tuntia). Skripti sitoo säätietojen ulkoasun yllä olevan screenshotin mukaiseksi, mutta voit määritellä säätietojen sijainnin pystyakselilla muuttamalla ay-muuttujan arvoa. Suurempien muutosten tekeminen vaatii skriptin loppuosassa (alkaen kommentista "Conkylle menevä tulos") olevien Conky-määrittelyiden muuttamista. Huomaa,että skriptissä käytettäväksi kirjaisimeksi on määritelty Caviar Dreams - mikäli sinulla ei ole kyseistä fonttia tai et pidä siitä, muuta Caviar Dreamsiin viittaavat kohdat haluamaksesi. Loppukommettina todettakoon, että myös Yahoon Weather API näyttää suurimmaksi osaksi lusmuilevan ilmanpaineen ilmoittamisessa.


Pari Arch Linux -teemaa SLiM:iin


SLiM on yksinkertainen ja suht' koruton login manager -ohjelma, jonka tehtävänä on huolehtia käyttäjän sisäänkirjautumiseen liittyvistä toiminnoista. Vaikka SLiM:n ja Systemd:n yhteiselossa on pientä kitkaa, en ole nähnyt suurta tarvetta vaihtaa raskaampiin login managereihin yksityiskäytössä olevissa koneissa. SLiM:n yksinkertaisuuden voi havaita jo tarkastelemalla sen manuaalia, jonka pohjalta konfigurointi on helppoa ja nopeaa.

SLiM:lle löytyy useita erilaisia teemoja (esim. Arch Linuxille on distrospesifistisiä teemoja paketissa archlinux-themes-slim), mutta kun joku yö sattuu olemaan sopivasti ylimääräistä aikaa eikä muuta järkevää tekemistä, niin tokihan sitä tulee parit omat teemat värkättyä ettei vaan tarvitse nukkumaan mennä. Itse graafisesti heikohkona tapauksena otin muutaman mukavan taustakuvan, modifioin niitä hieman Gimpillä (punaiseen Arch Linuxin logo ja vähän efektejä + paneliin musta mutta läpinäkyvä tausta ja siniseen tekstuurin monistamista, värihäivytyksiä yms) ja muokkasin teeman konffitiedostoa. Nopeaa ja vaivatonta. Alla omat värkkäykseni.







Koska nämä ovat omaan käyttöön tarkoitettuja viritelmiä, en ole tehnyt niistä mitään paketteja. Mikäli haluat kokeilla teemoja itse, pistä postia tulemaan niin laitan filet.

Ei kommentteja:

Lähetä kommentti