Ikkunanhallintaohjelma

Ikkunanhallintaohjelma (myös ikkunointiohjelma, ikkunamanageri, jne.) hallitsee ikkunoiden paikkaa graafisessa käyttöliittymässä. Tyypillisesti ikkunanhallintaohjelma piirtää ikkunoille reunat ja otsikkopalkin sekä huolehtii siitä, että käyttäjä pystyy liikuttamaan ja muuttamaan ikkunoiden kokoa näytöllä. Myös erilaiset tehosteet, kuten läpinäkyvät ikkunat, voivat olla ikkunanhallintaohjelman toteuttamia. Työpöydällä olevat kuvakkeet eivät yleensä sisälly ikkunanhallintaohjelmaan, vaan ovat osa laajempaa työpöytäympäristöä.
Useissa järjestelmissä, kuten Microsoft Windowsin ja Apple OS X:n käyttämissä ikkunointijärjestelmissä, ikkunanhallinta on integroitu ikkunointijärjestelmään, eikä sitä yleensä saa vaihdettua.
Unix- ja Linux-ympäristöissä käytetyssä X Window Systemissä ikkunanhallintaohjelma on ikkunoinnista erotettu ohjelma, ja tämän vuoksi helposti vaihdettavissa. Yhtenäisen työpöytäympäristön puuttuessa ikkunanhallintaohjelmiin on kuitenkin lisätty ikkunanhallintaan varsinaisesti kuulumattomia ominaisuuksia. Näitä ovat esimerkiksi mahdollisuus käynnistää muita ohjelmia. Nykyään näiden ominaisuuksien rooli on silti pienentynyt, sillä suuri osa käynnistysvalikoista ja apuohjelmista on sulautettu osaksi laajempia työpöytäympäristöjä. 
X Window Systemin kanssa kilpaileva ratkaisu oli muun muassa Sun Microsystemsin NeWS, joka oli suljettua lähdekoodia ja hävisi muiden yhtiöiden perustettua X Window Consortiumin.
Yleisin tapa toteuttaa ikkunanhallintaohjelma X:ssä on ns. re-parenting window manager, joka kaappaa asiakassovelluksen huipputason ikkunan (top-level window) ja siirtää sen oman ikkunansa sisälle, johon se piirtää kehykset.
X:n ikkunanhallintaohjelmien kehitys.
X:n ensimmäinen ikkunanhallintaohjelma oli DECin uwm (Ultrix Window Manager), joka julkaistiin 1985. Se otettiin mukaan versio X10R3:een xwm:n ja xnwm:n kanssa, mutta vain uwm siirrettiin X11:lle, jossa se oli vakioikkunanhallintaohjelma julkaisuissa X11R1–X11R3. Päinvastoin kuin nykyaikaiset ikkunanhallintaohjelmat, uwm ei piirtänyt kehyksiä, vaan ikkunoita liikuteltiin ja niiden kokoa muuteltiin hiirellä vetämällä control/shift pohjassa.
Julkaisusta X11R4 (julkaistu vuonna 1989) lähtien X:n oletusikkunanhallintaohjelmana oli Tom LaStrangen kehittämä twm (Tom's Window Manager). Twm oli myös ensimmäinen ICCCM-määrittelyn täyttävä ikkunanhallintaohjelma.
LaStrangen swm:ssä oli mukana virtuaalityöpöytä, jonka avulla X:n ikkunointialue oli laajempi kuin fyysinen näyttöalue. swm oli ensimmäinen virtuaalityöpöydän sisältävä ikkunanhallintaohjelma, jonka jälkeen tulivat muun muassa vtwm, tvtwm ja olvwm. swm sisälsi myös yksinkertaisen istuntohallinnan (), jonka avulla käyttäjä saattoi tallettaa ja jatkaa istuntoa myöhemmin: SunViewin vastaava salli tallettaa ikkunoiden koot ja sijainnit.
LaStrange kehitti twm:ää edelleen ja loi tvtwm:n, joka sisälsi virtuaalityöpöydät. Niiden avulla näytön saattoi jakaa useampiin "tiloihin", joiden välillä voi vaihdella. Toisessa tilassa olevat ikkunat ovat edelleen auki ja ohjelmat toiminnassa, mutta piilotettuina. tvtwm julkaistiin ensimmäisen kerran elokuussa 1990.
Ikkunanhallintaohjelmissa oli yleensä jonkinlainen mahdollisuus käynnistää muita ohjelmia, kuten pääte-emulaattori. Ohjelmien käynnistys tapahtui ikkunanhallintaohjelman valikoista, joihin käynnistettävät ohjelmat lisättiin tekstieditorilla muokkaamalla asetustiedostoa.
Suosituin twm:n seuraaja oli fvwm, jonka ominaisuuksiltaan oli samanlainen, mutta ulkonäöltään huomattavasti miellyttävämpi. Siitä kehitettiin edelleen muutamia johdannaisia, kuten Fvwm95, joka kopioi Microsoftin vuonna 1995 ilmestyneen uuden Windows95:n ulkonäön. Fvwm ja sen seuraajat mahdollistivat liitännäisten luomisen, joilla toteutettiin pieniä apuohjelmia kuten Pager, joka näytti kuvan virtuaalityöpöydistä ja niissä olevista ohjelmista, sekä erilaisia ohjelmankäynnistyspalkkeja.
Uusien työpöytäympäristöjen ilmestymisen myötä (KDE 1998 ja GNOME 1999) ikkunanhallintaohjelman rooli supistui minimiin, koska työpöytäympäristö itsessään sisälsi aiemmin niiden toteuttaman toiminnallisuuden. KDE on käyttänyt alusta lähtien omaa KWin-ohjelmaansa ikkunanhallintaan, kun GNOME taas turvautuu ulkoiseen ohjelmaan.
2000-luvun alussa Keith Packard esitteli X Rendering Extension (Render) laajennoksen, joka toi X-ikkunointiin mahdollisuuden Porter-Duff-piirto-operaatioihin. Kehitettiin kokeellisia ohjelmia jotka mahdollistivat läpinäkyvyyden käytön. Sittemmin piirtoon alettiin käyttää OpenGL:n ominaisuuksia, joissa ohjelmat piirtävät ensin tekstuuriin, joista koosto-ohjelma (composite manager) kokoaa kuvan näytölle. Koosto-ohjelman ominaisuudet yhdistettiin ikkunanhallintaohjelmaan (Compositing window manager), joka mahdollistaa ikkunoiden pyörittelyt ja erilaiset graafiset efektit. Ensimmäinen merkittävä nämä ominaisuudet toteuttanut ohjelma oli Compiz.
Lajityyppejä.
Kompositoiva ikkunanhallinta.
Kompositoiva ikkunanhallintaohjelma yhdistää sekä ikkunanhallintaohjelman että "kompositorin". Kompositorin kanssa asiakasohjelmat renderöivät omiin piilossa oleviin puskureihin. X11-ikkunoinnissa kompositorin on aktiivisesti haettava näytettävä tieto asiakasohjelmista kun taas Wayland-ikkunoinnissa asiakasohjelmat lähettävät tiedon.
Perinteinen X11-renderöinti käytti "välitöntä moodia" ("immediate mode") suoraan näytölle renderöintiin (ilman kompositointia), joka aiheuttaa virheitä kuten puutteellista renderöintiä, "repeytymistä" tai vilkkumista.