En la sesión tmux, no se puede conectar al servidor X después de ssh'ing

10

En el trabajo, tengo un escritorio con un monitor y algunas sesiones de tmux en ejecución. En casa, frecuentemente ingreso a ese escritorio e ingreso a mis sesiones tmux en ejecución. Cuando ssh desde casa, no quiero usar X11, así que no uso la -Xbandera. Cuando vuelvo al trabajo (después de enviar algo desde casa) y uso esas sesiones de tmux en el escritorio, ya no puedo hacer nada que genere una GUI. No puedo abrir archivos en evidencia. Cuando intento usar matplotlib, recibo un : cannot connect to X servermensaje.

Después de abrir y abrir una sesión tmux existente desde casa, ¿cómo puedo volver a conectar la capacidad de abrir cosas de GUI en el escritorio?

El ssh'ing desde casa parece hacer que la sesión tmux olvide que puede generar cosas de GUI.

EDITAR:

chrisdembia
fuente
Poco confundido. ¿Estás usando la -Xbandera ahora o no? Solo puede hacer cosas X11 a través de SSH si está configurado.
Anko
Perdón por la confusion. Nunca uso la bandera -X, en ningún lado. No tengo la intención de hacer cosas X11 a través de SSH. Solo pretendo usar X11 en mi escritorio, donde realmente vive la sesión tmux. Actualizaré la pregunta original.
chrisdembia

Respuestas:

4

Todo lo que necesito hacer es establecer la variable de entorno DISPLAY en: 0.0. Creo que el problema es que estoy usando el shell de pescado, y necesito usar la bandera -x para configurarlo al hacer esto:

set -x DISPLAY :0.0
chrisdembia
fuente
3
Tenga en cuenta que el valor correcto para DISPLAYpodría ser diferente de :0.0. Una forma rápida de averiguarlo es crear una nueva ventana tmux y echo $DISPLAYallí.
j08lue
1
Solo extiendo el comentario de @ j08lue; en mi caso echo $DISPLAYvolví localhost:10.0y corriendo set DISPLAY localhost:0.0hice el truco.
IsaacS
1
¿Alguien sabe un bashequivalente, o una versión cross-shell? set -xsolo aumenta la verbosidad para mí en bash. @ Isaac, ¿tuvo que set DISPLAY localhost:10.0hacerlo en su lugar o localhost:0.0trabajó para usted?
agua helada
44
En bash, deberías poder usar export DISPLAY=:0.0.
chrisdembia
1
No me gusta esta solución, ya que tengo que hacerlo para cada nueva ventana durante el resto de la sesión (que dura semanas para mí). Y sucede incluso cuando estoy de vuelta en mi sistema X11 principal creando nuevas ventanas. ¿Cómo podemos hacer que tmux deje de desarmarse $DISPLAY?
nealmcb
4

Tuve el mismo problema. Normalmente lo uso tmuxcomo parte de un entorno de escritorio X11 de múltiples monitores, y a veces ssh desde un Chromebook, que no es compatible con X11 o set $DISPLAY. La respuesta de @chrisdembia funciona, pero requiere cambiar DISPLAYen cada nueva ventana para el resto de la sesión de tmux, lo cual es una molestia.

Una solución permanente es eliminar DISPLAYde la update-environmentvariable tmux en la configuración de tmux. Puede ver su valor actual con este comando:

tmux show-options -g update-environment

Para eliminarlo, agregué esta línea a mi ~/.tmux.confarchivo, incluyendo todo menos DISPLAY:

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

Esto se explica con más detalle en Restablecer la variable DISPLAY de shell en una sesión tmux a través de ssh , lo que explica por qué DISPLAYexiste de forma predeterminada, para un caso de uso común diferente.

nealmcb
fuente