Bonjour à tous,
Voila j'aimerais comprendre un peu plus ce que fait le server X11.
Toutes applications qui souhaitent afficher quelque chose à l'écran doit passer par ce serveur? Il y a une API disponible en C ou C++ ou on connait le port d'écoute et le protocole pour communiquer avec le serveur et on envoie une socket TCP?
Meme si je n'ai pas de Bureau graphique, l'interpreteur bash utilise également le serveur X11 pour afficher les sorties des commandes ?
Je peux allumer n'importe quelle led de mon écran d'ordi si j'envoie une requette avec le serveur X11 ?
Merci d'avance pour vos éclaircissements
# Réponses
Posté par ted (site web personnel) . Évalué à 3. Dernière modification le 27 mai 2019 à 12:11.
Je ne suis pas du tout un spécialiste, mais voici ma maigre contribution:
Oui et non. Si tu veux afficher quelque chose sur un bureau qui utilise X11, oui. Mais il y a aussi Wayland aujourd'hui, qui va remplacer tôt ou tard X11. Tu peux aussi passer par le framebuffer sans avoir de serveur graphique.
Généralement quand on veut faire un programme graphique on utilise une bibliothèque qui va gérer tout ça (GTK, Qt, TK…). Pour se passer de ces bibliothèques et dialoguer directement avec X, je ne saurais t'aiguiller.
Le problème si tu codes quelque chose directement pour X11 est la portabilité: ce serveur est utilisé avec Linux, mais pas par Windows par exemple. Et il est sur le point d'être remplacé, donc ton application risque d'être compliquée à maintenir dans la durée. En utilisant une bibliothèque graphique qui est compatible avec plusieurs systèmes tu évites ça.
Non, c'est ton émulateur de terminal qui utilise X11, à travers sa bibliothèque graphique (GTK si tu utilises gnome-terminal). Si tu es dans un TTY il n'y a pas de serveur graphique. Mais il reste la possibilité d'utiliser le framebuffer pour afficher des éléments graphiques.
Un LUG en Lorraine : https://enunclic-cappel.fr
[^] # Re: Réponses
Posté par viviNeutron . Évalué à 1.
merci pour ta réponse.
Je n'ai pas compris pour le framebuffer. c'est quoi ?
[^] # Re: Réponses
Posté par deuzene (site web personnel) . Évalué à 2. Dernière modification le 27 mai 2019 à 14:31.
https://www.tldp.org/pub/Linux/docs/HOWTO/translations/fr/pdf/Framebuffer-HOWTO.pdf
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
# libX11 et LibXCB
Posté par David Marec . Évalué à 2.
Il en existe même deux:
# Du dessin
Posté par Anthony Jaguenaud . Évalué à 5.
Le serveur X11 reçoit des ordres de dessin depuis le réseau (historiquement) et les exécutent sur ton écran (plutôt ta carte graphique).
X11 est tellement lié au réseau que les premières versions, tu ne pouvais pas avoir d’affichage sans carte réseau… ensuite, il y a eu l’interface loopback.
L’avantage de se système c’est que peu importe où sont exécuté les applications, elles s’affichent sur ton écran.
On peut même lancer une application sur un serveur A, le windows manager sur un serveur B et le Desktop manager sur un serveur C.
Dans les problèmes classique de l’architecture : il y a eu des problèmes de sécurité qui n’avait pas été anticipé car a l’époque ce n’était pas encore courant ; il y a eu des problèmes de performance notamment avec l’arrivé de la 3D temps réel. Dans les problèmes de performances, je me souviens qu’en jouant avec la molette pour faire défiler un pdf dans acrobat reader (distant), acrobat envoyait les ordres de dessin comme des listes de lignes. Mais des lettres courbes, ça fait beaucoup de lignes, et on arrivait à 200/300Mbit/s de débit. Aujourd’hui, avec les CPU qui arrivent à faire de la compression LZW rapide, il est plus efficace de transférer des bitmap plutôt que des lignes…
Pour afficher, il faut utiliser la libX11 ou équivalente, mais comme dit précédemment, il vaut mieux passer par des bibliothèques plus moderne comme Qt.
Espérant avoir répondu au moins partiellement à tes interrogations.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.