Comment puis-je spécifier un affichage?

Lorsque j'exécute certains programmes sur SSH, tels que firefox &, j'obtiens une erreur

Error: no display specified 

Je voudrais ouvrir de nombreux écrans, montrant toujours le stdout de chaque programme.

Question Initiale: Comment puis-je spécifier l'affichage pour obtenir un programme affiché?

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

$ export DISPLAY=yourmachine.yourdomain.com:0.0

$ firefox &

Quelles sont yourmachine et yourdomain.com dans la commande?

49
x11
demandé sur Yuan Wen 2009-04-24 07:36:46

11 réponses

La façon dont X fonctionne est la même que celle de tout programme réseau. Vous avez un serveur de description (dans ce cas, le serveur d'affichage X) qui s'exécute sur une machine spécifique, et vous avez des clients X (comme firefox) qui essaient de se connecter à ce serveur pour afficher leurs informations.

Souvent (sur les machines" home"), le client et le serveur fonctionnent sur la même boîte et il n'y a qu'un seul serveur, mais X est assez puissant pour que cela n'ait pas besoin d'arriver. Il a été construit avec l' 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) à mi-chemin de la planète, lui dire que le serveur d'affichage est la boîte sur laquelle vous êtes actuellement et, voila, les fenêtres commencent soudainement à apparaître localement.

Pour un client d'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 autorisent l'option -display ou --displayà spécifiez-le:

xeyes -display paxbox1.paxco.com:0.0

Beaucoup utiliseront la variable d'environnement DISPLAY Si un affichage n'est pas spécifiquement donné. Vous pouvez définir cette variable comme toute 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 juste 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 résoluble (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 x "display" (serveur X) numéro et le numéro de l'écran à utiliser. Le premier (numéro d'affichage) se réfère généralement à un groupe de périphériques contenant un ou plusieurs écrans mais avec un seul clavier et une seule souris (c'est-à-dire un seul flux d'entrée). Le numéro d'écran donne généralement l'écran spécifique au sein 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 une seule machine (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

Selon où vous voulez que vos fenêtres réelles apparaissent et quels périphériques d'entrée vous souhaitez utiliser.

62
répondu paxdiablo 2016-04-20 09:11:10
$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &
18
répondu Pablo Santa Cruz 2009-04-24 03:39:27

Lorsque vous vous connectez à une autre machine via SSH, vous pouvez activer X-Forwarding dans SSH, de sorte que X windows soit redirigé crypté 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 l'autoriser), essayez simplement si echo $DISPLAY génère quelque chose comme localhost:10.0.

11
répondu TobiX 2009-07-08 01:09:03

Essayez

export DISPLAY=localhost:0.0
9
répondu sreenath 2009-08-04 00:13:02

Essayez d'installer le paquetxorg-x11-xauth .

6
répondu thegriglat 2013-03-11 10:53:18

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 il n'y a pas de serveur X (GUI) en cours d'exécution sur l'hôte distant. Vous pouvez utiliser X11 forwarding pour exécuter Firefox sur L'hôte distant, mais l'afficher sur votre hôte local. Sur Mac OS X, vous devrez télécharger XQuartz afin d'utiliser X11 forwarding. Sans cela, vous n'aurez pas d'ensemble de variables $DISPLAY, donc si vous essayez et echo $DISPLAY, ce sera vide.

4
répondu Andrew 2014-12-31 04:31:51

N'essayez pas 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 vous manque probablement le paquet xauth ou xorg-x11-xauth. 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 cette fin et redémarrez votre connexion SSH. N'oubliez pas d'utiliser SSH -X pour que la sortie X Window soit transmise à votre machine.

Essayez à nouveau echo $DISPLAY 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
répondu Jpsy 2017-10-30 11:53:57

J'ai fait face à un problème similaire aujourd'hui. Alors, voici une solution simple: En faisant SSH à la machine, ajoutez simplement Ctrl - Y .

ssh user@ip_address -Y

Après la connexion, tapez firefox &. Et vous êtes bon pour aller.

2
répondu Nandita Shukla 2017-12-14 15:06:23

Connectez-vous à votre serveur via

ssh -X root@yourIP

Éditez 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

Vous devriez voir ceci

yourIP:10.0

Profitez

firefox

Pour plus d'Informations

2
répondu Ammar Bozorgvar 2018-02-17 10:35:37

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 comme mobiXterm. Assurez-vous que la transmission X11 de la session est activée dans l'outil.

1
répondu Srihari Karanth 2017-01-27 10:09:38

Je par vnc pour comprendre le X11 plus. Pour spécifier l'affichage pour obtenir un programme affiché, export DISPLAY = IP: DisplayNum.ScreenNum

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
répondu Yang 2017-11-21 02:58:39