22. helmikuu 2010, 19:52

Tileävistä managereista

Luin vähän vanhoja juttujani Ion3:sta ja kokeiluistani tileävien managerien ympärillä vuodelta 2007. En ole ottanut asiaa kovin hyvin vastaan, eikä se sitten ihmetytäkään, että ne kokeilut jäivät sinne vuosien taakse. Olinhan vielä vuoden 2007 alkupuolen kokonaan Windows-juuseri, ja vasta loppukesästä vaihdoin linux-leiriin kokopäiväisesti… ehkäpä lopullisesti.

Siihen aikaan en tainnut kokea tileäviä ikkunointeja skeemana edes varteenotettavana verrattuna perinteiseen kerrostetun ikkunaston malliin. Onhan siinä joitain asioita, joita tulisi saada pohdittua tarkkaan.

(Ensin vaihdetaan tuliketun wysiwyg-editorista tutun ja turvallisen gvimin puolelle, kas näin.) Yksi ajatus, mikä minua on mietityttänyt siitä lähtien, kun ensimmäistä kertaa luin aiheesta, oli se, että kompensoiko tileävän skeeman poistama hukkatila mitenkään sitä hukkatilaa, joka syntyy siitä, kun ikkunat eivät voi käydä päällekäin.

Tämähän on sinänsä iso asia: harvemmin tarvitsemme epäaktiivisten ikkunoiden täyttä kuva-alaa nähtäville kun selailemme pääohjelmassa. Ion3 käytti apunansa yksittäisessä tilessä tehtävää tabitusta, joka on toki tehokas tapa peittää epäaktiivisia ikkunoita, mutta ehkäpä se on peräti liian tehokasta.

En tiedä nyky-ionista ja sen lisäkilkkeistä nyt, mutta nykyisin ainakin nämä kaksi muuta suosittua tileävää ympäristöä (Awesome, Xmonad) tukevat algoritmien puitteissa sellaisia tiletysmekanismeja, joissa epäaktiivisille ikkunoille tuodaan paljon erilaisia vaihtoehtoja järjestyä. Monessa tapauksessa osa tiletyksestä menee toisten tilejen päälle.

Esimerkkejä tämmöisistä overläpeistä on sellainen, että yksi pääakkuna on keskitettynä ruudulla noin 75% peittoasteella. Sen taakse jäävät sitten loput ikkunat ruudukkoon tai mihinkä vain käyttäjä on konffannut viritelmänsä. Se on ihan kiva. Xmonad tarjoaa lisäksi erilaisia pikkukivoja toimintoja kontribuutiopaketeissaan. Yksi esimerkkitapaus on sellainen suurennuslasi, jossa ikkunat ovat muuten nätisti ruudukossa, mutta aktiivista ikkunaa suurennetaan vaikka puolitoistakertaiseksi. Suurennos voi joko mennä overlappaavasti tai sitten kaikki muutkin ikkunat muuttavat kokoaan. Tämänlaisia nokkeluuksia on huomattavat määrät mukana. Xmonadin mukana (tai siis kontribuutiopaketissa) tulee myös useita esimerkkejä tabien käytöstä. Kaippa awesomeenkin saa tabeja, mutta en löytänyt silloin.

LayeredWindow-skeemasta TiledWindow-viritelmiin hyppääminen on ymmärrettävästi iso homma. Mutta jotenkin se vain näkyy ja tuntuu luissa ja ytimissä kun kaikkea voi tehdä tehokkaasti näppäimistön välityksellä. Itse asiassa keksin juuri erään homman, joka on suurelta yleisöltä hävinnyt taito.

Ainakin vielä Windows 3.1:ssä on mahdollista siirtää ikkunoita näppäimistön välityksellä. Olisikohan se komento tyyliä Alt-väli ja Move. Sitten voi ikkunaa liikutella kuten mielii. Tosin en koskaan tainnut oppia sitä, kuinka liikuttelu lopetetaan, ja kuinka homma saatiin aluille. Ei nyt valitettavasti ole myöskään työvälineitä homman kokeilemiseen. Mutta sitä en muista, että uudemmissa windowseissa olisi tätä toimintoa. Eipä se ollut niin käytettäväkään. Mutta nyt se paljastus: Windowsissa sen LayeredWindow-skeemansa kanssa ei ole tainnut koskaan olla hyvää tapaa siirrellä ikkunoita nopeasti ja yksiselitteisesti näppäimistön välityksellä eri työp.. odotapas, eihän siellä ole sellaisia vieläkään. No, eri näytöille tai saman näytön sisällä eri paikalle. Ei onnistu myöskään Fluxboxissa ja tuskin näissä "käyttäjäystävällisissä" DE-paketeissa sen paremminkaan.

