X Window System

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Serveur X)
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir X11.
Ne pas confondre avec le système d'exploitation Windows de Microsoft qui prend un s à la fin.
Schéma client-serveur de X Window.

X Window System, X11 ou simplement X est un environnement de bureau de type « fenêtré » qui gère l'interaction homme-machine par l'écran, la souris et le clavier de certains ordinateurs en réseau. Il est souvent appelé X Window (sans s, à ne pas confondre avec Windows avec un s).

C'est le système standard ouvert d'interaction graphique avec l'utilisateur sur les UNIX (Linux, BSD, etc.). Le serveur X est optionnel sur macOS (qui utilise nativement Quartz). Il est possible d'installer un serveur X sur la plupart des systèmes d'exploitation, dont Windows[1]. On dit communément d'une application qu'elle tourne sous X lorsqu'elle est conçue pour l'environnement X.

X est actuellement dirigé par la Fondation X.Org, avec son implémentation actuelle : X.Org.

Fonctionnement[modifier | modifier le code]

Schéma détaillé X Window.

X fonctionne suivant le modèle client/serveur :

  • le logiciel serveur X tourne sur une machine qui est dotée d'un écran, d'un clavier et d'une souris ; il reçoit et sert des requêtes d'affichage, d'entrées de texte et de déplacement de souris sur un port logiciel ;
  • un logiciel client X (logiciel graphique) se connecte au serveur X et lui envoie ses requêtes d'affichages en utilisant le protocole X au travers de la bibliothèque X (Xlib). Le client est simplement l'application logicielle (jeu, traitement de texte, calculatrice…) qui utilise alors le protocole X pour déléguer au serveur X les tâches d'IHM.

Cette terminologie client–serveur avec le serveur côté utilisateur et le client côté application peut sembler étrange pour les nouveaux utilisateurs de X, car les termes sont inversés. Mais X se place du point de vue de l'application plutôt que de l'utilisateur : X fournit des services d'entrée-sortie à l'application, c'est donc un serveur ; l'application consomme ces services, c'est donc un client.

Avant l'arrivée du modèle client/serveur, les applications s'exécutaient sur une machine centralisée s'occupant à la fois du traitement des données et de la mise en forme de l'affichage. Le poste de l'utilisateur possédait essentiellement un clavier et un écran, parfois une souris.

Le poste d'affichage ne possédait pas de réelle intelligence locale, les programmes s'exécutant sur la machine centralisée. On lui adjoignait cependant un boîtier contrôleur d'écran et de clavier qui exécutait un serveur X. L'ensemble se nommait un terminal X. Les programmes s'exécutaient sur la machine centralisée (serveur d'applications commun à plusieurs terminaux X) et l'interface homme-machine de ces programmes était gérée par le terminal X (client applicatif). Le terminal X est un exemple de ce que l'on appelle un client léger.

X fonctionne en IPv4 depuis des années, mais il peut également fonctionner en IPv6.

Ce modèle de communication permet notamment l'affichage de fenêtres et autres éléments d'interfaces graphiques, en local (logiciel client et serveur sur la même machine) ou déporté sur un autre ordinateur à travers le réseau (un logiciel graphique tourne sur une machine distante et est affiché sur une station de bureau ou portable).

L'affichage graphique se fait par bitmap (image matricielle), par opposition à l'affichage par image vectorielle.

Parmi les clients X, on en distingue généralement un en particulier : le gestionnaire de fenêtres dont le rôle est de gérer l'affichage, la sélection, le déplacement, le redimensionnement et les décorations des fenêtres (une fenêtre particulière étant la root-window c'est-à-dire la fenêtre-racine). On peut faire tourner ce gestionnaire de fenêtre sur une machine distincte de celle dont on utilise les applications.

Tout client préalablement autorisé à accéder un poste X peut y ouvrir une fenêtre à tout moment, comme on ferait sonner un téléphone.

La programmation X permet de séparer la création des widgets (en mémoire) de leur réalisation (affichage) pour une bonne ergonomie : l'utilisateur apprécierait peu que dans une fenêtre comportant quarante éléments graphiques distincts chacun soit affiché au fur et à mesure que l'application le crée. Tout peut donc être créé d'abord, et ensuite seulement l'ensemble affiché en une seule fois, pour éviter des clignotements fatiguant l'oeil.

Programmation X[modifier | modifier le code]

Bibliothèques pour la programmation X.

La programmation pour X peut se faire à différents niveaux. Le plus bas est celui du protocole X, ou comment le client et le serveur échangent des données. On ne programme pour ainsi dire jamais directement au niveau du protocole, mais il peut être utile de le connaître, de façon par exemple à décoder les informations qui circulent.

Le niveau au-dessus est celui de la bibliothèque X ou Xlib. La Xlib propose une traduction assez directe des requêtes du protocole X en appels de fonctions. Elle permet notamment de créer et de manipuler des fenêtres, de dessiner à l'intérieur par l'intermédiaire d'un contexte graphique et de recevoir des événements (clavier, souris, exposition des fenêtres, messages inter-clients, etc.) Pour la Xlib, une fenêtre est un rectangle dans lequel on peut dessiner, et qu'on peut soulever ou baisser par rapport aux autres (on peut aussi imbriquer des fenêtres) ; la décoration des fenêtres de plus haut niveau est apportée par le gestionnaire de fenêtres. La programmation directe en Xlib n'est guère adaptée que pour des environnements graphiques très limité ou pour le développement de boîtes à outils.

Le niveau suivant est celui de la boîte à outils X ou X Toolkit, Xt en abrégé, un système orienté objets (mais entièrement en C) qui permet de manipuler des widgets, qui sont des fenêtres munies de ressources et de méthodes, leur permettant de réagir « toutes seules » à certains événements. Ce niveau est composé de deux parties : les intrinsics et un jeu de widgets. Les intrinsics sont le cadre dans lequel on peut communiquer avec les widgets, et proposent quelques widgets tout à fait rudimentaires (dont le widget Core, une fenêtre qui ne réagit à rien). Il y a plusieurs jeux de widgets disponibles pour Xt. Le jeu Athena (Xaw en abrégé), développé au MIT, est petit et peu complet, mais il a l'avantage d'être léger, standard et gratuit. Deux autres exemples importants sont le jeu Motif de l'OSF, très commun pour les applications commerciales jusque vers 2000, et OpenLook, qui imite l'apparence de SunView, dont il est le remplaçant.

Ces différentes bibliothèques sont de moins en moins utilisées, au profit d'autres surcouches de la Xlib, qui remplissent les mêmes fonctions qu'Xt. Les deux principales sont GTK+ et Qt.

Informations supplémentaires[modifier | modifier le code]

Le logiciel client X sans doute le plus connu, et celui qui sert à également tester un bon paramétrage, est Xclock (xeyes et Xlogo sont également très utilisés à des fins de démonstration).

C'est le MIT qui a publié la première version de X en juin 1984.

À la fin des années 1980, Sun a proposé un protocole et un serveur programmable de plus haut niveau NeWS, programmable dans un langage étendant PostScript pour le graphique distant, qui n'a pas eu le succès escompté.

On trouvait sur X la première version du logiciel Neko.

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]

  • (en) X.org, site de X.Org Foundation
  • (en) x.cygwin.com, site de Cygwin/X, portage de X Windows System sous Windows

Notes et références[modifier | modifier le code]

  1. (en) Colin Harrison, « Xming X Server », 2008 (consulté le 31 juillet 2008).