Qu'est-ce que L'API graphique native de Linux?

J'espère que cela ne se présente pas comme une question stupide, mais c'est toujours quelque chose que je me suis demandé. Windows (API Win32) et OS X (Cocoa) ont leurs propres API pour gérer windows, événements et autres éléments du système D'exploitation. Je n'ai jamais vraiment eu de réponse claire à ce qu'est L'équivalent de Linux.

J'ai entendu certaines personnes dire GTK+, mais GTK+ étant multi-plateforme, comment peut-il être natif?

397
demandé sur BoltClock 2012-10-04 01:23:50

11 réponses

Sous Linux, L'interface utilisateur graphique ne fait pas partie du système d'exploitation. L'interface utilisateur graphique trouvée sur la plupart des ordinateurs de bureau Linux est fournie par un logiciel appelé X Window System , qui définit une manière indépendante de traiter les écrans, les claviers et les périphériques de pointeur.

X Window définit un protocole réseau pour la communication, et tout programme qui sait "parler" ce protocole peut l'utiliser. Il y a une bibliothèque C appelée Xlib qui le rend plus facile pour utiliser ce protocole, Xlib est donc une sorte de L'API GUI native. Xlib n'est pas le seul moyen d'accéder à un serveur X Window; il y a aussi XCB .

Les bibliothèques

Toolkit telles que GTK + (utilisées par GNOME ) et Qt (utilisées par KDE), construites au-dessus de Xlib, sont utilisées car elles sont plus faciles à programmer. Par exemple, ils vous donnent une apparence cohérente dans toutes les applications, facilitent l'utilisation du glisser-déposer, fournissent des composants standard à un environnement de bureau moderne, et ainsi de suite.

La façon dont X dessine l'écran en interne dépend de l'implémentation. X.org possède une partie indépendante de l'appareil et une partie dépendante de l'appareil. Le premier gère les ressources d'écran telles que windows, tandis que le second 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 système vers le noyau. Le pilote traduit les commandes dans un formulaire que le matériel sur la carte comprend.

À partir de 2013, un nouveau système de fenêtres appelé Wayland commence à devenir utilisable, et de nombreuses distributions ont déclaré qu'elles y migreraient à un moment donné, bien qu'il n'y ait toujours pas de calendrier clair. Ce système est basé sur L'API OpenGL/ES, ce qui signifie qu'à L'avenir OpenGL sera l '"API GUI native" sous Linux. Le travail est fait pour porter GTK + et QT à Wayland, de sorte que les applications populaires actuelles et les systèmes de bureau auraient besoin d'un minimum changement. Les applications qui ne peuvent pas être portées seront prises en charge via un serveur X11, tout comme OS X prend en charge les applications X11 via Xquartz. Le port GTK+ est devrait être terminé dans un an, tandis que Qt 5 a déjà un support complet Wayland.

Pour compliquer davantage les choses, Ubuntu a annoncé qu'ils développaient un nouveau système appelé Mir en raison des problèmes qu'ils perçoivent avec Wayland. Ce système de fenêtre est également basé sur L'API OpenGL/ES.

559
répondu Joni 2017-01-14 14:40:10

Linux est un noyau, pas un système d'exploitation complet. Il existe différents systèmes de fenêtrage et interfaces graphiques qui fonctionnent sur Linux pour fournir un fenêtrage. Typiquement X11 est le système de fenêtrage utilisé par les distributions Linux.

79
répondu Chris Thompson 2012-10-03 21:26:28

Wayland est également à mentionner car il est principalement appelé un "futur tueur X11".

Notez également que Android et d'autres systèmes d'exploitation mobiles n'incluent pas X11 bien qu'ils aient un noyau Linux, donc en ce sens X11 n'est pas natif de tous les systèmes Linux.

Être multi-plateforme n'a rien à voir avec être natif. Cocoa a également été porté sur d'autres plates-formes via GNUStep mais il est toujours natif D'OS X / macOS.

