Dans Linux, l'interface utilisateur graphique ne fait pas partie du système d'exploitation. L'interface utilisateur graphique que l'on retrouve sur la plupart des ordinateurs de bureau Linux est fournie par un logiciel appelé le Système X Window qui définit une manière indépendante du périphérique de traiter les écrans, les claviers et les pointeurs.
X Window définit un protocole réseau pour la communication, et tout programme qui sait "parler" ce protocole peut l'utiliser. Il existe une bibliothèque C appelée Xlib qui rend plus facile l'utilisation de ce protocole, donc Xlib est une sorte de le site API GUI native. Xlib n'est pas le seul moyen d'accéder à un serveur X Window. XCB .
Les bibliothèques de la boîte à outils telles que GTK+ (utilisé par GNOME ) et Qt (utilisé par KDE ), construits au-dessus de Xlib, sont utilisés car ils sont plus faciles à programmer. Par exemple, ils permettent d'obtenir un aspect et une convivialité cohérents d'une application à l'autre, facilitent l'utilisation du glisser-déposer, fournissent des composants standard pour un environnement de bureau moderne, etc.
La façon dont X dessine à l'écran en interne dépend de l'implémentation. X.org a une partie indépendante du dispositif et une partie dépendante du dispositif. La première gère les ressources de l'écran, comme Windows, tandis que la seconde communique avec le pilote de la carte graphique, généralement un module du noyau. La communication peut se faire par accès direct à la mémoire ou par appels de système au noyau. Le pilote traduit les commandes sous une forme que le matériel de la carte comprend.
Depuis 2013, un nouveau système de fenêtre appelé Wayland commence à devenir utilisable, et de nombreuses distributions ont déclaré qu'elles migreraient vers elle à un moment donné, bien qu'il n'y ait toujours pas de calendrier précis. Ce système est basé sur l'API OpenGL/ES, ce qui signifie qu'à l'avenir, OpenGL sera l'"API GUI native" de Linux. Des travaux sont en cours pour porter GTK+ et QT sur Wayland, de sorte que les applications populaires actuelles et les systèmes de bureau ne nécessitent que des modifications minimales. Les applications qui ne peuvent pas être portées seront prises en charge par un serveur X11, tout comme OS X prend en charge les applications X11 par Xquartz. Le portage de GTK+ est devrait être terminé dans un délai d'un an alors que Qt 5 a déjà un support complet de Wayland.
Pour compliquer encore les choses, Ubuntu a annoncé qu'ils développent un nouveau système appelé Mir à cause des problèmes qu'ils perçoivent avec Wayland. Ce système de fenêtre est également basé sur l'API OpenGL/ES.
49 votes
Joni a raison : "Dans Linux, l'interface graphique ne fait pas partie du système d'exploitation... Le système X Window définit un protocole réseau pour les [capacités de l'interface graphique]. Les bibliothèques de boîtes à outils telles que Gtk+ (utilisée par Gnome) et QT (utilisée par KDE), sont construites au-dessus de Xlib."
36 votes
Au contraire, David, c'est une excellente enquête.
8 votes
Je suis d'accord - j'ai lu "The Linux Programming API" et "Systems Programming.... Unix" qui sont les deux bibles sur le noyau et l'API, et cette question ne m'a jamais effleuré :) Les réponses sont intéressantes.
11 votes
L'API Win32 est également multiplateforme si vous incluez Wine
0 votes
+1 Merci de poser cette question. J'ai beaucoup appris en lisant les réponses.
2 votes
BTW Windows a des sous-systèmes WIN32/WIN64 qui mettent en œuvre beaucoup de choses similaires pour l'aspect et la convivialité de Windows - aka WIN32 - entre autres choses. Ces sous-systèmes fonctionnent au-dessus du noyau NT. Leurs API sont différentes. Par exemple, C : est une abstraction WIN32, et non un élément du noyau NT. Il en va de même pour certaines des fonctionnalités de fenêtrage. Windows possède également des sous-systèmes Unix qui sont disponibles (qui supportent X11 dans une certaine mesure).
0 votes
En fait, Windows fait cela d'une manière similaire (peut-être plus complète) à celle de Linux (voir la réponse de @joni), sauf que nous appelons simplement le paquet Windows et avons tendance à oublier la séparation. Cependant, WIN32 est celui que nous avons tendance à utiliser et c'est donc "l'API de facto".
0 votes
Quelqu'un peut-il s/Linux/Unix généraliser cela ?
0 votes
@BrendanLong En fait, cela ne le rend pas "multiplateforme", puisque wine a réimplémenté l'API de Windows pour l'utiliser sous Linux.
0 votes
Puisque dans Windows l'interface graphique fait partie du système d'exploitation et que dans linux ce n'est pas le cas, cela ne devrait-il pas rendre l'utilisation de l'interface graphique plus rapide dans Windows que dans linux ? au moins en théorie si ce n'est en pratique.
0 votes
@KillBill Non, ça ne devrait pas.