Estou muito feliz com o WSL2 no Windows 10, tendo acabado de mudar do Mac. Eu executo o X410 no host do Windows e inicio os aplicativos X11 dentro do WSL definindo
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 como sendo executado em ps
.
Tenho a sensação de que tem a ver com a perda de conexão de rede entre o aplicativo X11 e o servidor X410, mas não tenho certeza. Alguém já passou por isso e apresentou uma solução alternativa?
Estou no Windows 10 Insider Preview build 18945.
Você está certo, é um problema com a rede. Aparentemente, afeta todas as conexões 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 soquetes virtuais aqui.
Infelizmente, ele também explica no final deste artigo mais extenso que 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.
Você pode usar o Xpra ou o X2Go como solução alternativa (para mim, o X2Go funciona melhor).
Xpra
apt install xpra
no Ubuntu).xpra start --bind-tcp=0.0.0.0:10000 :10000
Xpra.exe
no Windows e conecte-se ao Port10000
.O cliente se reconectará automaticamente após um modo de suspensão/espera. Mesmo quando você perde a conexão (talvez ao fazer login em uma VPN), você sempre pode reconectar manualmente.
X2Go
apt install x2goserver
no Ubuntu).sudo service ssh start
.PS: No momento, estou escrevendo uma pequena postagem no blog: Ambiente de desenvolvimento no WSL2
Existe uma solução perfeitamente boa para isso: https://github.com/nbdd0121/wsld .
Ele faz exatamente o que uma das outras soluções evita: usa soquetes de domínio Unix. Estou usando há muitos meses sem nenhum problema.