L'histoire de l'environnement graphique sous Linux est complexe, découlant d'adaptations successive aux changements technologiques, aux licences et propriété intellectuelles, mais également de projets spontanés (fork) qui ont été plus ou moins incorporés ou abandonnés, voir de dissentions entre plusieurs groupes de travail.
Il faut bien comprendre que les besoins sont différents entre un PC traditionnel, une station de gaming, un casque de réalité virtuelle, une machine virtuelle hébergée dans un cloud, un Raspberry Pi, un appareil mobile ou une télévision; et poutant, tous fonctionnent sous Linux et possèdent une interface graphique.
En outre, si certaines fonctionnalités résultent du travail de compagnies privées, donc avec une recherche de profit, d'autres découlent d'initiatives personnelles ou de groupes de volontaires. Dans le monde Linux, il n'est pas rare qu'un logiciel ou une fonctionnalité soit maintenue pendant des années par une seule personne.
Unix
Rappelons que Linux dérive (ou plutôt s'inspire) de Unix, un système d'exploitation pour serveurs qui a vu le jour en 1969. Le système se base sur un noyau (kernel) très protégé qui gère les ressources; les applications "appellent" des fonctions du noyau pour réaliser des tâches, dont l'affichage. Traditionnellement, Unix a une interface utilisateur de type textuelle sur des terminaux "série". Mais le besoin d'utiliser des applications graphiques c'est fait sentir, particulièrement pour la CAO (Conception Assistée par Ordinateur). Des constructeurs ont alors proposé des terminaux graphiques, comme la série Tektronix 4010, où l'électronique du terminal est capable de générer des points et des lignes grâce à des commandes envoyé par le serveur. Ce type de terminal fonctionne comme le jeu Télécran (ou Ardoise magique): un faisceau électronique est dirigé vers l'écran au phosphore, les commandes permettant de contrôler en abscisse et ordonnée la direction du faisceau.
À partir des années 80 apparaissent les terminaux de type raster, fonctionnant comme une télévision: le faisceau, dont on contrôle seulement l'intensité, balaye l'écran ligne par ligne, chaque point de l'image étant appelé pixel (picture element).
X Window System
À cette période, Unix en est à sa cinquième version, appellé System V. Un projet de formalisation de l'ensemble des commandes graphiques, appelé W, voit le jour mais n'aboutit pas. En 1984, un second projet, appelé naturellement X, formalise le protocole: le X Window System.
X a évolué pour aboutir en 1987 à la version 11; on parle de X11.
C'est un protocole client-serveur; le serveur, ou plus exactement le logiciel qui s'exécute sur le serveur, envoie par le réseau au client (le terminal graphique) les commandes qui doivent être exécutées. Cependant, la partie cliente est appellée serveur X; c'est confondant, mais ça correspond à la réalité où le terminal "sert" les commandes que le logiciel lui envoit.
Ce type de fonctionnement permet par exemple d'envoyer les commandes à plusieurs terminaux, ou de transférer l'affichage d'un terminal a un autre.
Parallèlement, les années 80 voient le développement des ordinateurs personnels (PC) toujours plus performant et comportant une carte graphique. À partir des années 90, il devint possible de porter Unix sur PC, comme SCO Unix de la compagnie Santa Cruz Operation, AIX d'IBM, ou Xenix de Microsoft. Évidemment, le besoin de porter X c'est rapidement présenté; Dans ce cas, serveur et terminal sont en réalité la même machine. Pour ne pas avoir à réécrire le protocol XWindow, la communication se fait en utilisant une interface réseau virtuelle interne appellée loopback.
Le Consortium X, qui gère le protocol X, doit tenir compte de beaucoup de spécificités propres à chaque constructeur. Le protocole évolue alors trop lentement pour certains, et en 1991, un groupe de développeurs décident de concevoir une implémentation libre spécifiquement pour PC pour appellée XFree86. Cette implémentation était intégrée dans les premières versions de Linux.
Plus tard, un fork de XFree86 appelé X.org s'est créé pour coordonner les développements. Puis une décision du groupe XFree86 liée au changement du type de licence a incité Linux à se tourner vers X.org.
Cependant, X souffre de quelques défauts liés à son histoire: le protocole est complexe et parfois archaïque, et surtout, il n'est pas sécurisé. Un groupe de développeur a décidé d'écrire un protocole pour remplacer X11: Wayland.
Linux
Linux voit le jour en 1993, initialement issu de Minix, un système d'exploitation pour PC à vocation éducative inspiré de Unix.
Cependant, son arrivée a été un vent de faîcheur dans le monde informatique: code ouvert (visible par tous), développement collaboratif, philosophie issue de Unix ("ne faite qu'une seule chose, mais faites la bien"), programmes légers et un type de licence permettant l'utilisation sans devoir payer de redevance. Son ascension a été fulgurante, tant au niveau des ordinateurs personnels que des serveurs.
La configuration de XFree86 sur les premières version de Linux était parfois complexe, requiérant la modification de fichiers mal documentés. Cependant, les progrès ont été considérables, sans doute guidés par la facilité d'utilisation et l'abscence de configuration que proposaient les systèmes d'exploitation concurrents comme Windows ou MacOS.
Les composants
Les interfaces graphiques fonctionnent en couches logicielles, chaque couche étant responsable de certaines fonctionnalités.
Le pilote
La couche la plus proche du matériel est le pilote (driver); elle assure le dialogue entre le noyau Linux et la carte graphique. C'est un module chargé au démarrage. Comme cette couche est liée au matériel, elle doit correspondre à la carte graphique installée.
Il y a actuellement 3 grands fabriquants de cartes graphiques: AMD, Intel et NVidia qui a indubitablement une position dominante. Si AMD et Intel dévoilent les caractéristiques de leurs cartes afin de permettre à la communauté d'écrire les pilotes, ce n'est pas le cas de NVidia qui écrit lui-même les pilotes et garde le code fermé. Ce faisant, NVidia est naturellement incité à "vendre des cartes" en supprimant le support des cartes jugées "désuètes". La communauté a dû réagir en écrivant un pilote "libre" pour ces cartes: le pilote nouveau. Cependant, en l'abscence des spécifications officielles, le pilote nouveau ne supporte pas entièrement toutes les cartes de la marque.
La librairie graphique
Une librairie graphique (graphic library) est un ensemble de fonctions que le programmeur peut utiliser pour créer des objets graphiques. Linux utilise la librairie graphique OpenGL, sous le contrôle du consortium Khronos Group regroupant plus de 180 compagnies. Selon le modèle de carte, certaines fonctionnalités sont réalisées directement par le processeur graphique (GPU); dans ce cas, OpenGL va transmettre la commande. Dans le cas contraire, la commande est réalisée par logiciel, ce qui est évidemment plus lent.
Le compositeur
Le composeur (ou compositeur) est la couche logiciel qui gère
Le gestionnaire de fenêtre
Le gestionnaire de fenêtre (window manager) gère la création, l'affichage et la destruction des fenêtres, et les actions de l'utilisateur. En outre, il est en charge de la barre de tâche, du fond d'écran, des icônes.
- compiz est le gestionnaire de fenêtre d'Ubuntu.
- Kwin est le gestionnaire de fenêtre de KDE.
- Mutter (GNU Network Object Model Environment), utilisé entre autres par Ubuntu et Fedora
- CDE (Common Desktop Environment), initialement l'environnement le plus courant sur les serveurs Unix.
- GNOME (GNU Network Object Model Environment), utilisé entre autres par Ubuntu et Fedora
- KDE (GNU Network Object Model Environment), utilisé entre autres par SUSE et Kubuntu
- Xfce utilisé entre autre par Linux Mint
- Unity, créé par Canonical pour Ubuntu entre les version 10 et 17, puis abandonné au profit de GNOME. Cependant, des versions plus récentes de Ubuntu avec Unity sont toujours disponibles.
- GTK (anciennement GTK+), librairie permettant la création d'interface graphique.
- Tk (Toolkit), la librairie graphique du langage TCL.
- Qt, une librairie pour concevoir des interfaces graphiques.
- Pango bibliothèque spécialisée dans le rendu de caractères vectoriels.
L'environnement de bureau
Il s'agit de la couche la plus abstraite, qui comporte les applications du bureau et donne l'identité visuelle de l'interface graphique. Il en existe plusieurs, les plus connues étant:
Les autres librairies
Selon le programme que l'on souhaite écrire, différentes librairies existes, qui répondent chacune à des besoins spécifiques.
- On peut citer:
Comments