# X Window System

El Sistema de Finestres X, conegut també com a X Window System, X11 o X és un sistema de finestres principalment per mostrar mapes de bits. És la interfície gràfica estàndard en els sistemes Unix, *NIX (Linux, BSD, ...) i OpenVMS, i és disponible per a la majoria dels sistemes operatius moderns.
X ens proporciona un entorn de funcionament, per al gestor de finestres, permet crear i moure finestres a la pantalla interaccionant amb el ratolí i el teclat. X no dirigeix la interfície d'usuari (se n'encarreguen altres programes). D'aquí que la quantitat i varietat en els entorns visuals sigui tan gran, (KDE, Gnome, FVWM...). També permet treballar en xarxa. Permet mostrar imatges, texts i vídeo, i interaccionar amb l'ordinador i programes d'una forma més intuïtiva i senzilla.

## Història de les X

Originalment, va ser desenvolupat per Robert Sheifler, el MIT i DEC basant-se en la feina de la Universitat Stanford, el sistema W. La pedra angular de les XWindow és la llibreria Xlib, que té les funcions de primitives gràfiques i controls sobre els dispositius d'entrada. Tot i que les XWindow són un sistema totalment funcional, normalment s'usen escriptoris com ara, KDE, Gnome, etc.

## Disseny

X utilitza el model client-servidor: un servidor X es comunica amb varis programes del client. El servidor accepta les comandes per la sortida gràfica (finestres) i torna l'entrada de l'usuari (des del teclat, el ratolí, o la pantalla tàctil). El servidor pot funcionar així:
* Una aplicació exhibint cap a una finestra d'un altre sistema de visualització.
* Un programa del sistema controlant la sortida vídeo d'un PC.
* Una peça de hardware dedicada.
Aquesta terminologia de client servidor (el terminal d'usuari sent el servidor i les aplicacions sent els clients) confon sovint a nous usuaris d'X, per què els termes semblen invertits. X pren la perspectiva de l'aplicació, en comptes de la de l'usuari final: X proporciona l'exhibició per pantalla i els serveis d'entrada/sortida a les aplicacions, així que és un servidor; les aplicacions utilitzen aquests serveis, per tant són els clients.
El protocol de comunicacions entre el servidor i el client opera transparent a la xarxa: el client i el servidor es poden executar en la mateixa o en diferents màquines, possiblement amb diferents arquitectures i sistemes operatius. Un client i un servidor poden inclús comunicar-se amb seguretat sobre Internet fent una connexió de túnel sobre una sessió xifrada de la xarxa.
Un client X pot emular un servidor X proporcionant serveis d'exhibició a d'altres clients. Això és conegut com a "X nesting" (niu X). Els clients de codi obert com Xnest i Xephyr suporten l'X nesting.
Per utilitzar un programa de client X sobre una màquina remota, l'usuari fa el següent:
* S'obre una finestra de terminal a la màquina local.
* Utilitzar telnet o ssh per connectar-se amb la màquina remota.
* Sol·licitar el servei local de pantalla/entrada (ex., export DISPLAY=[user's machine]:0 si no s'està utilitzant SSH amb X tunneling activat.)
El client X remot farà llavors una connexió al servidor X local de l'usuari, proporcionant l'exhibició per pantalla i l'entrada.
Alternativament, la màquina local pot executar un petit programa que es connecti amb la màquina remota i comenci l'aplicació client.
Exemples pràctics de clients remots inclouen:
* Administrant una màquina remota gràficament.
* Fer córrer una simulació de còmput intensiu a una màquina Unix remota i mostrar els resultats per pantalla en una d'escriptori Windows.
* Executar software gràfic a vàries màquines al mateix temps, controlades per una sola pantalla, teclat i ratolí.

## Principis

El 1984, Bob Scheifler i Jim Gettys van establir els principis inicials de X:
* No afegiu nova funcionalitat a menys que un implementador no pugui completar una aplicació real sense ella.
* Es tan important decidir què no és el sistema com decidir què és. No responguin a les necessitats de tothom, en comptes d'això, feu el sistema extensible perquè les necessitats addicionals puguin cobrir-se en una manera compatible i ascendent.
* La única cosa pitjor que generalitzar a partir d'un exemple és generalitzar a partir de cap exemple en absolut.
* Ni un problema no s'entén totalment, probablement és millor no proporcionar cap solució en absolut.
* Si vostès poden aconseguir el 90 per cent de l'efecte desitjat pel 10 per cent del treball, utilitzin una solució més simple.
* Aïllin la complexitat tant com sigui possible.
* Proporcionin un mecanisme en comptes d'una política. En particular, posin l'interfaç de política a les mans dels clients.
El primer principi va ser modificat durant el disseny de l'X11: "No afegeixin nova funcionalitat a menys que vostès sàpiguen d'alguna aplicació real que la requereixi".
X ha mantingut en gran part aquests principis. La implementació d'exemple és desenvolupada amb una vista cap a l'extensió i la millora de la implementació, mentres que roman compatible amb el protocol original de 1987.

## Interfícies d'usuari

X és primàriament una definició de primitives de protocol i gràfiques, i deliberadament no conté especificacions de disseny d'interfície d'usuari com estils de botó, menú, barra de títol per les finestres... En comptes d'això, un software d'aplicació (tal com els gestors de finestra, Widget toolkits de GUI i ambients d'escriptori, o les interfícies gràfiques d'usuari específiques d'una aplicació) defineixen i proporcionen els detalls. Com a resultat, no hi ha interfície X típica, i varis ambients d'escriptori han estat populars entre els usuaris.
Un gestor de finestra controla la col·locació i l'aparença de les finestres d'aplicació. Això pot resultar en interfícies semblants a les de Microsoft Windows o Macintosh (els exemples inclouen Metacity a GNOME, KWin a KDE, Xfwm a Xfce, o Compiz) o tenir controls radicalment diferents (com ara tiling window manager, com wmii o Ratpoison). Els gestors de finestra abasten en sotisficació i complexitat des dels més simples (ex., twm, el gestor de finestra bàsic subministrat amb X, o evilwm, un gestor de finestra extremadament lleuger) fins als ambients d'escriptori més complets com ara Enlightenment.
Molts usuaris utilitzen X amb un ambient d'escriptori que, independentment del gestor de finestra, inclou vàries aplicacions utilitzant una interfície d'usuari consistent. GNOME, KDE i Xfce són els ambient d'escriptori més populars. L'ambient estàndard d'Unix és Common Desktop Environment (CDE). L'iniciativa freedesktop.org es dirigeix a la interoperabilitat entre l'escriptori i els components necessaris per a un escriptori X competitiu.
Donat que X és responsable de la interacció entre el teclat i el ratolí amb l'escriptori gràfic, certes dreceres de teclat han arribat a estar associades amb X. Control-Alt-Backspace típicament termina la sessió actualment funcionant a X, mentre que el Control-Alt conjuntament amb una tecla de funció canvia a la consola virtual associada. Tot i així, això es un detall que es deixa al disseny d'una implementació de servidor X i no és universal; per exemple, les implementacions de servidor X per Windows i Macintosh normalment no proporcionen aquestes dreceres de teclat.

## Referències

* ↑ «X Window System». Gran Enciclopèdia Catalana. Barcelona: Grup Enciclopèdia Catalana.

## Vegeu també

* Servidor gràfic