X Window System

KDE 3.5.

X Window System[a] on bittikarttanäytöille kehitetty verkkoläpinäkyvä ikkunointijärjestelmä.[2] 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ä.[3] X on riippumaton käyttöjärjestelmästä ja laitteistoalustasta kuten suorittimesta.[3] Se on saatavilla useisiin käyttöjärjestelmiin.[3]

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.

Historia

X-asiakasohjelman ajaminen SSH-yhteyden yli.

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ä.[3]

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ä.[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 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.[6][7][8][9] X oli valmistajariippumaton ja myöhemmin myös Sun tuki sitä.[10]

Vuonna 1988 perustettiin MIT X Consortium yleishyö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]

Vuonna 1992 MIT ja MIT X Consortiumin jäsenet päättivät siirtää hallinnan erilliseen riippumattoman organisaatioon.[11] Uusi organisaatio X Consortiumin Inc perustettiin vuonna 1993 ja kaikki oikeudet siirrettiin uuteen organisaatioon 1. tammikuuta 1994.[11] Uusi organisaatio julkaisi X11R6-version saman vuoden toukokuussa.[11]

Vuonna 1992 Yggdrasil Linux/GNU/X -jakelu yhdisti Linux-ytimen, GNU-ohjelmiston ja X-ikkunointijärjestelmän yhdeksi jakeluksi.[12]

Vuonna 1996 X Consortium ilmoitti siirtävänsä vastuun X:stä The Open Groupille vuoden 1997 alusta lähtien.[11] Open Group oli muodostettu Open Software Foundationin (OSF) ja X/Openin yhdistyessä.[13] Vuonna 1998 Open Group julkaisi X11R6.4, jonka lisenssiehtojen muutos ei kelvannut useille kehittäjille.[14] Myöhemmin samana vuonna Open Group julkaisi saman version uudelleen eri lisenssillä.[14] Toukokuussa 1999 Open Group perusti X.Orgin, joka teki julkaisut X11R6.5.1:stä eteenpäin.[3][15]

Varhaisesta 1990-luvusta lähtien varhaiselle 2000-luvulle kehitystä oli tapahtunut XFree86-toteutuksen parissa.[16] Projekti oli nimetty sanaleikkinä X386-toteutuksen mukaan (Free kuulostaa samalta kuin englanninkielen kolmea tarkoittava sana three), jonka uudemmat versiot myytiin kaupallisesti.[16] XFree86 oli yleinen Linux- ja BSD-alustoilla käytetty toteutus.[16] Kehittäjien välisen konfliktin ja kiistaa aiheuttaneen lisenssimuutoksen johdosta XFree86-versio poistettiin useista jakeluista.[16] Kehitys on jatkunut Xserver- ja X.Org-toteutuksien parissa.[16]

Tammikuussa 2005 perustettiin X.Org Foundation, joka on perustettu yleishyödyllisenä järjestönä.[14] 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.[14]

Arkkitehtuuri

X:n asiakas-palvelinmalli.

X perustuu asiakas-palvelin-arkkitehtuuriin.[17] 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ä.[18] Verkkoprotokollan sijaan asiakas ja palvelin voivat käyttää jaettua muistia (MIT-SHM laajennuksella) nopeampaan kommunikointiin.[19]

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.

Network Computing Devices NCD-88k X-pääte.

Ikkunointi

X Window System tukee yhtä tai useampaa näyttöä, joilla voi olla päällekkäisiä ikkunoita tai ali-ikkunoita.[20] X Window Systemissä näyttö (engl. screen) on fyysinen tietokonenäyttö (engl. monitor), joka voi olla värillinen, harmaasävyinen tai mustavalkoinen.[20] 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ä).[20]

Ikkunat järjestetään hierarkioihin, jossa ylimmäisenä on juuri-ikkuna, joka kattaa jokaisen näytön.[20] Juuri-ikkuna on osittain tai täysin lapsi-ikkunoiden peittämä.[20] Kaikilla ikkunoilla paitsi juuri-ikkunalla on vanhempi.[20] Lapsi-ikkunoilla voi olla omia lapsi-ikkunoita.[20]