57
répondu none 2018-02-26 23:13:55

Strictement parlant, L'API de Linux se compose de ses appels système . Ce sont toutes les fonctions du noyau qui peuvent être appelées par un programme en mode utilisateur (non-noyau). Il s'agit d'une interface de très bas niveau qui permet aux programmes de faire des choses comme ouvrir et lire des fichiers. Voir http://en.wikipedia.org/wiki/System_call pour une introduction générale.

Un vrai système Linux aura également une "pile" entière d'autres logiciels en cours d'exécution, afin de fournir un utilisateur graphique interface et autres fonctionnalités. Chaque élément de cette pile offrira sa propre API.

22
répondu nibot 2012-10-03 21:37:37

Pour aider à ce qui a déjà été mentionné, il y a un très bon aperçu de la pile graphique Linux sur ce blog: http://blog.mecheye.net/2012/06/the-linux-graphics-stack/

Ceci explique X11 / Wayland etc et comment tout cela s'intègre. En plus de ce qui a déjà été mentionné, je pense qu'il vaut la peine d'ajouter un peu sur les API suivantes que vous pouvez utiliser pour les graphiques sous Linux:

Mesa - "Mesa est beaucoup de choses, mais l'une des choses les plus importantes qu'il prévoit qu'il est le plus célèbre pour son implémentation OpenGL. C'est une implémentation open-source de L'API OpenGL."

Cairo - " cairo est une bibliothèque de dessin utilisée soit par des applications comme Firefox directement, soit par des bibliothèques comme GTK+, pour dessiner des formes vectorielles."

DRM (direct Rendering Manager) - je comprends le moins mais c'est essentiellement les pilotes du noyau qui vous permettent d'écrire des graphiques directement dans framebuffer sans passer par X

18
répondu Matt 2012-10-04 03:40:47

Je suppose que la question ressemble plus à "quelle est l'API GUI native de linux".

Dans la plupart des cas, X (aka X11) sera utilisé pour cela: http://en.wikipedia.org/wiki/X_Window_System .

Vous pouvez trouver la documentation de l'API ici

9
répondu Mark 2012-10-04 09:23:03

XWindows est probablement le plus proche de ce qui pourrait être appelé 'natif':)

5
répondu Sergey Sirotkin 2012-10-03 21:26:48

La chose la plus proche de Win32 sous linux serait la libc, car vous mentionnez non seulement L'interface utilisateur, mais les événements et les "autres éléments du système d'exploitation"

1
répondu Midhat 2012-10-04 00:54:31

GUI est une abstraction de haut niveau de la capacité, donc presque tout de Xorg server à OpenGL est porté multi-plateforme, y compris pour la plate-forme Windows. Mais si par API GUI vous voulez dire * Nix graphics API alors vous pourriez errer autour de "L'Infrastructure de rendu Direct".

0
répondu Chawathe Vipul 2015-11-29 09:37:39

Les opérations graphiques du noyau linux sont dans / include/linux / FB.h comme struct fb_ops. Finalement, c'est ce que les add-ons comme X11, Wayland ou DRM semblent référencer. Comme ces opérations ne sont que pour les cartes vidéo, pas pour la copie papier vectorielle ou raster ou les terminaux orientés tty, leur utilité en tant que GUI est limitée; ce n'est pas tout à fait vrai que vous avez besoin de ces add-ons pour obtenir une sortie graphique si cela ne vous dérange pas d'utiliser un assembleur pour

0
répondu M. Ziegast 2018-02-27 01:49:06

Wayland

Comme vous pourriez l'entendre, wayland est le choix en vedette de nombreuses distributions ces jours-ci, en raison de son protocole est plus simple que le X.

Boîtes à outils de wayland

Les boîtes à outils ou les bibliothèques graphiques que Wayland suggère sont:

  • QT 5
  • GTK +
  • LSD
  • fouillis
  • EFL
0
répondu Amir Forsati 2018-10-04 07:39:38