X, Xorg et D-Bus: quelle est la différence?

35

Dans le processus d’apprentissage de certaines choses dans la programmation graphique (par exemple, réserver de l’espace à l’écran pour une application), je dois en apprendre plus sur le gestionnaire de fenêtres, généralement X11 sous Linux (je ne suis pas sûr qu’il existe même des distributions). , qui utilise autre chose que X11, bien que j’ai entendu parler de Wayland , qui n’a pas encore été implémenté dans aucun.)

Je suis assez nouveau en programmation et impatient; donc je plonge juste dedans. Maintenant, je lis le ICCCM, dans l’espoir d’en apprendre davantage. Ce document vise cependant un public qui en sait plus que moi. Je suis donc tombé sur certaines informations et j'aimerais obtenir des éclaircissements.

La section 2 de l'ICCCM cite:

Notez que toutes les données transférées entre un propriétaire et un demandeur doivent généralement passer par le serveur dans un environnement X Version 11. Un client ne peut pas supposer qu'un autre client peut ouvrir les mêmes fichiers ou même communiquer directement. L'autre client peut communiquer avec le serveur par le biais d'un mécanisme de réseau complètement différent (par exemple, un client peut être DECnet et l'autre TCP / IP). Ainsi, la transmission de références indirectes aux données (telles que les noms de fichier, les noms d'hôte et les numéros de port, etc.) n'est autorisée que si les deux clients sont spécifiquement d'accord.

Autant que je sache, X Window Manager est construit sur Top of X Server (merci Wikipedia). Dans la citation ci-dessus: il est indiqué que le client peut communiquer avec le serveur via DECnet ou TCP / IP. Jusqu'à présent, je pensais que "serveur" était une figure de style, maintenant je doute: le serveur X est-il un serveur comme dans un "serveur Web"? Comment devrais-je comprendre sa fonction / définition?

Ensuite, il est souvent fait référence à X11, Xorg, X Server et / ou X Window Manager. Cela devient déroutant: X11 est-il un paquet incluant Xorg et X Window Manager? Si oui, y a-t-il autre chose dans ce bundle X11?

X a également besoin d'une souris, d'un clavier ou de tout autre type de saisie: cela fait-il aussi partie des fonctions du serveur X? X Window Manager s’occupe-t-il uniquement de l’affichage?

Enfin, la citation ci-dessus mentionne également le fait que le client communique ou non entre eux: cela me faisait penser à D-Bus, que j'ai un peu utilisé à des fins d'apprentissage. Avec D-Bus, vous pouvez également déclencher des événements de fenêtre. Cela me laisse un peu perplexe quant à la manière dont les programmes doivent communiquer entre eux: * Quelle différence y a-t-il entre les programmes qui interagissent avec X Server ou avec D-Bus? *

C'est dommage que cette information reste obscure, cela rend plus difficile à apprendre, mais j'espère que vous pourrez apporter un peu de lumière à ce sujet :) Merci.

Benjoin
la source

Réponses:

62

Vous posez cinq questions ici, et vous feriez peut-être mieux de le faire ☺ Mais je vais intervenir:

  1. X est un serveur et peut être comparé à un "serveur Web" en ce sens qu’il s’agit d’un processus qui écoute les connexions entrantes qui parlent un protocole particulier (le protocole X) et qui donne des réponses. Les connexions proviennent de clients X, qui peuvent se trouver sur l'hôte local ou sur un hôte distant accessible via un réseau.

  2. X11 est une "version majeure" du protocole X, qui a évolué depuis sa création. X11 est le protocole le plus récent et le plus courant. (Xorg est une implémentation d’un serveur X, de bibliothèques X et d’une collection de clients, tous parlant X11. Il existe d’autres implémentations: la plus ancienne XFree86; les applications commerciales telles que Hummingbird Exceed; des fourchettes telles que XQuartz, fonctionnant sous Mac OS X )

  3. Un "gestionnaire de fenêtres" est un client X qui gère les fenêtres. Il est généralement chargé de décorer les fenêtres avec des biseaux / bordures, des ombres portées, une barre de menus contenant des boutons, etc. - et de gérer la logique de placement des fenêtres. les fenêtres de support étant traînées, redimensionnées ou réarrangées, etc.

  4. X nécessite une entrée et il a la responsabilité partagée de gérer cela avec le noyau. Historiquement, X gérait lui-même beaucoup de matériel. De nos jours, sur la plate-forme Linux, X devient progressivement "plus petit" et délègue cette responsabilité au noyau Linux. Les avantages de ceci sont: un code X plus petit; moins de "fils croisés" avec le noyau et X essayant tous deux 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 de, utilisée /dev/input/event*par le serveur X). Notez que sur d'autres plates-formes (BSD, Solaris), X est encore assez monolithique.

  5. Il existe de très nombreuses manières pour les processus de communiquer les uns avec les autres. Je pense que les clients X peuvent interagir par le biais 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 la taille ou la position d'une fenêtre change refléter cela dans le téléavertisseur). D-Bus est une technologie moderne de communication inter-processus (IPC) développée pour remédier aux inconvénients des autres méthodes. Ce n'est pas spécifique à X.

jmtd
la source
Merci beaucoup! C'est vraiment utile. À propos des 5 questions: je ne sais pas quel est le protocole dans ce cas, mais si un administrateur souhaite que je les scinde, j'en entends parler. Personnellement, j'aime bien avoir cela dans un document et voir les 5 questions en tant que sous-questions au titre. Merci encore.
Benjamin
Le fait que le protocole X Window System ne soit pas utilisé est conçu de telle sorte que les applications ("clients") ne doivent pas nécessairement s'exécuter sur le même hôte. Vous pouvez donc vous connecter à un autre ordinateur, y exécuter un programme et la fenêtre s'ouvre à l'écran. comme une application locale. Si un autre programme vous demandait "quel est votre identifiant de processus afin que je puisse vous parler directement", il est impossible de répondre correctement à cette question.
Simon Richter
Vous voudrez peut-être éviter que la ressource partagée par le serveur X soit un écran composé d'un ou plusieurs moniteurs et de deux ou plusieurs périphériques d'entrée (clavier, souris)
hildred
Certainement utile toutes les 5 questions ensemble. Merci.
Harvey
@hildred Dans le cas d'un écran tactile en configuration de kiosque, vous pouvez n'avoir qu'un seul périphérique d'entrée.
Shadur