Nämä kaikki luottavat siihen seikkaan, että hiirellähän on luonnollista liikutella ikkunaa ympäristössä, jossa tulee tarjota pikselintarkka sijoittelun mahdollisuus. Tokihan Xmonad, kun siinä ensin ikkunan asettaa kelluvaksi, myös jättää ikkunan hiiren armoille (ellei kustomoi) ja kelluvalle ikkunalle ei voi juuri muuta tehdä oletusnäppäinreitein kuin iskeä se takaisin ruudukkoon. En kyllä enää tiedä itsekään, mitä hain takaa.

No sitä voi hakea takaa, että tileävässä ympäristössä ikkunan liikkuminen ruudulla näppäimistön voimin ei ole pelkästään tehokasta ja mukava bonus, vaan suorastaan elinehto. Hiirellä raahailu on sekä kankeata, epäselvää ja mahdollisesti tuhoisaa. Ihminen ei järin kykene (ali)tajunnassaan kalkuloimaan kursorin pikselintarkkaa sijaintia ruudulla kun raahailee ikkunoitaan. Kovasti keskittymällä saa ikkunan raahattua vaikka pikselilleen toisen ikkunan viereen, mutta se on tehotonta ja arvokasta aivotyötä valuu hukkaan.

Toinen asia, jota kovin moni tileävä ympäristö ei toteuta, on ikkunoiden minimointi. Totta puhuen tätä hommaa en itsekään ole tehnyt juuri lainkaan sen jälkeen kun vaihdoin linuxin puolelle. Täällä kun saa hakemalla hakea sellaista suosittua ympäristöä, joka ei tarjoaisi virtuaalipöytiä niin montaa kappaletta kuin mieli tekee. Modus operandi onkin siirrellä ei-halutut ikkunat piilossa olevalle työpöydälle siksi aikaa, kun tarvitsee tilaa muuhun hommaan. Xmonadin oletusnäppäimet ovat siinäkin suhteessa varsin tehokkaat ja mukavat. Esimerkiksi Ionin vastaavat … hyvä jos muistan niitä.

Vuonna 2007 olen sitä tuskastellut, että "okei, ikkunoiden tiletys kuulostaa hyvältä, mutta mitenkäs nämä pienet dialogi-ikkunat, miten satunnaiset ohjelmat ja sellainen hässäkkä." Hyvin ymmärrän itseäni vuosienkin takaa, mutta huoli on täysin aiheeton ainakin Xmonadin kanssa. Samoin muiden. Nämä ikkunamanagerit nimittäin luottavat yhteen hyvään kikkaan, joka toimii 96% tapauksissa: jos ikkuna ilmoittaa itsensä kiinteäkokoiseksi, se heitetään välittömästi nk. kelluntakerrokseen. Se toimii hyvin. Toki on monenlaisia dialogi-ikkunoita, mutta usein nämä ovat standardeja GTK-akkunoita ja Qt-ikkunoita, jotka on helppo kirjoittaa poikkeuksiksi. Eikä tässä mikään sotke mitään. Siitä pitää huolen jämäkkä algoritmi, joka pitää huolen ikkunoiden keskinäisestä järjestyksestä.

Joku loppukaneetti

Vinkkini kaikille sellaisille, jotka ovat samassa asemassa kuin minä aikanaan: jos haluatte opiskella ja totuttautua johonkin uuteen työpöytään, mutta vanha asetelma on joko liian tuttu tai muuten ei löydä motivaatiota, vaikka pinnan alla kyteekin liekki paremmasta huomisesta, kannattaa hypätä suoraan hommiin uuden ympäristön kanssa. Koulutyöt painavat päälle? Deadline viikon päässä ja 30 sivua dokumentaatiota korjaamatta? Softa ei mene kääntäjästä läpi? Kasviesitelmästä puuttuu vielä kansilehti? Ruotsinesitelmä tekemättä ja pitäisi huomenna pitää? Vaihtakaa juuri silloin uuteen maailmaan, koska teillä on liian kiire kaivata vanhoja tuttuja maisemia.

Minulla on ollut tässä pari parityötä meneillään, ja vaikka kummassakaan ei sinänsä ole paljoa työtä taikka deadlinet hirmuisen tiukkoja, olen niistä aina stressannut aika kovasti. En taida tykätä saada laiskan vaikutelmaa itsestäni, vaikka asia olisi miten vähänpätöinen tahansa. No, eniwei se oli minun tilaisuuteni hypätä pois LayeredWindow-skeemasta tileäviin ihanuuksiin. Fluxbox tarjosi hyvän kyydin näille kolmelle vuodelle, mitä melkein kerkesi tulemaan, ja nyt voin ottaa kovemman työkalun käyttöön. Xmonadin edut kun eivät suinkaan jää siihen tiletykseen. Reilu joustavuus ja sen sellainen tekee ihmeitä.

Tageja:

---
---

---

Aiheen vierestä