ICCCM

X11-ikkunointi on tietoisesti suunniteltu nimenomaan mekanismille eikä käytännölle.[21] 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.[21] 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.[22][21]

ICCCM liittyy muun muassa leikkaa-ja-liimaa -toiminnon toteuttamiseen asiakasohjelmien välillä.[23] Freedesktop.orgin mukaan X-asiakasohjelmat eivät ole toteuttaneet leikepöytää johdonmukaisella tavalla ja määrittelee lisäohjeita.[24]

ICCCM:ää on kritisoitu vaikeaksi toteuttaa huolimatta siitä, että määrittely on lyhyt.[25] 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ää.[26]

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.[27]

EGL on Khronos Groupin rajapinta ikkunointijärjestelmän kanssa toimintaan, jota voidaan käyttää eri alustoilla ja eri ikkunointijärjestelmillä.[28]

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.[29] Xft on kirjasto, joka on suunniteltu toimimaan FreeType-kirjaston kanssa.[30] Xft ei sisällä konfigurointia vaan on tarkoitettu toimimaan fontconfigin kanssa.[31]

X-ikkunoinnille on myös xfs (X Font Server) -palvelinohjelma, joka jakaa kirjaintyyppejä X-palvelimille.[32]

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.[33] 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".[33] Yksi merkittävä ominaisuus ikkunanhallintaohjelmissa on keino käynnistää muita ohjelmia, joko syöttämällä ohjelman nimi tai käynnistysvalikon avulla.[33]

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

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.[34] Motif-kirjastolle on kehitetty avointa kloonia nimellä Lesstif, jonka kehitys lopetettiin kun Motif julkaistiin LGPL-lisenssillä.[35][36]

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):[37]

  • OpenText (ennen Hummingbird) Exceed
  • X-Win32
  • WinaXe
  • Xmanager

Tulevaisuus

X-ikkunointia on yritetty yksinkertaistaa ja tehostaa useita kertoja.[38] 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.[39] 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.[40]

X11-protokollan seuraajalle X12 on olemassa suunnitelmia mutta ei toteutusta.[41][42] X12 ei ollut vakavasti otettava X11:n seuraaja, mutta se auttoi tunnistamaan X11:sta ongelmakohdat.[43]

Katso myös

Huomioita

  1. X Consortium, Inc. suosittelee käytettäväksi nimiä: X, X Window System, X Version 11, X Window System, Version 11 tai X11[1]

Lähteet

  • Barkakati, Nabajyoti: X Window System programming. Indianapolis (Ind.): SAMS Publishers, 1994. ISBN 0-672-30542-9. (englanniksi)

