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
- Instale o Xpra na sua distribuição Linux (
apt install xpra
no Ubuntu). - Instale o Xpra no Windows (o instalador está emBaixar cliente Xpra)
- Inicie o xpra no Linux usando
xpra start --bind-tcp=0.0.0.0:10000 :10000
- Inicie
Xpra.exe
no Windows e conecte-se ao Port10000
.
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
- Instale o X2Go na sua distribuição Linux (
apt install x2goserver
no Ubuntu). - Instale o cliente X2Go no Windows (o instalador está emBaixar cliente X2Go)
- Corrija e inicie o sshd no Linux:
Você também terá que iniciar o sshd em cada reinicialização do WSL comsudo apt-get remove --purge openssh-server sudo apt-get install openssh-server sudo service ssh --full-restart
sudo service ssh start
. - 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.