Tenho uma configuração para executar programas com GUIs no Ubuntu com MobaXterm e Windows Subsystem para Linux 2. No meu .bashrc, defino a variável DISPLAY com export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0
. Agora, isso parece não funcionar na minha conexão ethernet ou Wifi do trabalho - se eu executar um programa como o emacs em um terminal Ubuntu, ele simplesmente trava, e preciso interrompê-lo com Ctrl+C, e então recebo a saída "Display ... unavailable" (onde ... é o valor de DISPLAY).
A questão é basicamente: alguém sabe o que pode funcionar agora para permitir GUIs no Ubuntu usando MobaXterm com WSL2?
Ele funciona quando estou conectado ao meu Wi-Fi doméstico, mas não quando uso meu telefone como um hotspot. Também posso iniciar GUIs das próprias instâncias de terminal do MobaXterm (que não estão executando o Ubuntu, presumo). Criei essa configuração em meados de 2020 e funcionou na minha rede de trabalho pelo menos até 19 de dezembro de 2023 - não precisei usar essa configuração com muita frequência por um tempo e não registrei precisamente quando a usei com sucesso desde então. Menciono isso como esta postagem diz que a atualização do Windows 23H2 quebrou o encaminhamento do X11 para eles, então o problema pode estar relacionado a atualizações, mas a configuração deles é diferente da minha e as correções mencionadas lá (usando ip route
ou não configurando DISPLAY) não funcionam para mim.
Tentei todas as outras soluções possíveis que encontrei on-line, sem sucesso até agora (geralmente elas são antigas ou funcionam para pessoas que não usam o MobaXterm) - usando $(hostname).local:0
, saída de route.exe
ou baseando DISPLAY no meu endereço IP fornecido por hostname -I
, ifconfig
, ip
ou netshe.exe
.
Se eu defino DISPLAY para algo claramente inválido, o emacs não trava, mas vai direto para o modo "-nw", ou seja, sendo apenas um editor de texto no terminal. Então ele parece reconhecer que há algo não trivial sobre os endereços retornados pela maioria dos métodos acima, mas não é capaz de usá-los corretamente.
Fiquei pensando se poderia ser uma configuração do Firewall do Windows Defender, dada a diferença entre minhas redes doméstica e de trabalho e outras postagens mencionando isso como um problema potencial, mas não vejo nada que seja obviamente um problema. Mas não estou muito familiarizado com configurações de firewall, então posso não estar procurando a coisa certa. Minhas redes de trabalho e hotspot de telefone aparecem como redes "Privadas" nas configurações de Redes e Internet, sem opção para alterar isso, e ainda não verifiquei se há algo claramente diferente sobre minha rede Wi-Fi doméstica.
Informações da versão:
- Janelas 23H2 22631.4317
- WSL2 10.0.22621.1 (WinBuild.160101.0800) (saída de
(get-item C:\windows\system32\wsl.exe).VersionInfo.FileVersion
) - MobaXterm v.20.1 compilação 4290
- Ubuntu 20.04
Sim, WSL, MobaXterm e Ubuntu são bem antigos, eu acho, pois tenho dito "se não está quebrado, não atualize". Talvez eu deva atualizar um ou mais desses componentes? Mas eu prefiro não arriscar quebrar outros aspectos da minha configuração ou ter que reconstruí-la, se houver uma maneira mais simples de fazer isso funcionar, ou se houver uma quantidade mínima de atualização necessária.
OK, com um pouco mais de investigação, parece que alterar a configuração do Firewall do Windows Defender é a solução certa - adicionar uma regra de entrada para permitir conexões à porta 6000 do intervalo de endereços atribuídos ao DISPLAY parece permitir que as GUIs funcionem (para mim, a parte do endereço antes do primeiro
.
(chame-o de X) parece permanecer a mesma, então defino o intervalo comoX.0.0.0
)X.255.255.255
.