Viitteet

  1. X(7) manual page xfree86.org. Viitattu 1.12.2023. (englanniksi)
  2. Chapter 1: Introduction to Xlib tronche.com. Viitattu 9.5.2022. (englanniksi)
  3. a b c d e f g h i j The X Window System: A Brief Introduction linfo.org. Viitattu 25.11.2017.
  4. James Gettys: SNAP Computing and the X Window System (PDF) kernel.org. 2005. Viitattu 11.7.2021. (englanniksi)
  5. Larabel, Michael: Today Marks 30 Years Since The Release Of X11 Phoronix. Viitattu 17.9.2017.
  6. Raymond, Eric S., "The Magic Cauldron" kirjassa The Cathedral & The Bazaar, O'Reilly, 2001 (1. painos 1999), Sebastopol, Yhdysvallat
  7. History of Windowing Systems cs.umd.edu. Viitattu 11.9.2019. (englanniksi)
  8. 1. Yet Another Language? docstore.mik.ua. Viitattu 11.9.2019. (englanniksi)
  9. The X Windowing System – Internet Archive
  10. a b Mike Azzara: X `Window Of Opportunity' Opens Wide 20.3.1989. UNIX Today!. Viitattu 11.9.2019. (englanniksi)
  11. a b c d X Consortium Definition linfo.org. Viitattu 11.9.2019. (englanniksi)
  12. The Daemon, the GNU and the Penguin, by Dr. Peter H. Salus - Ch. 20 Groklaw. Arkistoitu 8.11.2005. Viitattu 25.11.2017.
  13. The Open Group Definition linfo.org. Viitattu 17.8.2019. (englanniksi)
  14. a b c d X.Org Definition linfo.org. Viitattu 11.9.2019. (englanniksi)
  15. Chapter 1. Introduction to the X Window System oreilly.com. Viitattu 14.9.2020. (englanniksi)
  16. a b c d e XFree86 Definition linfo.org. Viitattu 11.9.2019. (englanniksi)
  17. 3. The X Window System Architecture: overview tldp.org. Viitattu 8.11.2021. (englanniksi)
  18. https://xwindow.angelfire.com/page22.html
  19. Jonathan Corbet & Keith Packard: MIT-SHM—The MIT Shared Memory Extension How the shared memory extension works xfree86.org. Viitattu 2.12.2021. (englanniksi)
  20. a b c d e f g 1.1. Overview of the X Window System tronche.com. Viitattu 9.5.2022. (englanniksi)
  21. a b c 1. Introduction tronche.com. Viitattu 8.11.2021. (englanniksi)
  22. Adrian Nye: X Protocol Reference Manual for X11 Version 4, Release 6, s. 393. O'Reilly. ISBN 1-56592-083-X. Teoksen verkkoversio. (englanniksi)
  23. 2. Peer-to-Peer Communication by Means of Selections tronche.com. Viitattu 8.11.2021. (englanniksi)
  24. clipboards-spec specifications.freedesktop.org. Viitattu 8.11.2021. (englanniksi)
  25. Re: [SLUG Ximian / Gnome and Xalf] raw.githubusercontent.com. Viitattu 8.11.2021. (englanniksi)
  26. Re: ICCCM compliance? lists.debian.org. Viitattu 8.11.2021. (englanniksi)
  27. OpenGL Graphics with the X Window System (PDF) khronos.org. Viitattu 17.11.2021. (englanniksi)
  28. EGL Overview khronos.org. Viitattu 17.11.2021. (englanniksi)
  29. X Logical Font Description Conventions x.org. Viitattu 17.11.2021. (englanniksi)
  30. Xft x.org. Viitattu 17.11.2021. (englanniksi)
  31. 2. Installing fonts x.org. Viitattu 17.11.2021. (englanniksi)
  32. xfs x.org. Viitattu 17.11.2021. (englanniksi)
  33. a b c 4. Window Managers tldp.org. Viitattu 9.11.2021. (englanniksi)
  34. OPEN LOOK O'Reilly. Viitattu 28.11.2017.
  35. Motif motif.ics.com. Viitattu 28.11.2017.
  36. The LessTif Homepage lesstif.sourceforge.net. Viitattu 28.11.2017.
  37. X servers for Windows teamdynamix.umich.edu. Viitattu 6.11.2020. (englanniksi)
  38. Byfield, Bruce: Is Wayland the New X? Linux Magazine. Viitattu 13.2.2017.
  39. Wayland FAQ wayland.freedesktop.org. Viitattu 17.9.2017.
  40. Jonathan Corbet: LPC: Life after X lwn.net. 5.11.2010. Viitattu 14.10.2021. (englanniksi)
  41. Griffith, Eric: The Wayland Situation: Facts About X vs. Wayland Phoronix. Viitattu 13.2.2017.
  42. X12 x.org. Viitattu 13.2.2017.
  43. Bruce Byfield: Is Wayland the New X? linux-magazine.com. Viitattu 18.10.2023. (englanniksi)

Aiheesta muualla

Commons
Commons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta X Window System.