Skip to main content

L'environnement graphique sous Linux

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
  • 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:

    • 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.

    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:
    • 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.

Comments

Popular posts from this blog

Drive replacement for Fostex DMT8-vl

The IDE hard drive on my Fostex DMT8-vl multitrack recorder shows signs of its imminent death; when getting hot, I could not record anymore. Must be said this drive comes from an old Sun Station, and has been replaced because I/O failures were detected by Solaris. It worked at least 5 years in my recorder: not so bad. However, time is now to replace it. The DMT8-vl is not able to handle drives bigger than 8.4 GB. Well, it is able to (the current drive is 15 GB), but only 8.4 GB will be usable. My tought was to use a 8 GB CompactFlash; having no moving parts means no noise, which is quite temptating for a music recording device. I purchased a CompactFlash-IDE adapter on the internet (8$) and I had to build a male-male IDE cable adapter (4$). Unfortunately, this doesn't work. The drive is correctly discovered by the operating system, which proposes to format it ("format IDE?"). After answering "yes", the formating runs pretty fast (faster than on a real drive), ...

Samba: Clients get "system error 1223" (or 123) after a server reboot

Facts: a Linux+Samba server shares anonymously a folder. After a reboot, Win clients could not attach the share drive anymore. C:\>net use \\mylinux\folder Enter the user name for 'mylinux': System error 1223 has occurred. The operation was canceled by the user. C:\>net view \\mylinux\ System error 123 has occurred. The filename, directory name, or volume label syntax is incorrect. The process are present, and tcpdump doesn't provide much information. What's going on? After hours of headscratching, the light came: the firewall was on and no rules for the Samba protocol! Grrr!

Issue with Soundpool MO4

I have a Atari STe with a Soundpool MO4 MIDI extension. It used to work very well, but unfortunatelly doesn't anymore: Cubase still detects it, and I can output MIDI to it but nothing is coming out from any MIDI Out. It took me a while to tackle it (lack of time, lack of tool, other items to play with), but I gave a glance last week-end. The parallel port on the Atari uses only the following signals: Pin 1 : Strobe (Atari -> MO4) Pin 2 : Data 0 (Atari -> MO4) Pin 3 : Data 1 (Atari -> MO4) Pin 4 : Data 2 (Atari -> MO4) Pin 5 : Data 3 (Atari -> MO4) Pin 6 : Data 4 (Atari -> MO4) Pin 7 : Data 5 (Atari -> MO4) Pin 8 : Data 6 (Atari -> MO4) Pin 9 : Data 7 (Atari -> MO4) Pin 11: Busy (MO4 -> Atari) The MO4 also decodes few other pins, but since the Atari doesn't, my guess is the MO4 was also targeted for PC. Inside the box, the MO4 is architectured around a CPLD (IspLSI1016 from Lattice) which contains the logi...