Qu'est-ce que Linux est l'interface graphique native API?
J'espère que cela ne vient pas comme une question stupide, mais c'est toujours quelque chose que j'ai demandé. Windows (Win32 API) et OS X (Cocoa) ont leur propre Api pour gérer les fenêtres, les événements et les autres OS de trucs. Je n'ai jamais vraiment eu de réponse claire quant à ce que Linux, l'équivalent de l'est.
J'ai entendu certaines personnes dire que GTK+, mais GTK+ étant de la croix-plate-forme, comment peut-il être natif?
- Joni est correcte: "Dans Linux, l'interface graphique n'est pas une partie du système d'exploitation... Système X Window définit un protocole de réseau pour [GUI capacités]. Trousse à outils des bibliothèques comme Gtk+ (utilisé par Gnome) et QT (utilisé par KDE), construit sur le haut de la Xlib."
- au contraire, David, c'est une excellente enquête
- Je suis d'accord - j'ai lu "Le Linux de Programmation API" et "la Programmation de Systèmes Unix...", qui sont les deux bibles sur le noyau & API, et cette question n'a jamais eu lieu pour moi 🙂 Les réponses sont intéressantes.
- L'API Win32 est aussi multi-plateforme, si vous incluez le Vin..
- +1 Merci pour cette question. J'ai appris beaucoup en lisant les réponses.
- BTW Windows a WIN32/WIN64 sous-systèmes qui mettent en œuvre un lot de la même façon pour le "Apparence Windows - aka WIN32" parmi d'autres choses. Ces sous-systèmes fonctionnent sur le noyau de windows NT. Les Api sont différents. Par exemple, C: est un WIN32 abstraction, pas un noyau NT chose. De même pour certains de la fonctionnalité de fenêtrage. Windows a Unix sous-systèmes qui sont disponibles (prise en charge X11 à un certain degré).
- Donc, en effet, Windows ne la même (peut-être plus complet), Linux (voir @joni réponse), sauf que, il suffit d'appeler le package Windows et ont tendance à oublier la séparation. Cependant WIN32 est l'un, nous avons tendance à utiliser de sorte que c'est " l'idéal de l'API.
- Quelqu'un peut-il svp s/Linux/Unix pour la généraliser?
- En fait, qui ne pas le rendre "compatible", puisque le vin réimplémentée API windows pour une utilisation sous linux.
- depuis windows GUI fait partie de l'OS et linux, il n'est pas le cas, ne pourrait-il pas faire en utilisant l'interface graphique est plus rapide de windows que sous linux? en théorie du moins, si ce n'est dans la pratique
- Non, il ne devrait pas.
Vous devez vous connecter pour publier un commentaire.
Dans Linux, l'interface graphique n'est pas une partie du système d'exploitation. L'interface utilisateur graphique trouvé sur la plupart des ordinateurs de bureau Linux est fourni par un logiciel appelé la Système X Window, qui définit de façon indépendante du périphérique de traiter avec des écrans, des claviers et des pointeur périphériques.
X Window définit un protocole de réseau pour la communication, et un programme qui sait "parler" ce protocole peut l'utiliser. Il y a une bibliothèque C appelé Xlib qui le rend plus facile à utiliser ce protocole, donc de la Xlib est une sorte de la l'interface graphique native API. Xlib n'est pas la seule façon d'accéder à un serveur X Window; il est également XCB.
Toolkit bibliothèques comme GTK+ (utilisé par GNOME) et Qt (utilisé par KDE), construit sur le haut de la Xlib, sont utilisés parce qu'ils sont plus faciles à programmer avec. Par exemple, ils vous donnent un aspect cohérent à travers les applications, de la rendre plus facile à utiliser drag-and-drop, de fournir des composants standard de la modernité d'un environnement de bureau, et ainsi de suite.
Comment X s'appuie sur l'écran interne dépend de la mise en œuvre. X.org dispose d'un appareil indépendant de la partie et un dispositif dépendant de la partie. L'ancien gère l'écran de ressources telles que windows, alors que ce dernier communique avec le pilote de la carte graphique, généralement un module du noyau. La communication peut se produire au cours accès direct à la mémoire ou par l'intermédiaire de les appels système pour le noyau. Le pilote traduit les commandes dans un formulaire que le matériel sur la carte comprend.
À compter de 2013, un nouveau système de fenêtre appelée Wayland commence à devenir utilisable, et de nombreuses distributions ont dit qu'ils seront à un point de migrer vers lui, bien qu'il n'y a pas encore de calendrier clair. Ce système est basé sur OpenGL/ES de l'API, ce qui signifie que dans l'avenir OpenGL sera le "interface graphique native API" dans Linux. Le travail est fait à port GTK+ et QT pour Wayland, de sorte que le courant populaire des applications et des systèmes de bureau aurait besoin d'un minimum de changements. Les applications qui ne peuvent pas être portés seront pris en charge par le biais d'un serveur X11, tout comme OS X prend en charge les applications X11 par le biais de Xquartz. Le GTK+ port est devrait être terminé en moins d'un an, alors que Qt 5 a déjà complet support de Wayland.
Pour compliquer les choses, Ubuntu a annoncé le développement d'un nouveau système appelé Mir à cause de problèmes qu'ils perçoivent avec Wayland. Ce système de fenêtre est également basé sur l'OpenGL/ES de l'API.
Linux est un noyau, pas un système d'exploitation complet. Il existe différents systèmes de fenêtrage et gui qui s'exécutent sur Linux pour fournir de fenêtrage. Généralement X11 est le système de fenêtrage utilisé par des distributions Linux.
HAL
est utilisé de manière incorrecte à terme. Vraiment ce qu'ils disent est X11 fournit un système indépendant de moyens d'affichage de windows. Il existe des versions de X11 pour Darwin (Mac OS qui est en fait plus compliqué maintenant avec Mountain Lion...), MS Windows et Linux.Wayland est également intéressant de mentionner que c'est surtout considéré comme un "avenir X11 killer".
Également noter que Android et certains autres systèmes d'exploitation mobiles ne sont X11 bien qu'ils ont un noyau Linux, donc dans ce sens X11 n'est pas propre à tous les systèmes Linux.
Cours de la croix-plate-forme n'a rien à voir avec le fait d'être natif. Le cacao a également été porté sur d'autres plates-formes via GNUStep mais il est toujours native OS X /macOS.
À proprement parler, l'API de Linux est sa appels système. Ce sont toutes les fonctions du noyau qui peut être appelé par un utilisateur-mode (sans noyau) du programme. C'est un très faible niveau de l'interface qui permet aux programmes de faire des choses comme ouvrir et lire les fichiers. Voir http://en.wikipedia.org/wiki/System_call pour une introduction générale.
Un véritable système Linux aura également un ensemble de "pile" d'autres logiciels en cours d'exécution sur elle, afin de fournir une interface utilisateur graphique et d'autres caractéristiques. Chaque élément de cette pile va offrir sa propre API.
À l'aide de ce qui a déjà été mentionné qu'il y avait une très bonne vue d'ensemble de la pile graphique Linux sur ce blog: http://blog.mecheye.net/2012/06/the-linux-graphics-stack/
C'est ce qui explique X11/Wayland etc et comment il s'adapte à tous ensemble. En plus de ce qui a déjà été mentionné, je pense que ça vaut la peine d'ajouter un peu plus sur la suite de l'API 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 plus célèbre pour son implémentation OpenGL. C'est un open-source de la mise en œuvre de l'API OpenGL."
Le caire - "le caire est un dessin de la bibliothèque utilisée par des applications comme Firefox directement, ou à travers les bibliothèques, comme GTK+, pour dessiner des formes vectorielles."
DRM (Direct Rendering Manager) - Je comprends le moins, mais c'est en fait le noyau, les pilotes qui permettent d'écrire directement des graphiques pour le framebuffer sans passer par X
Je suppose que la question est plus comme "qu'est-Ce que linux est l'interface graphique native API".
Dans la plupart des cas, X (aka X11) sera utilisée pour: http://en.wikipedia.org/wiki/X_Window_System.
Vous pouvez trouver la documentation de l'API ici
XWindows est probablement le plus proche de ce qui pourrait être appelé "native":)
La chose la plus proche pour Win32, linux serait la libc, comme vous le mentionnez pas seulement l'INTERFACE utilisateur, mais les événements et les "autres os trucs"
ioctl
vous-même, vous devez inclure quelque chose desys/
.GUI est d'un très haut niveau d'abstraction de la capacité, de sorte que presque tout de XOrg server pour OpenGL est porté à la croix-plate-forme, y compris pour Windows plate-forme. Mais si par GUI API-vous dire des *nix API graphique, alors vous pourriez être errant autour de "Direct Rendering Infrastructure".
Le noyau linux graphiques dans /include/linux/fb.h comme struct fb_ops. Finalement, c'est ce que add-ons tels que X11, Wayland, ou DRM semblent référence. Le fait que ces opérations ne sont que pour les cartes vidéo, pas de vecteur ou raster version papier ou ats orientée vers les terminaux, leur utilité en tant qu'interface graphique est limité, c'est juste pas tout à fait vrai vous avez besoin de ces add-ons pour obtenir la sortie graphique si vous n'avez pas l'esprit à l'aide de certains assembleur pour contourner les syscall que nécessaire.
Wayland
Comme vous pouvez l'entendre, wayland est la vedette choix de la plupart des distributions de ces jours, parce que de son protocole est plus simple que la X.
Boîtes à outils de wayland
Boîtes à outils ou l'interface utilisateur des bibliothèques de wayland suggère sont: