Dans le processus d'apprentissage de faire certaines choses dans la programmation de l'interface graphique (par exemple, la réservation d'espace à l'écran d'une application), je dois en apprendre davantage sur le gestionnaire de fenêtres, généralement X11 sur Linux (je ne suis pas sûr de savoir s'il y a même des distro , qui utilise autre chose que x11, bien que j'ai entendu parler de Wayland , qui n'est pas encore implémentée dans aucun.)
Je suis assez nouveau pour la programmation et l'impatience; Donc, je plonge juste dans ça. Maintenant, je lis le CIPCM, avec l'espoir d'en apprendre davantage. Ce document vise toutefois un public qui sait (voir) plus que moi. J'ai donc rencontré des informations et j'aimerais avoir des éclaircissements.
section 2 des citations ICCCM:
Notez que toutes les données transférées entre un propriétaire et un demandeur doivent généralement aller au moyen du serveur dans un environnement X version 11. Un client ne peut supposer qu'un autre client peut ouvrir les mêmes fichiers ou même communiquer directement. L'autre client peut parler au serveur au moyen d'un mécanisme de réseau complètement différent (par exemple, un client peut être Decnet et l'autre TCP/IP). Ainsi, transmettre des références indirectes aux données (telles que les noms de fichiers, les noms d'hôte et les numéros de port, etc.) n'est autorisé que si les deux clients sont particulièrement d'accord.
Pour autant que je sache, X Window Manager est construit sur X Server (merci Wikipedia). Dans la citation ci-dessus: il est indiqué que le client peut communiquer avec le serveur à l'aide de Decnet ou TCP/IP. Jusqu'à présent, je pensais que "serveur" était une figure de discours, maintenant je suis douteux: est un serveur X Server comme dans un "serveur Web"? Comment dois-je comprendre sa fonction/définition?
Ensuite, il y a souvent des références au X11, Xorg, X Server et/ou X Window Manager. Il devient déroutant: est X11 un paquet comprenant Xorg et X Window Manager? Si oui, y a-t-il autre chose dans ce forfait X11?
X a également besoin de souris ou de clavier ou tout autre type d'entrée: est également cette partie des fonctions de X Server? Le gestionnaire de fenêtres X est-il uniquement examiné uniquement l'affichage?
Enfin, la citation ci-dessus mentionne également le client communiquant ou non les uns avec les autres: cela me rappelait un bus D-bus, que j'ai utilisé un peu à des fins d'apprentissage. Avec D-Bus, vous pouvez également déclencher des événements de fenêtre. Cela me rend un peu confus sur la manière dont les programmes doivent communiquer les uns avec les autres: * Quelle différence existe-t-il entre les programmes interagissant à l'aide de X serveur ou à l'aide de D-bus? *
C'est une honte que cette information reste obscurée, cela rend plus difficile l'apprentissage, mais j'espère que vous pourrez apporter une lumière sur ce sujet :) Merci.
Vous posez cinq questions ici et pourriez-vous mieux poser cinq questions ☺ mais je vais sauter dans:
X est un serveur et peut être comparé à un "serveur Web" en ce qu'il s'agit d'un processus qui écoute pour les connexions entrantes qui parlent un protocole particulier (le protocole X) et qui émet des réponses. Les connexions proviennent de X clients, qui peuvent figurer sur l'hôte local ou sur un hôte distant accessible sur un réseau.
X11 est une "version majeure" du protocole X, qui a évolué depuis la création. X11 est le protocole le plus récent et le plus courant. (Xorg est une implémentation d'un serveur X, X bibliothèques et d'une collection de clients, tous parlant x11. Il existe d'autres implémentations: la largement défunte xfree86; des entreprises commerciales telles que Hummingbird dépassent; des fourches telles que Xquartz, qui fonctionne sur Mac OS X )
Un "gestionnaire de fenêtre" est un client X qui gère Windows. Il a généralement la responsabilité de décorer Windows avec des biseaux/frontières, des ombres de chute, une barre de menu contenant des boutons, etc. - et gérer la logique de la placement de la fenêtre; Soutien Windows en cours de glisser, redimensionné ou réorganisé, etc.
X nécessite une entrée et il a une responsabilité partagée de gérer cela avec le noyau. Historiquement, X a fait beaucoup de gestion du matériel. Dans les temps modernes, sur la plate-forme Linux, X devient progressivement "plus petit" et déléguant cette responsabilité au noyau Linux. Les avantages de ceci sont les suivants: X Code X plus petit; Moins de "fils croisés" avec le noyau et x essaient à la fois de gérer les mêmes choses. (Un exemple de ceci est l'interface d'événement Linux, où les événements de souris, etc. sont interprétés et traduits par le noyau et ses pilotes dans l'interface standard à /dev/input/event*
, qui est consommé par le serveur X). Notez que sur d'autres plates-formes (BSD, Solaris) X est toujours assez monolithique.
Il y a beaucoup de façons pour les processus de communication entre eux. Je crois que X Les clients peuvent interagir au moyen du protocole X (par exemple, les gestionnaires de fenêtres X traditionnels doivent savoir quand d'autres clients dessinent des fenêtres, afin de les décorer; les téléavertisseurs doivent savoir quand une taille ou une position de la fenêtre change, afin de réfléchir que dans le pager). D-BUS est une technologie de communication inter-processus moderne (IPC) développée pour remédier aux lacunes d'autres méthodes. Ce n'est pas x spécifique.