Que signifie réellement DISPLAY =: 0.0?

45

Qu'est-ce que cela :0.0signifie réellement? Je sais que :0c'est le premier serveur X qui est démarré sur une machine locale, :1le second, etc. Mais quelle est cette .0partie après :0? Existe-t-il d'autres combinaisons? (par exemple :0.0-something)

Contexte: J'essaie d'améliorer l'initscript de bumblebee qui suppose actuellement qu'il :0s'agit de l'affichage actif. Ce n'est pas le cas si je change d'utilisateur. Je voulais donc valider la $DISPLAYvariable avant de la transmettre à vglclient.

Lekensteyn
la source
2
FWIW, en.wikipedia.org/wiki/X_Window_System#Nomenclature m'a aidé à comprendre certains de ces termes. Cette réponse contient également des informations utiles.
waldyrious

Réponses:

52

Le format de la variable d'affichage est [host]:<display>[.screen].

host fait référence à un nom d’hôte réseau et, s’il est absent, signifie une connexion à la machine locale via une socket de domaine Unix.

Chaque hôte peut avoir plusieurs écrans et chaque écran peut avoir plusieurs écrans. Les écrans ne sont plus très utilisés, xinerama et maintenant xrandr combinant plusieurs écrans en un seul écran logique.

camh
la source
4
Merci, je viens de trouver la bonne page de manuel aussi, Xserver(1)référée à la DISPLAY NAMESsection de X(7). Reportez-vous à cette page de manuel pour plus de détails.
Lekensteyn
5
Et comment pourrais-je obtenir une liste des affichages disponibles pour un hôte donné? Idéalement dans une session SSH où je suis connecté à l'hôte à partir d'un PC client.
con-f-use
3
La partie display est également utilisée sur X sur SSH. Chaque nouvelle connexion SSH pour laquelle le transfert X est activé se voit attribuer un affichage différent, car ces écrans correspondent en interne à un décalage de numéro de port TCP. Par exemple DISPLAY=localhost:10.0, le client dirigera la sortie graphique sur le localhostport hôte 6010. Si vous avez plusieurs connexions au même ordinateur, votre programme doit envoyer des sorties différentes à différents ports afin que le serveur SSH puisse transférer la sortie X vers la destination appropriée.
RAKK
4
@Raza: Les numéros de port TCP à ouvrir sont 6000 + display_number. Pour l'hôte d'affichage: 0.0, le port 6000. Pour l'hôte d'affichage: 10.0, le port 6010. Notez que le transfert SSH X11 est effectué sur le port 22 et non sur les ports X11.
camh le
1
@Claudiu: DISPLAY =: 0 utilisera une socket de domaine unix, DISPLAY = localhost: 0 utilisera une socket de domaine Internet (IP). Il est probable que votre serveur X n'écoute pas sur un noeud final TCP / IP. Je ne connais pas le socket de domaine unix par défaut.
camh