23. syyskuu 2010, 11:12

Rainlendar pitää paikkansa

Uskomatonta, todella uskomatonta. Eilen kirjoitin Rainlendarin ja Xmonadin välisistä kahnauksista, sekä hahmottelin alustavaa korvaajaa Rainlendarille Luan ja Pythonin kanssa. Mutta tänään havaitsin Rainlendarissa asetuksen, joka hoitaa ongelman hienosti.

Jos maltat lukea eilisen kirjoitelman ongelmalistan, niin tässä tulee sama lista, mutta tällä kertaa yksinkertaisesti valitsin täpän Rainlendarin asetuksista: “Lock windows in place.” Se samperin asetus on siinä seissyt iät ja ajat, enkä ole älynnyt tarkastaa, mitä se tekee Xmonadin kanssa.

  • Ikkunoiden kanssa peuhailu Win-j ja Win-k -näppäinten kanssa kiertää fokusta vain pääasiallisten ikkunoiden kanssa, eli Rainlendar ei saa osaansa näppäimistöltä tapahtuvassa ikkunankierrossa.
  • Tapahtumien lisäily on edelleen työlästä, mutta eilisessä kirjoitelmassakin olin valmis käyttämään Googlen käyttöliittymää enemmän. Eikä se ole selaimessa kuin näppäinyhdistelmän tc<CR> takana. Ainakin siis minulla.
  • Xmonad jättää ikkunan huomiotta, joten Quick Add ei ota enää fokusta. Varjopuoli: vain leikepöydältä liittäminen onnistuu. Ei iso ongelma em. seikkojen kanssa.
  • Nyt, uskomatonta kyllä, Rainlendarin ikkunat kaikki näkyvät aina samassa fiksatussa paikassa riippumatta siitä, mitä minulla on siinä näkyvillä.

Kuin taikaiskusta kaikki eilisen ongelmat tuntuvat korjautuneen. Lukeeko Rainlendarin taustapiru blogiani kiihkeään sävyyn ja vieläpä hakkeroi korjattuja buildeja koneelleni?

Totuus voi olla sattuman sopivalla valinnalla siinä, että eilen kokeilin tuloksetta saada Rainlendaria Xmonadin ignored-listoille, siis (typistetyssä muodossa):

myManageHook = composeAll $
    [ className =? c    --> doIgnore | c <- myIgnoreClass ]
  where 
    myIgnoreClass = [ "Rainlendar2" ]

Kokeilemani menetelmä ei edelleenkään toiminut haluamallani tavalla, joten ajattelin, ettei se nyt pelaa kuten luulisi. Vasta tietty kombinaatio tarvittiin, jotta haluamani toiminnallisuus lähtisi pelaamaan kunnolla.

Kaikki hyvin?

Tietysti pitää olla vähän iloinen siitä, ettei 10 euron lisenssimaksu menekään hukkaan. Ja suuri osa suunnittelemastani kalenterista olisi melko työlästä saada nätiksi.

Mutta vähän harmittaa, etten päässytkään sitten toteuttamaan näitä ‘unelmia’. Tutkin Googlen tuottamaa iCalendar-tiedostoa, ja totesin, että ne ovat kronologisesti siten, että on helppo lopettaa parsinta, kun päästään vaikkapa tämän kuun alkuun. Sitten Lua-koodiin on helppo lisätä vaikka pientä värjäystä niille päiville, joille on määrätty tapahtumia. Lopuksi vielä tehdä nätti listaus tapahtumista, joita tulee tapahtumaan lähipäivinä.

Parserointiin käy hyvä python-kirjasto, jonka käyttö vaikuttaa suoraviivaiselta.

Conkyn sisään se olisi helppo upottaa, ei siinä mitään.

Mutta taitaa olla silti viisainta käyttää hyväksi osoitettua toiminnallisuutta, joka tarjoaa hyvän selailun vielä menneillekin. Näitä ei conkyn sisään voi mitenkään järkevästi toteuttaa.

Tarkemmin tutkittuani

Nyt pitää tarkentaa havaintojani. Tein liian pinnallisen syynäyksen ja vain niihin osioihin, jotka eniten häiritsivät. Nyt tarkennetaan, että nähtävästi tuo ikkunoiden lukitus ei riipukaan asioista, vaan Xmonad nyt ignoroi Rainlendarin kaikkine oheisikkunoineen kuten luulisikin. Tämä koskee kaikkia ikkunoita, joten uusien tapahtumien lisäily ei enää oikein onnistu. Toisaalta Googlen kalenteri toimii kuten toimii.

Ongelma poistuu yllättävän näppärästi, kun vain osaa käyttää työkaluja oikein. Hieno työkalu tuo xprop, mutta sitä kannattaa putkitella tiedostoihin, ja tarjota diffiä, koska muuten ilmeisen noteeraminen on hankalaa. Nyt riitti muuttaa Xmonadin doIgnore-ehtoja käyttämään ikkunan nimeä. En ollut edes varma, miten se Xmonadissa tehtiin!

myManageHook = composeAll $
    [ title =? c    --> doIgnore | c <- myIgnoreTitles ]
  where 
    myIgnoreTitles = [ "rainlendar2" ]

Mitä tästä opimme?

Mielestäni tämä oli tärkeä oppikokemus minulle siinä, että syynä ei ole mikään Rainlendarin oikku. Sen sijaan kaikki tämä johtui, kuten kirjoitinkin, huonosta Xmonadin hallinnastani. Nyt olin niin hyvällä flow’lla liikkeessä ja päämäärä kirkkaana edessäni, sain selätettyä pedon.

Nyt Rainlendarin kalenteri ei blokkaile mitään, ja se kulkee aina vasemmalla näytöllä riippumatta muista valinnoistani. Lisäksi voin käytellä sen Add Event -dialogia, vaikkakin se on niin epäkäytettävä, että ei moista. Jopa Quick Add voisi nyt onnistua, joskin luulen sen tuovan fokuksenhallintaongelmia. Voinhan kokeilla ja raportoida tulokset.

Vielä lisää jälkimaininkia

Turhan hätäisesti olen tutkinut Rainlendarin mahdollisuudet, olinhan ajatellut sen olevan vaivainen graafinen sovellus. Todellisuudessa Rainlendarin QuickAdd-toiminnallisuus yltää peräti komentoriville asti, joka olikin eräs haluamistani toiminnoista kustomoituun räpellykseen; en edes osannut toivoa vastaavaa Rainlendariin.

Siihen riittää pelkkä rainlendarin argumentti -a "msg", jolla homma hoituu niin sulavasti, etten uskoisikaan. QuickAdd tarjoaa myös hyvän ja joustavan tavan ilmaista tapahtumia, joten nyt on kaikki reilassa oikein viimeisen päälle.

Tageja: , , , ,

---
---

---

Aiheen vierestä