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
- Instale Xpra en su distribución de Linux (
apt install xpra
en Ubuntu). - Instale Xpra en Windows (el instalador se encuentra enDescarga del cliente Xpra)
- Inicie xpra en Linux usando
xpra start --bind-tcp=0.0.0.0:10000 :10000
- Inicie
Xpra.exe
Windows y conéctese al puerto10000
.
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
- Instale X2Go en su distribución de Linux (
apt install x2goserver
en Ubuntu). - Instale el cliente X2Go en Windows (el instalador se encuentra enDescarga del cliente X2Go)
- Repare e inicie sshd en Linux:
También tendrás que iniciar sshd en cada reinicio de WSL consudo apt-get remove --purge openssh-server sudo apt-get install openssh-server sudo service ssh --full-restart
sudo service ssh start
. - 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.