X Window System
X Window System[lower-alpha 1] on bittikarttanäytöille kehitetty verkkoläpinäkyvä ikkunointijärjestelmä.[1] Avoimeen lähdekoodiin perustuva X Window System syrjäytti kilpailijansa jo suhteellisen varhain ja muodostui ikkunointijärjestelmien de facto-standardiksi Unixeissa, Unixin kaltaisissa ja OpenVMS-käyttöjärjestelmissä.[2] X on riippumaton käyttöjärjestelmästä ja laitteistoalustasta kuten suorittimesta.[2] Se on saatavilla useisiin käyttöjärjestelmiin.[2]
X on standardi, protokolla sekä referenssitoteutus, jonka uusimmasta pääversiosta käytetään nimeä X11.[2]
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.
Historia
X:n edeltäjä oli W Window System (W)-niminen ikkunointijärjestelmä, jota käytettiin Stanfordin yliopiston kokeellisen V-käyttöjärjestelmän päällä.[2]
X:n kehittäminen alkoi MIT:ssä vuonna 1984 Jim Gettysin ja Bob Scheiflerin yhteistyöllä. Gettys oli mukana IBM:n, MIT:n ja DEC:n yhteisprojektissa. Project Athenan tavoitteena oli tarjota yhtenäinen tapa käyttää eri valmistajien epäyhteensopivia järjestelmiä.[2] 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ä.[3]
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.[2] Nykyistä protokollaa käyttävä X11 julkaistiin syyskuussa 1987.[4]
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 hardwarea, jossa se katsoi olevansa vahvempi. Tuki X Window Systemille oli suunnattu etenkin Sun Microsystemsin NeWS -tuotetta vastaan, joka oli samantyyppinen, mutta perustui suljettuun lähdekoodiin.[5][6][7][8] X oli valmistajariippumaton ja myöhemmin myös Sun tuki sitä.[9]
Vuonna 1988 perustettiin MIT X Consortium yleishyödyllisenä yhteisönä.[2] X Consortiumin perustajiin kuuluivat DEC, DG, IBM ja 13 muuta jäsentä.[9] Organisaatio kehitti X:ää eteenpäin ja teki julkaisut X11R2:sta (1988) julkaisuun X11R6 (1996) asti.[2]
Vuonna 1992 MIT ja MIT X Consortiumin jäsenet päättivät siirtää hallinnan erilliseen riippumattoman organisaatioon.[10] Uusi organisaatio X Consortiumin Inc perustettiin vuonna 1993 ja kaikki oikeudet siirrettiin uuteen organisaatioon 1. tammikuuta 1994.[10] Uusi organisaatio julkaisi X11R6-version saman vuoden toukokuussa.[10]
Vuonna 1992 Yggdrasil Linux/GNU/X -jakelu yhdisti Linux-ytimen, GNU-ohjelmiston ja X-ikkunointijärjestelmän yhdeksi jakeluksi.[11]
Vuonna 1996 X Consortium ilmoitti siirtävänsä vastuun X:stä The Open Groupille vuoden 1997 alusta lähtien.[10] Open Group oli muodostettu Open Software Foundationin (OSF) ja X/Openin yhdistyessä.[12] Vuonna 1998 Open Group julkaisi X11R6.4, jonka lisenssiehtojen muutos ei kelvannut useille kehittäjille.[13] Myöhemmin samana vuonna Open Group julkaisi saman version uudelleen eri lisenssillä.[13] Toukokuussa 1999 Open Group perusti X.Orgin, joka teki julkaisut X11R6.5.1:stä eteenpäin.[2][14]
Varhaisesta 1990-luvusta lähtien varhaiselle 2000-luvulle kehitystä oli tapahtunut XFree86-toteutuksen parissa.[15] Projekti oli nimetty sanaleikkinä X386-toteutuksen mukaan (Free kuulostaa samalta kuin englanninkielen kolmea tarkoittava sana three), jonka uudemmat versiot myytiin kaupallisesti.[15] XFree86 oli yleinen Linux- ja BSD-alustoilla käytetty toteutus.[15] Kehittäjien välisen konfliktin ja kiistaa aiheuttaneen lisenssimuutoksen johdosta XFree86-versio poistettiin useista jakeluista.[15] Kehitys on jatkunut Xserver- ja X.Org-toteutuksien parissa.[15]
Tammikuussa 2005 perustettiin X.Org Foundation, joka on perustettu yleishyödyllisenä järjestönä.[13] 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.[13]
Arkkitehtuuri
X perustuu asiakas-palvelin-arkkitehtuuriin.[16] 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 käyttäjälle läpinäkyvästi.
Asiakas ja palvelin voivat käyttää Unix domain socket -kommunikaatiota tai TCP/IP-yhteyttä.[17] Verkkoprotokollan sijaan asiakas ja palvelin voivat käyttää jaettua muistia (MIT-SHM laajennuksella) nopeampaan kommunikointiin.[18]
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 tarkoitettuja X-päätelaitteita oli ennen myynnissä, mutta nykyisin halvat henkilökohtaiset tietokoneet Linux-käyttöjärjestelmällä ovat korvanneet ne.
- Katso myös: Kevyt asiakaspääte
Ikkunointi
X Window System tukee yhtä tai useampaa näyttöä, joilla voi olla päällekkäisiä ikkunoita tai ali-ikkunoita.[19] X Window Systemissä näyttö (engl. screen) on fyysinen tietokonenäyttö (engl. monitor), joka voi olla värillinen, harmaasävyinen tai mustavalkoinen.[19] 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ä).[19]
Ikkunat järjestetään hierarkioihin, jossa ylimmäisenä on juuri-ikkuna, joka kattaa jokaisen näytön.[19] Juuri-ikkuna on osittain tai täysin lapsi-ikkunoiden peittämä.[19] Kaikilla ikkunoilla paitsi juuri-ikkunalla on vanhempi.[19] Lapsi-ikkunoilla voi olla omia lapsi-ikkunoita.[19]
ICCCM
X11-ikkunointi on tietoisesti suunniteltu nimenomaan mekanismille eikä käytännölle.[20] X-asiakasohjelma kommunikoi palvelimen kanssa X 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.[20] 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.[21][20]
ICCCM liittyy muun muassa leikkaa-ja-liimaa -toiminnon toteuttamiseen asiakasohjelmien välillä.[22] Freedesktop.orgin mukaan X-asiakasohjelmat eivät ole toteuttaneet leikepöytää johdonmukaisella tavalla ja määrittelee lisäohjeita.[23]
ICCCM:ää on kritisoitu vaikeaksi toteuttaa huolimatta siitä, että määrittely on lyhyt.[24] 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ää.[25]
GLX
GLX on laajennus X Window Systemiin OpenGL:n käyttöä varten. X-ikkunoinnin verkon yli käyttöä varten OpenGL-renderöintikomennot voidaan kapseloida X-protokollaan. Koska 3D-grafiikan renderöinnissä suorituskyky on tärkeää voidaan useat vaiheet ohittaa kun käytetään suoraa renderöintiä (kun prosessilla on suora pääsy grafiikkaliukuhihnaan.[26]
EGL on Khronos Groupin rajapinta ikkunointijärjestelmän kanssa toimintaan, jota voidaan käyttää eri alustoilla ja eri ikkunointijärjestelmillä.[27]
XLFD, Xft
XLFD (X Logical Font Description) on X-ikkunoinnin tapa kirjaintyyppien kuvaamiseen, joka on tarkoitettu toimimaan eri X-palvelimien, tiedostojärjestelmien ja kirjainkokoelmien kanssa.[28] Xft on kirjasto, joka on suunniteltu toimimaan FreeType-kirjaston kanssa.[29] Xft ei sisällä konfigurointia vaan on tarkoitettu toimimaan fontconfigin kanssa.[30]
X-ikkunoinnille on myös xfs (X Font Server) -palvelinohjelma, joka jakaa kirjaintyyppejä X-palvelimille.[31]
Käyttöliittymä
Ikkunanhallintaohjelmat
Koska X-palvelin toteuttaa vain mekanismin eikä käytäntöä on olemassa ikkunanhallintaohjelmia, jotka hallitsevat näytöllä näkyvää tilaa.[32] 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".[32] Yksi merkittävä ominaisuus ikkunanhallintaohjelmissa on keino käynnistää muita ohjelmia, joko syöttämällä ohjelman nimi tai käynnistysvalikon avulla.[32]
Työpöytäympäristöt
X11:lle on kehitetty monia yhtenäisen käyttöliittymän antavia työpöytäympäristöjä (desktop environment). Aikaisimpia olivat Sunin kehittämä ja käyttämä OpenWindows ja DECin VMS:stä kotoisin oleva DECwindows. Lähes kaikki kaupalliset Unix-valmistajat siirtyivät kuitenkin The Open Groupin kehittämään Common Desktop Environmentiin (CDE). Muita työpöytäympäristöjä oli muun muassa HP:n VUE-ympäristö (Visual User Environment).
Yhtenäisen käyttöliittymän tarjoamiseen Matthias Ettrich kertoi lokakuussa 1996 KDE-projektistaan. KDE 1.0 julkaistiin 12. heinäkuuta 1998. KDE käytti Qt-käyttöliittymäkirjastoa, jonka lisenssi ei ollut avoin. Toinen ryhmä Miguel de Icazan johdolla aloitti siksi elokuussa 1997 GNOME-projektin (GNU Network Object Model Environment), joka on nykyisin GNU-projektin virallinen työpöytäympäristö.
Käyttöliittymäkirjastot
X11-ohjelmointia tehdään sen alimmalla tasolla Xlib-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:n OPEN LOOK (Xview) ja Motif (Xm), jota tukivat IBM, DEC, HP ja SCO. Motifista tuli 1993 kaupallisten Unixien standardi ja CDE-ympäristön pohja.[33] Motif-kirjastolle on kehitetty avointa kloonia nimellä Lesstif, jonka kehitys lopetettiin kun Motif julkaistiin LGPL-lisenssillä.[34][35]
GIMP-kuvankäsittelyohjelman yhteydessä kehitettiin avoimen lähdekoodin GTK-kirjasto Motifin korvaajaksi. Myös norjalaisen TrollTechin Qt-kirjastosta tuli suosittu. Tk-kirjastoa on käytetty komentosarjakielten kanssa.
Toteutukset
Virallisen referenssitoteutuksen lisäksi on muita toteutuksia, joista osa on kaupallisia (maksullisia):[36]
- OpenText (ennen Hummingbird) Exceed
- X-Win32
- WinaXe
- Xmanager
Tulevaisuus
X-ikkunointia on yritetty yksinkertaistaa ja tehostaa useita kertoja.[37] Linux-käyttöjärjestelmille on kehitetty Wayland-ohjelmistoa korvaamaan X11-ikkunointijärjestelmä: Wayland hyödyntää useita kehitettyjä tekniikoita ja X-palvelimen ominaisuudet ovat suurelta osin jo siirtyneet käyttöjärjestelmän ytimeen tai jaettuihin kirjastoihin.[38] 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.[39]
X11-protokollan seuraajalle X12 on olemassa suunnitelmia mutta ei toteutusta.[40][41]
Huomioita
- X Consortium, Inc. suosittelee käytettäväksi nimiä: X, X Window System, X Version 11, X Window System, Version 11 tai X11lähde?
Lähteet
- Barkakati, Nabajyoti: X Window System programming. Indianapolis (Ind.): SAMS Publishers, 1994. ISBN 0-672-30542-9. (englanniksi)
Viitteet
- Chapter 1: Introduction to Xlib tronche.com. Viitattu 9.5.2022. (englanniksi)
- The X Window System: A Brief Introduction linfo.org. Viitattu 25.11.2017.
- James Gettys: SNAP Computing and the X Window System (PDF) kernel.org. 2005. Viitattu 11.7.2021. (englanniksi)
- Larabel, Michael: Today Marks 30 Years Since The Release Of X11 Phoronix. Viitattu 17.9.2017.
- Raymond, Eric S., "The Magic Cauldron" kirjassa The Cathedral & The Bazaar, O'Reilly, 2001 (1. painos 1999), Sebastopol, Yhdysvallat
- History of Windowing Systems cs.umd.edu. Viitattu 11.9.2019. (englanniksi)
- 1. Yet Another Language? docstore.mik.ua. Viitattu 11.9.2019. (englanniksi)
- The X Windowing System – Internet Archive
- Mike Azzara: X `Window Of Opportunity' Opens Wide 20.3.1989. UNIX Today!. Viitattu 11.9.2019. (englanniksi)
- X Consortium Definition linfo.org. Viitattu 11.9.2019. (englanniksi)
- The Daemon, the GNU and the Penguin, by Dr. Peter H. Salus - Ch. 20 Groklaw. Arkistoitu 8.11.2005. Viitattu 25.11.2017.
- The Open Group Definition linfo.org. Viitattu 17.8.2019. (englanniksi)
- X.Org Definition linfo.org. Viitattu 11.9.2019. (englanniksi)
- Chapter 1. Introduction to the X Window System oreilly.com. Viitattu 14.9.2020. (englanniksi)
- XFree86 Definition linfo.org. Viitattu 11.9.2019. (englanniksi)
- 3. The X Window System Architecture: overview tldp.org. Viitattu 8.11.2021. (englanniksi)
- https://xwindow.angelfire.com/page22.html
- Jonathan Corbet & Keith Packard: MIT-SHM—The MIT Shared Memory Extension How the shared memory extension works xfree86.org. Viitattu 2.12.2021. (englanniksi)
- 1.1. Overview of the X Window System tronche.com. Viitattu 9.5.2022. (englanniksi)
- 1. Introduction tronche.com. Viitattu 8.11.2021. (englanniksi)
- Adrian Nye: X Protocol Reference Manual for X11 Version 4, Release 6, s. 393. O'Reilly. ISBN 1-56592-083-X. Teoksen verkkoversio. (englanniksi)
- 2. Peer-to-Peer Communication by Means of Selections tronche.com. Viitattu 8.11.2021. (englanniksi)
- clipboards-spec specifications.freedesktop.org. Viitattu 8.11.2021. (englanniksi)
- Re: [SLUG Ximian / Gnome and Xalf] raw.githubusercontent.com. Viitattu 8.11.2021. (englanniksi)
- Re: ICCCM compliance? lists.debian.org. Viitattu 8.11.2021. (englanniksi)
- OpenGL Graphics with the X Window System (PDF) khronos.org. Viitattu 17.11.2021. (englanniksi)
- EGL Overview khronos.org. Viitattu 17.11.2021. (englanniksi)
- X Logical Font Description Conventions x.org. Viitattu 17.11.2021. (englanniksi)
- Xft x.org. Viitattu 17.11.2021. (englanniksi)
- 2. Installing fonts x.org. Viitattu 17.11.2021. (englanniksi)
- xfs x.org. Viitattu 17.11.2021. (englanniksi)
- 4. Window Managers tldp.org. Viitattu 9.11.2021. (englanniksi)
- OPEN LOOK O'Reilly. Viitattu 28.11.2017.
- Motif motif.ics.com. Viitattu 28.11.2017.
- The LessTif Homepage lesstif.sourceforge.net. Viitattu 28.11.2017.
- X servers for Windows teamdynamix.umich.edu. Viitattu 6.11.2020. (englanniksi)
- Byfield, Bruce: Is Wayland the New X? Linux Magazine. Viitattu 13.2.2017.
- Wayland FAQ wayland.freedesktop.org. Viitattu 17.9.2017.
- Jonathan Corbet: LPC: Life after X lwn.net. 5.11.2010. Viitattu 14.10.2021. (englanniksi)
- Griffith, Eric: The Wayland Situation: Facts About X vs. Wayland Phoronix. Viitattu 13.2.2017.
- X12 x.org. Viitattu 13.2.2017.
Aiheesta muualla
- X.org (englanniksi)
- freedesktop.org (englanniksi)
- XFree86 (englanniksi)
- The X Window System - The Open Group (englanniksi)
- The XFree / X.Org fork and open source governance (englanniksi)
- Documentation for the X Window System (englanniksi)
- X Toolkit Intrinsics – C Language Interface (englanniksi)