Los programas WSL2 X11 "desaparecen"

Los programas WSL2 X11 "desaparecen"

Estoy muy contento con WSL2 en Windows 10, ya que acabo de cambiar de Mac. CorroX410en el host de Windows e inicie las aplicaciones X11 dentro de WSL configurando

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'):0.0

antes de comenzar mi programa.

Funciona bien por un tiempo, pero después de que mi computadora se despierta del modo de suspensión, la ventana X desaparece. La aplicación todavía se muestra ejecutándose en ps.

Tengo la sensación de que tiene que ver con la pérdida de la conexión de red entre la aplicación X11 y el servidor X410, pero no estoy seguro. ¿Alguien ha experimentado esto y ha encontrado una solución?

Estoy en Windows 10 Insider Preview compilación 18945.

Respuesta1

Tienes razón, es un problema con la red. Aparentemente afecta todas las conexiones X11 a Hyper-V. Una solución es utilizar algo que no sea TCP/IP para la conexión X11.

El desarrollador del servidor Windows X11 x410 explicó cómo solucionarlo para máquinas virtuales Hyper-V mediante el uso de Virtual Socketsaquí.

Desafortunadamente, también explica al final deeste artículo más extensono pudo hacer que esto funcionara en WSL2. Esperará a que WSL2 madure hasta que tenga una mejor comunicación entre sistemas operativos a través de sockets de dominio Unix.

Respuesta2

Puedes usarXpraoX2Gocomo solución alternativa (para mí, X2Go funciona mejor).

Xpra

  1. Instale Xpra en su distribución de Linux ( apt install xpraen Ubuntu).
  2. Instale Xpra en Windows (el instalador se encuentra enDescarga del cliente Xpra)
  3. Inicie xpra en Linux usandoxpra start --bind-tcp=0.0.0.0:10000 :10000
  4. Inicie Xpra.exeWindows y conéctese al puerto 10000.

El cliente se volverá a conectar automáticamente después de un estado de suspensión/espera. Incluso cuando pierdes la conexión (tal vez al iniciar sesión en una VPN), siempre puedes volver a conectarte manualmente.

X2Go

  1. Instale X2Go en su distribución de Linux ( apt install x2goserveren Ubuntu).
  2. Instale el cliente X2Go en Windows (el instalador se encuentra enDescarga del cliente X2Go)
  3. Repare e inicie sshd en Linux:
    sudo apt-get remove --purge openssh-server
    sudo apt-get install openssh-server
    sudo service ssh --full-restart
    
    También tendrás que iniciar sshd en cada reinicio de WSL con sudo service ssh start.
  4. Inicie el cliente en Windows, conéctese usando "Tipo de sesión: Aplicaciones publicadas"

PD: actualmente estoy escribiendo una pequeña publicación en el blog:Entorno de desarrollo en WSL2

Respuesta3

Hay una solución perfectamente buena para esto:https://github.com/nbdd0121/wsld.

WSL Daemon: conexión X11 estable y sincronización de hora para WSL2

Hace exactamente lo que eluden otras soluciones: utiliza sockets de dominio Unix. Llevo muchos meses usándolo sin problema.

información relacionada