Je suis nouveau dans les scripts shell. Je ne comprends pas quelle est la $DISPLAY
variable environnementale.
J'ai Ubuntu 13.10 et j'utilise un /bin/bash
shell. J'ai deux moniteurs.
Des questions:
La commande
echo $DISPLAY
imprimera:0.0
sur ma machine (sur les deux moniteurs). Qu'est-ce que ça veut dire?Dans quels cas la
$DISPLAY
variable sera vide ou NULL?Existe-t-il des articles ou des tutoriels à ce sujet?
xorg
environment-variables
Chandrayya GK
la source
la source
echo $DISPLAY
n'imprimons:0
PAS:0.0
Réponses:
Le mot magique dans le système de fenêtre X est DISPLAY. Un affichage consiste en (simplifié) de:
Un affichage est géré par un programme serveur, appelé serveur X. Le serveur offre des fonctionnalités d'affichage aux autres programmes qui s'y connectent.
Le serveur distant sait où il doit rediriger le trafic réseau X via la définition de la variable d'environnement DISPLAY qui pointe généralement vers un serveur X Display situé sur votre ordinateur local.
La valeur de la variable d'environnement d'affichage est:
où:
nomhôte est le nom de l'ordinateur sur lequel le serveur X s'exécute. Un nom d'hôte omis signifie l'hôte local.
D est un numéro de séquence (généralement 0). Cela peut varier si plusieurs écrans sont connectés à un ordinateur.
S est le numéro d'écran. Un affichage peut en réalité avoir plusieurs écrans. Habituellement, il n'y a qu'un seul écran, 0 étant la valeur par défaut.
Exemple de valeurs
hostname:D.S
signifie l'écran S sur l'affichage D du nom d'hôte de l'hôte; le serveur X pour cet affichage écoute sur le port TCP 6000 + D.host/unix:D.S
signifie l'écran S sur l'affichage D de l'hôte hôte; le serveur X pour cet affichage est à l'écoute sur le socket de domaine UNIX /tmp/.X11-unix/XD (il n'est donc accessible que depuis l'hôte).:D.S
est équivalent à host / unix: DS, où host est le nom d’hôte local.: 0.0 signifie que nous parlons du premier écran attaché à votre premier affichage dans votre hôte local
Lisez plus ici et ici et ici .
À partir d'une page de manuel X (7):
la source
/dev/tty1
), j'ai le vide$DISPLAY
.:0
pour$DISPLAY
.Les réponses existantes ne parviennent pas à aborder la situation dans son ensemble.
Si vous n'utilisez pas d'environnement graphique (c'est-à-dire que vous vous connectez à la console système sans fenêtre, etc.; ou que vous vous connectez à distance à partir d'un terminal texte uniquement sous SSH ou similaire, par exemple à partir d'un ordinateur Windows exécutant PuTTY), aucune interface graphique n'est impliquée et
DISPLAY
sera généralement non définie. La ligne de commande est votre seul moyen de communiquer avec l’ordinateur (bien qu’il soit possible de faire pivoter une session avec une interface graphique si vous savez comment faire).Si vous vous connectez à la console à l'aide d'une interface graphique (sous Ubuntu, on utilise généralement la sonde GDM) ou à l'aide d'un terminal graphique (tel qu'un ordinateur Windows exécutant eXceed ou mobaX, ou un logiciel de bureau à distance tel qu'un client VNC),
DISPLAY
La variable est configurée par le programme qui gère votre session graphique pour indiquer aux clients graphiques les périphériques d’E / S auxquels se connecter.Traditionnellement, l'interface graphique sur un ordinateur Ubuntu exécutait X.org, une implémentation de X11, bien que plus récemment, un remplacement modernisé appelé Mir ait été introduit par Canonical; et encore plus récemment, je crois que Mir sera abandonné au profit d'un autre projet, appelé Wayland, ayant des objectifs similaires . Ces remplacements ont pour but de réduire la complexité d'une pile X11 complète, ce que nous n'allons pas
DISPLAY
aborder ici - ils adhèrent à la même convention, qui est après tout ce dont nous discutons ici.Sur X11, la partie hôte
DISPLAY
peut être un serveur distant et vous utiliseriez votre ordinateur Ubuntu comme un "terminal graphique" pour accéder aux fichiers et aux programmes de ce serveur distant (votre ordinateur est alors le "serveur" qui sert un clavier. souris, et un ou plusieurs périphériques d’affichage pour les programmes "clients" s'exécutant sur le serveur distant). Plus généralement, le serveur X11 (ou Mir ou Wayland) et les programmes clients (un gestionnaire de bureau et divers clients graphiques tels qu'un navigateur Web, un client de messagerie, un programme de calendrier, etc.) s'exécutent tous sur votre ordinateur. Ceci est indiqué par la partie "serveur" de laDISPLAY
valeur, qui dans ce dernier cas est généralement vide (ce qui implique la valeur par défautlocalhost
).Un serveur X11 peut exécuter une ou plusieurs sessions graphiques. Par exemple, votre connexion à la console et une session VNC distante peuvent être exécutées simultanément. Dans ce cas (si elles sont gérées par la même instance de serveur X11), vous avez plusieurs "affichages" en termes X11. En pratique, une session (un événement de connexion et l'instance de bureau créée à partir de celle-ci) correspond à un affichage dans X11.
Un tel affichage peut avoir un ou plusieurs écrans. Traditionnellement, cela signifiait un moniteur, bien que l'architecture originale ait des traits malheureux tels que l'incapacité de déplacer une fenêtre d'un écran à un autre. Des add-ons tels que Xinerama et Xrandr ont encore compliqué la situation au point où un écran connecte souvent plusieurs moniteurs de différentes manières.
Si vous avez joué avec des systèmes à plusieurs moniteurs, vous avez probablement découvert que vous pouvez organiser les moniteurs de différentes manières et vous retrouver avec une zone rectangulaire dans laquelle vos moniteurs en affichent certaines parties et les autres ne sont affectés à aucun moniteur. Il s’agit de "l’écran" créé par X11, et si vous avez plusieurs cartes d’affichage, vous pouvez avoir plusieurs de ces écrans, chacun assigné à un ou plusieurs moniteurs (ou, en théorie, fonctionnant sans moniteur; Xvfb exploite cela pour permettre d’exécuter X11 sans aucun moniteur, en mappant simplement l’interface graphique sur une région de mémoire pour quelque fin que ce soit).
la source
De https://help.ubuntu.com/community/EnvironmentVariables :
Variable - AFFICHAGE
Exemple de valeurs:
À quoi ça sert?
la source
: 0.0 signifie le numéro d'affichage 0 et le numéro d'écran 0
En cas d'erreur dans votre $ DISPLAY et cela ne se produit pas normalement
Quelques tutoriels et ressources peuvent être trouvés ici:
la source