web-dev-qa-db-fra.com

Comment puis-je spécifier un affichage?

Lorsque j'exécute certains programmes sur SSH, tels que firefox &, un message d'erreur s'affiche. 

Error: no display specified 

Je voudrais ouvrir de nombreux affichages, montrant toujours la stdout de chaque programme. 

Question initiale: Comment puis-je spécifier l’affichage pour obtenir un programme à afficheurs multiples?

Pablo Santa Cruz me donne le code suivant comme solution. Je ne comprends pas.

$ export DISPLAY=yourmachine.yourdomain.com:0.0

$ firefox &

Quels sont yourmachine et yourdomain.com dans la commande?

Le fonctionnement de X est identique à celui de tout programme réseau. Vous avez un serveur d'une certaine description (dans ce cas, le serveur d'affichage X) qui s'exécute sur une machine spécifique et vous avez des clients X (tels que firefox) qui tentent de se connecter à ce serveur pour obtenir leurs informations affichées.

Souvent (sur les ordinateurs «domestiques»), le client et le serveur fonctionnent sur le même boîtier et il n’existe qu’un seul serveur, mais X est suffisamment puissant pour que cela ne soit pas nécessaire. Il a été construit avec la séparation serveur/client intégrée depuis le début.

Cela vous permet de faire des choses merveilleuses telles que vous connecter à votre boîte (en mode texte) à l'autre bout de la planète, lui dire que le serveur d'affichage est la boîte sur laquelle vous vous trouvez et, voila, les fenêtres commencent soudainement à apparaître localement.

Pour qu'un client puisse interagir avec un utilisateur, il doit savoir comment trouver le serveur. Il y a un certain nombre de façons de le faire. De nombreux clients permettent à l'option -display ou --display de la spécifier:

xeyes -display paxbox1.paxco.com:0.0

Beaucoup utiliseront la variable d'environnement DISPLAY si aucun affichage n'est spécifié. Vous pouvez définir cette variable comme n'importe quelle autre:

DISPLAY=paxbox1.paxco.com:0.0; export DISPLAY # in .profile
export DISPLAY=paxbox1.paxco.com:0.0 # in your Shell
DISPLAY=paxbox1.paxco.com:0.0 firefox & # for that command (Shell permitting)

La première partie de la variable DISPLAY est uniquement l'adresse de la machine du serveur d'affichage. Il suit la même règle que toute autre adresse IP; il peut s'agir d'un nom DNS pouvant être résolu (y compris localhost) ou d'une adresse IP spécifique (telle que 192.168.10.55).

La deuxième partie est spécifique à X. Il donne le numéro "d'affichage" X (serveur X) et le numéro d'écran à utiliser. Le premier (numéro d’affichage) fait généralement référence à un groupe de périphériques contenant un ou plusieurs écrans mais avec un seul clavier et une seule souris (c’est-à-dire un flux d’entrée). Le numéro d'écran indique généralement l'écran spécifique de ce groupe.

Un exemple serait:

+----------------------------------------+
|paxbox1.paxco.com|                      |
+-----------------+                      |
|                                        |
|  +----------+----+  +----------+----+  |
|  |Display :0|    |  |Display :1|    |  |
|  +----------+    |  +----------+    |  |
|  |               |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.0| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.1| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.2| |  | |Screen :1.0| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.3| |  | |Screen :1.1| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | | Keyboard  | |  | |  Keyboard | |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |   Mouse   | |  | |   Mouse   | |  |
|  | +-----------+ |  | +-----------+ |  |
|  +---------------+  +---------------+  |
|                                        |
+----------------------------------------+

Ici, vous avez un seul ordinateur (paxbox1.paxco.com) avec deux serveurs d’affichage. Le premier a quatre écrans et le second en a deux. Les possibilités sont alors:

DISPLAY=paxbox1.paxco.com:0.0
DISPLAY=paxbox1.paxco.com:0.1
DISPLAY=paxbox1.paxco.com:0.2
DISPLAY=paxbox1.paxco.com:0.3
DISPLAY=paxbox1.paxco.com:1.0
DISPLAY=paxbox1.paxco.com:1.1

