Dans la session tmux, impossible de se connecter au serveur X après ssh'ing

10

Au travail, j'ai un bureau avec un moniteur et quelques sessions tmux en cours d'exécution. À la maison, je ssh fréquemment sur ce bureau et saisis mes sessions tmux en cours d'exécution. Quand je ssh à la maison, je ne pas veux utiliser X11, donc je ne pas utiliser le -Xdrapeau. Lorsque je retourne au travail (après avoir quitté ma maison) et que j'utilise ces sessions tmux sur le bureau, je ne peux plus rien faire qui engendrerait une interface graphique. Je ne peux pas ouvrir de fichiers dans evince. Lorsque j'essaie d'utiliser matplotlib, je reçois un : cannot connect to X servermessage.

Après avoir créé et ouvert une session tmux à partir de la maison, comment puis-je rattacher plus tard la possibilité d'ouvrir des éléments GUI sur le bureau?

Le ssh'ing de la maison semble faire oublier à la session tmux qu'elle peut engendrer des choses GUI.

ÉDITER:

chrisdembia
la source
Un peu confus. Utilisez-vous le -Xdrapeau maintenant ou non? Vous ne pouvez faire des choses X11 via SSH que si cela est défini.
Anko
Désolé pour la confusion. Je n'utilise jamais le drapeau -X, nulle part. Je n'ai pas l'intention de faire des trucs X11 via SSH. J'ai seulement l'intention d'utiliser X11 sur mon bureau, où la session tmux se trouve réellement. Je mettrai à jour la question d'origine.
chrisdembia

Réponses:

4

Il me suffit de définir la variable d'environnement DISPLAY sur: 0.0. Je pense que le problème est que j'utilise la coquille de poisson, et je dois utiliser l'indicateur -x pour définir ce faisant:

set -x DISPLAY :0.0
chrisdembia
la source
3
Notez que la valeur correcte pour DISPLAYpeut être différente de :0.0. Un moyen rapide de le découvrir est de créer une nouvelle fenêtre tmux et echo $DISPLAYlà.
j08lue
1
Il suffit d'étendre le commentaire de @ j08lue; dans mon cas echo $DISPLAYest revenu localhost:10.0et courir a set DISPLAY localhost:0.0fait l'affaire.
IsaacS
1
Quelqu'un connaît-il une version bashéquivalente ou cross-shell? set -xaugmente juste la verbosité pour moi bash. @IsaacS, avez-vous dû le faire à la set DISPLAY localhost:10.0place ou localhost:0.0avez-vous travaillé pour vous?
icedwater
4
Le bash, vous devriez pouvoir utiliser export DISPLAY=:0.0.
chrisdembia
1
Je n'aime pas cette solution, car je dois la faire pour chaque nouvelle fenêtre pour le reste de la session (qui dure des semaines pour moi). Et cela arrive même lorsque je suis de retour sur mon système X11 principal en créant de nouvelles fenêtres. Comment pouvons-nous faire en sorte que tmux cesse de se désinstaller $DISPLAY?
nealmcb
4

J'ai eu le même problème. J'utilise normalement tmuxdans le cadre d'un environnement de bureau X11 multi-écrans, et parfois ssh depuis un Chromebook, qui ne prend pas en charge X11 ou Set $DISPLAY. La réponse de @chrisdembia fonctionne, mais nécessite de changer DISPLAYdans chaque nouvelle fenêtre pour le reste de la session tmux, ce qui est pénible.

Une solution permanente consiste à supprimer DISPLAYde la update-environmentvariable tmux dans les paramètres tmux. Vous pouvez voir votre valeur actuelle avec cette commande:

tmux show-options -g update-environment

Pour le supprimer, j'ai ajouté cette ligne à mon ~/.tmux.conffichier, y compris tout sauf DISPLAY:

set-option -g update-environment "SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"

Ceci est expliqué plus en détail dans Réinitialiser la variable shell DISPLAY dans une session tmux sur ssh , ce qui explique pourquoi DISPLAYil y en a par défaut, pour un cas d'utilisation courant différent.

nealmcb
la source