Programas WSL2 X11 “desaparecem”

Programas WSL2 X11 “desaparecem”

Estou muito feliz com o WSL2 no Windows 10, tendo acabado de mudar do Mac. eu corroX410no host do Windows e inicie aplicativos X11 dentro do WSL configurando

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

antes de iniciar meu programa.

Funciona bem por um tempo, mas depois que meu computador sai do modo de suspensão, a janela X desaparece. O aplicativo ainda é mostrado em execução no formato ps.

Tenho a sensação de que isso tem a ver com a perda da conexão de rede entre o aplicativo X11 e o servidor X410, mas não tenho certeza. Alguém já passou por isso e encontrou uma solução alternativa?

Estou no Windows 10 Insider Preview versão 18945.

Responder1

Você está certo, é um problema de rede. Aparentemente, afeta todas as conexões do X11 com o Hyper-V. Uma solução é usar algo diferente de TCP/IP para a conexão X11.

O desenvolvedor do servidor Windows X11 x410 explicou como corrigi-lo para VMs Hyper-V usando Virtual Socketsaqui.

Infelizmente, ele também explica no final doeste artigo mais extensoele não conseguiu fazer isso funcionar no WSL2. Ele vai esperar que o WSL2 amadureça até que tenha uma melhor comunicação entre sistemas operacionais por meio de soquetes de domínio Unix.

Responder2

Você pode usarXpraouX2Gocomo solução alternativa (para mim o X2Go funciona melhor).

Xpra

  1. Instale o Xpra na sua distribuição Linux ( apt install xprano Ubuntu).
  2. Instale o Xpra no Windows (o instalador está emBaixar cliente Xpra)
  3. Inicie o xpra no Linux usandoxpra start --bind-tcp=0.0.0.0:10000 :10000
  4. Inicie Xpra.exeno Windows e conecte-se ao Port 10000.

O cliente se reconectará automaticamente após uma suspensão/espera. Mesmo quando você perde a conexão (talvez ao fazer login em uma VPN), você sempre pode reconectar-se manualmente.

X2Go

  1. Instale o X2Go na sua distribuição Linux ( apt install x2goserverno Ubuntu).
  2. Instale o cliente X2Go no Windows (o instalador está emBaixar cliente X2Go)
  3. Corrija e inicie o sshd no Linux:
    sudo apt-get remove --purge openssh-server
    sudo apt-get install openssh-server
    sudo service ssh --full-restart
    
    Você também terá que iniciar o sshd em cada reinicialização do WSL com sudo service ssh start.
  4. Inicie o cliente no Windows, conecte-se usando "Tipo de sessão: Aplicativos publicados"

PS: Atualmente estou escrevendo uma pequena postagem no blog:Ambiente de desenvolvimento em WSL2

Responder3

Existe uma solução perfeitamente boa para isso:https://github.com/nbdd0121/wsld.

WSL Daemon - Conexão X11 estável e sincronização de tempo para WSL2

Ele faz exatamente o que uma das outras soluções evita: usa soquetes de domínio Unix. Estou usando há muitos meses sem problemas.

informação relacionada