en fonction de l'endroit où vous souhaitez que vos fenêtres apparaissent et des périphériques d'entrée que vous souhaitez utiliser.

66
paxdiablo
$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &
18
Pablo Santa Cruz

Lorsque vous vous connectez à une autre machine via SSH, vous pouvez activer le transfert X dans SSH afin que les fenêtres X soient transférées chiffrées via le tunnel SSH vers votre machine. Vous pouvez activer le transfert X en ajoutant -X à la ligne de commande ssh ou en définissant ForwardX11 yes dans votre fichier de configuration SSH.

Pour vérifier si le X-Forwarding a été configuré avec succès (le serveur peut ne pas le permettre), essayez si echo $DISPLAY génère quelque chose comme localhost:10.0.

11
TobiX

Essayer 

export DISPLAY=localhost:0.0
9
sreenath

Essayez d’installer le paquet xorg-x11-xauth .

6
thegriglat

J'ai rencontré un problème similaire, alors peut-être que cette réponse aidera quelqu'un.

La raison de l'erreur Error: no display specified est que Firefox est en cours de lancement, mais aucun serveur X (interface graphique) ne s'exécute sur l'hôte distant. Vous pouvez utiliser le transfert X11 pour exécuter Firefox sur l'hôte distant, mais l'afficher sur votre hôte local. Sous Mac OS X, vous devez télécharger XQuartz pour utiliser le transfert X11. Sans cela, vous n'aurez pas de variable $DISPLAY, donc si vous essayez avec echo $DISPLAY, elle sera vide.

5
Andrew

J'ai rencontré le même problème aujourd'hui. Voici donc une solution simple: lorsque vous utilisez SSH sur la machine, ajoutez simplement Ctrl - Y.

ssh user@ip_address -Y

Après la connexion, tapez firefox &. Et vous êtes prêt à partir.

4
Nandita Shukla

connectez-vous à votre serveur via

ssh -X root@yourIP

editez le fichier/etc/ssh/sshd_config et ajoutez-y cette ligne.

X11UseLocalhost no

Redémarrez sshd. pour CentOS ( vérifiez votre distribution )

/sbin/service sshd restart

vérifiez votre AFFICHAGE

echo $DISPLAY

tu devrais voir ça

yourIP:10.0

Prendre plaisir

firefox

pour plus d'informations

2
Ammar Bozorgvar

Veuillez ne PAS essayer de définir $ DISPLAY manuellement lors de la connexion via SSH.
Si vous vous connectez via SSH -X et que $ DISPLAY reste vide, cela signifie généralement qu'aucun canal crypté n'a pu être établi.

Il est fort probable que le paquet xauth ou xorg-x11-xauth soit manquant. Essayez de l'installer sur la machine distante en utilisant:

Sudo apt-get install xauth

ou

Sudo apt-get install xorg-x11-xauth

Après cela, redémarrez votre connexion SSH. N'oubliez pas d'utiliser SSH -X pour que la sortie X Window soit transmise à votre ordinateur local.

Essayons maintenant echo $DISPLAYagain pour voir si $ DISPLAY a été défini automatiquement par le démon SSH. Il devrait vous montrer une ligne avec une adresse IP et un port.

2
Jpsy

Même j'ai fait face à la même chose dans CentOS 6.8.

yum reinstall xorg*

Terminez votre session en cours et ouvrez une autre session dans un outil tel que mobiXterm. Assurez-vous que le transfert X11 de la session est activé dans l'outil.

1
Srihari Karanth

I à travers vnc pour comprendre le X11 plus . Pour spécifier l’affichage permettant d’obtenir un programme à plusieurs affichages, 

Par exemple,

vncserver :2
vncserver -list
echo '$DISPLAY'=$DISPLAY 
export DISPLAY=:2  # export DISPLAY=IP:DisplayNum or export DISPLAY=:DisplayNum for localhost; So that can vnc connect and see the vnc desktop :2 if $DISPLAY is not :2.
echo '$DISPLAY'=$DISPLAY
0
Yang