X on standardi,protokolla sekä referenssitoteutus, jonka uusimmasta pääversiosta käytetään nimeä X11.[3]
X osaa piirtää suorakulmion muotoisia, päällekkäisiä, hierarkkisia ikkunoita, joihin voidaan piirtää tekstiä ja grafiikkaa. Lisäksi se tukee erilaisia syöttölaitteita, kuten hiiriä ja näppäimistöjä. X ei määrää mitään käyttöliittymää, vaan sitä voi vapaasti vaihtaa.
X:n edeltäjä oliW Window System (W)-niminen ikkunointijärjestelmä, jota käytettiinStanfordin yliopiston kokeellisen V-käyttöjärjestelmän päällä.[3]
X:n kehittäminen alkoiMIT:ssä vuonna 1984Jim Gettysin jaBob Scheiflerin yhteistyöllä. Gettys oli mukanaIBM:n, MIT:n jaDEC:n yhteisprojektissa.Project Athenan tavoitteena oli tarjota yhtenäinen tapa käyttää eri valmistajien epäyhteensopivia järjestelmiä.[3] Project Athenassa visiona oli että opiskelijat ja opetushenkilökunta voisivat käyttää mitä hyvänsä tietokonetta, joka olisi kätevin tai sopivin heidän työhönsä.[4]
X1 otettiin käyttöön kesäkuussa 1984. Seuraavat julkaisut seuraavana vuonna olivat X6, X9 ja X10. Useiden tahojen pyynnöstä X10R3 (Version 10 Release 3) julkaistiin tammikuussa 1986 MIT:n ulkopuolelle ja oli ensimmäinen laajamittaiseen käyttöön levinnyt versio.[3] Nykyistä protokollaa käyttävä X11 julkaistiin syyskuussa 1987.[5]
DEC tuki X Window Systemiä rahallisesti ja tarjoamalla työntekijöitä toivoen sen muodostuvan standardiksi, koska DEC pyrki siirtämään kilpailua pois graafisen käyttöympäristön alalta kohti tietokonelaitteistoa, jossa se katsoi olevansa vahvempi. Tuki X Window Systemille oli suunnattu etenkinSun MicrosystemsinNeWS -tuotetta vastaan, joka oli samantyyppinen, mutta perustui suljettuun lähdekoodiin.[6][7][8][9] X oli valmistajariippumaton ja myöhemmin myös Sun tuki sitä.[10]
Vuonna 1988 MIT X Consortium perustettiinyleishyödyllisenä yhteisönä.[3] X Consortiumin perustajiin kuuluivat DEC, DG, IBM ja 13 muuta jäsentä.[10] Organisaatio kehitti X:ää eteenpäin ja teki julkaisut X11R2:sta (1988) julkaisuun X11R6 (1996) asti.[3] X Window Systemin kehitys lamaantui, koska eri tahot tekivät siitä oman suljetunforkkinsa eivätkä jakaneet koodia takaisin yhteiseen X Consortiumin ylläpitämään versioon.[11]
Vuonna 1992 MIT ja MIT X Consortiumin jäsenet päättivät siirtää hallinnan erilliseen riippumattoman organisaatioon.[12] Uusi organisaatio X Consortiumin Inc perustettiin vuonna 1993 ja kaikki oikeudet siirrettiin uuteen organisaatioon 1. tammikuuta 1994.[12] Uusi organisaatio julkaisi X11R6-version saman vuoden toukokuussa.[12]
Vuonna 1996 X Consortium ilmoitti siirtävänsä vastuun X:stäThe Open Groupille vuoden 1997 alusta lähtien.[12] Open Group oli muodostettuOpen Software Foundationin (OSF) jaX/Openin yhdistyessä.[14] Vuonna 1998 Open Group julkaisi X11R6.4, jonka lisenssiehtojen muutos ei kelvannut useille kehittäjille.[15] Myöhemmin samana vuonna Open Group julkaisi saman version uudelleen eri lisenssillä.[15]Toukokuussa 1999 Open Group perustiX.Orgin, joka teki julkaisut X11R6.5.1:stä eteenpäin.[3][16]
Varhaisesta 1990-luvusta lähtien varhaiselle 2000-luvulle kehitystä oli tapahtunutXFree86-toteutuksen parissa.[17] Projekti oli nimetty sanaleikkinäX386-toteutuksen mukaan (Free kuulostaa samalta kuin englanninkielen kolmea tarkoittava sanathree), jonka uudemmat versiot myytiin kaupallisesti.[17] XFree86 oli yleinenLinux- jaBSD-alustoilla käytetty toteutus.[17] Kehittäjien välisen konfliktin ja kiistaa aiheuttaneen lisenssimuutoksen johdosta XFree86-versio poistettiin useista jakeluista.[17] Kehitys on jatkunut Xserver- ja X.Org-toteutuksien parissa.[17]
Tammikuussa 2005 perustettiin X.Org Foundation, joka on perustettu yleishyödyllisenä järjestönä.[15] Järjestö julkaisi X11R6.9- ja X11R7.0-versiot joulukuussa 2005, joista jälkimmäisessä on käytössäGNU-projektin käännöstyökalut.[15]
X perustuuasiakas-palvelin-arkkitehtuuriin.[18] Laite tai ohjelma, joka piirtää ikkunoita ja grafiikkaa ruudulle, on X-palvelin (X Window System display server). Ohjelmat, jotka haluavat piirtää ikkunansa ruudulle tai ottavat muuten yhteyden palvelimeen, ovat asiakkaita. X:n verkkoläpinäkyvyys merkitsee sitä, että palvelin ja asiakas voivat olla eri tietokoneilla ja toimia tietokoneen käyttäjälle läpinäkyvästi.[19] Asiakas ja palvelin voivat käyttääUnix domain socket -kommunikaatiota tai TCP/IP-yhteyttä.[20]Verkkoprotokollan sijaan asiakas ja palvelin voivat käyttääjaettua muistia (MIT-SHM laajennuksella) nopeampaan kommunikointiin.[21] X11-protokolla ei ole tehokas muissa kuin lähiverkoissa johtuen useista suunnittelupäätöksistä, joista tärkeimpiä ovat, että protokolla vaatii paljon tiedonvälitystä verkon yli, ja että monet toiminnot vaativat kättelyä johtaen pitkään viiveeseen suuren latenssin verkoissa.[22] Tyypillisesti kannettavan tai pöytätietokoneen käyttäjällä sekä asiakas- että palvelinohjelmat ajetaan samalla koneella.[23]
X-palvelinta voidaan suorittaa Unix- tai Linux-työasemalla tai se voi olla yksi ohjelma tai ikkuna Windows-käyttöjärjestelmän työpöydällä. Pelkkään X:n käyttöön tarkoitettujaX-päätelaitteita oli ennen myynnissä, mutta nykyisin halvat henkilökohtaiset tietokoneet Linux-käyttöjärjestelmällä ovat korvanneet ne.
X Window System tukee yhtä tai useampaa näyttöä, joilla voi olla päällekkäisiä ikkunoita tai ali-ikkunoita.[24] X Window Systemissä näyttö (engl.screen) on fyysinentietokonenäyttö (engl.monitor), joka voi olla värillinen, harmaasävyinen tai mustavalkoinen.[24] Työasemassa voi olla useita näyttöjä: joukko näyttöjä, jota yksi käyttäjä ohjaa on työpöytä tai näyttö (engl.display, huom. suomeksi päällekkäisiä termejä).[24]
Ikkunat järjestetään hierarkioihin, jossa ylimmäisenä on juuri-ikkuna, joka kattaa jokaisen näytön.[24] Juuri-ikkuna on osittain tai täysin lapsi-ikkunoiden peittämä.[24] Kaikilla ikkunoilla paitsi juuri-ikkunalla on vanhempi.[24] Lapsi-ikkunoilla voi olla omia lapsi-ikkunoita.[24]
Kaavio X-palvelimen sijainnista ja ikkunnoinin hallinnasta.
X11-ikkunointi on tietoisesti suunniteltu nimenomaan mekanismille (engl.mechanism) eikä käytännölle (engl.policy).[25] Mekanismit toteuttavat käytännöt, jolloin mekanismit suunnitellaan tukemaan mahdollisimman laajaa joukkoa eri käytäntöjä.[26] X-asiakasohjelma kommunikoi palvelimen kanssaX Window System Protocol, Version 11 -protokollan avulla ja voi toimia oikein yksistään, mutta ei toimi oikein muiden samaa palvelinta käyttävien ohjelmien kanssa.[25]Tästä johtuen asiakasohjelmien väliseen kommunikaatioon on kehitetty ICCCM-määrittely (engl.Inter-Client Communication Conventions Manual). ICCCM kuvailee miten valinnat, ikkunoiden ominaisuudet ja resurssit välitetään.[27][25]
ICCCM liittyy muun muassaleikkaa-ja-liimaa -toiminnon toteuttamiseen asiakasohjelmien välillä.[28]Freedesktop.orgin mukaan X-asiakasohjelmat eivät ole toteuttaneetleikepöytää johdonmukaisella tavalla ja määrittelee lisäohjeita.[29]
ICCCM:ää on kritisoitu vaikeaksi toteuttaa huolimatta siitä, että määrittely on lyhyt.[30]ICCCM:n ohjeita myös rikotaan tarkoituksella: ikoneille sallitaan vain yksi bitti väreille (musta tai valkoinen) ja muutoin olisi käytettävä toista tapaa, jossa on oma rajoitteensa; käytännössä ohjelmat sallivat useampia värejä kuin mitä ICCCM:n mukaan voi käyttää.[31]
GLX on laajennus X Window SystemiinOpenGL:n käyttöä varten. X-ikkunoinnin verkon yli käyttöä varten OpenGL-renderöintikomennot voidaankapseloida X-protokollaan. Koska3D-grafiikan renderöinnissä suorituskyky on tärkeää voidaan useat vaiheet ohittaa kun käytetäänsuoraa renderöintiä (kun prosessilla on suora pääsygrafiikkaliukuhihnaan.[32]DRI on tekniikka, joka ohittaa X-palvelimen kokonaan.[33][34]
EGL onKhronos Groupin rajapinta ikkunointijärjestelmän kanssa toimintaan, jota voidaan käyttää eri alustoilla ja eri ikkunointijärjestelmillä.[35]
XLFD (X Logical Font Description) on X-ikkunoinnin tapakirjaintyyppien kuvaamiseen, joka on tarkoitettu toimimaan eri X-palvelimien, tiedostojärjestelmien ja kirjainkokoelmien kanssa.[36] Xft on kirjasto, joka on suunniteltu toimimaanFreeType-kirjaston kanssa.[37] Xft ei sisällä konfigurointia vaan on tarkoitettu toimimaanfontconfigin kanssa.[38] 2000-luvun alussa X Rendering Extension -laajennos poisti tarpeen käsitellä kirjaintyyppejä X-palvelimessa, jolloin ne voitiin käsitellä asiakasohjelmassa. Laajennos toi useita muutoksia ikkunoinnissa käytettyyn renderöintimalliin.[39]
X-ikkunoinnille on myös xfs (X Font Server) -palvelinohjelma, joka jakaa kirjaintyyppejä X-palvelimille.[40]
XDMCP (X Display Manager Control Protocol) on X-ikkunoinnin käyttämä palvelu sisäänkirjautumiseen. Itsenäinen näyttö kuten X-pääte käyttää XDMCP-protokollaa.[41]
Koska X-palvelin toteuttaa vain mekanismin eikä käytäntöä on olemassaikkunanhallintaohjelmia, jotka hallitsevat näytöllä näkyvää tilaa.[42] Ikkunanhallintaohjelmat ovat X:n asiakasohjelmia, jotka päättävät minne ikkunat asetetaan, tarjoaa mekanismit ikkunoiden hallintaan kuten koon ja sijainnin päättämiseen ja ikkunoiden "koristeluun".[42] Yksi merkittävä ominaisuus ikkunanhallintaohjelmissa on keino käynnistää muita ohjelmia, joko syöttämällä ohjelman nimi tai käynnistysvalikon avulla.[42]
X11:lle on kehitetty monia yhtenäisen käyttöliittymän antaviatyöpöytäympäristöjä (desktop environment). Aikaisimpia olivatSunin kehittämä ja käyttämäOpenWindows ja DECinVMS:stä kotoisin olevaDECwindows. Lähes kaikki kaupalliset Unix-valmistajat siirtyivät kuitenkin The Open Groupin kehittämäänCommon Desktop Environmentiin (CDE). Muita työpöytäympäristöjä oli muun muassaHP:nVUE-ympäristö (Visual User Environment).
Yhtenäisen käyttöliittymän tarjoamiseenMatthias Ettrich kertoi lokakuussa 1996KDE-projektistaan. KDE 1.0 julkaistiin 12. heinäkuuta 1998. KDE käyttiQt-käyttöliittymäkirjastoa, jonka lisenssi ei ollutavoin. Toinen ryhmäMiguel de Icazan johdolla aloitti siksi elokuussa 1997GNOME-projektin (GNU Network Object Model Environment), joka on nykyisinGNU-projektin virallinen työpöytäympäristö.
X11-ohjelmointia tehdään sen alimmalla tasollaXlib-kirjaston avulla. Historiallisesti on kehitetty useita kirjastoja helpottamaan ohjelmointityötä.Yksi varhaisimmista on X Athena Widgets (Xaw). Tämä kirjasto on useiden X:n mukana toimitettavien pikkuohjelmien pohjana.1990-luvun alussa Unixissa kilpailivat kaksi kirjastoa, Sunin ja AT&T:nOPEN LOOK (Xview) jaMotif (Xm), jota tukivat IBM, DEC, HP ja SCO. Motifista tuli 1993 kaupallisten Unixien standardi jaCDE-ympäristön pohja.[43] Motif-kirjastolle on kehitetty avointa kloonia nimelläLesstif, jonka kehitys lopetettiin kun Motif julkaistiinLGPL-lisenssillä.[44][45][46]
GIMP-kuvankäsittelyohjelman yhteydessä kehitettyGTK-kirjasto ja norjalaisen TrollTechinQt-kirjasto ovat suosittuja vaihtoehtoja käyttöliittymäkirjastoille.[47] Muita kirjastoja ovat muun muassaFLTK,wxWidgets jaTk, jota on käytetty komentosarjakielten kanssa.
X-ikkunointia on yritetty yksinkertaistaa ja tehostaa useita kertoja.[50]Linux-käyttöjärjestelmille on kehitettyWayland-ohjelmistoa korvaamaan X11-ikkunointijärjestelmä: Wayland hyödyntää useita kehitettyjä tekniikoita ja X-palvelimen ominaisuudet ovat suurelta osin jo siirtyneetkäyttöjärjestelmän ytimeen taijaettuihin kirjastoihin.[51]X-ikkunoinnin kehitysaikana jaettujen kirjastojen käyttö ei ollut mahdollista ja muistirajoituksien vuoksi tehtiin X-palvelin: myöhemmin jaettujen kirjastojen tuki on kehittynyt ja koodin käyttömahdollisuudet ovat parantuneet.[52] Myöhemmin kehitetyt tekniikat kutenVNC voivat toimia tehokkaammin verkon yli kuin X:n oma protokolla, jolloin ikkunointijärjestelmän ei tarvitse suoraan tukea verkkoläpinäkyvyyttä.[52][53] Videokuvan näyttämistä ja laitteistokiihdytystä varten on kehitetty VDPAU- ja VAAPI-rajapinnat.[52]
X11-protokollan seuraajalle X12 on olemassa suunnitelmia mutta ei toteutusta.[54][55] X12 ei ollut vakavasti otettava X11:n seuraaja, mutta se auttoi tunnistamaan X11:sta ongelmakohdat.[56]
↑Adrian Nye: X Protocol Reference Manual for X11 Version 4, Release 6, s. 393. O'Reilly, tammikuu 1995. ISBN 1-56592-083-XTeoksen verkkoversio. (englanniksi)