Cygwin / X e Windows Subsystem para Linux

12

Eu tenho uma instalação do Cygwin em funcionamento no meu dispositivo Windows 10 (um Surface 3, caso isso seja importante), incluindo um ambiente de janelas Xorg em funcionamento. Acabei de começar a experimentar com o Windows Subsystem for Linux também. Parece que o conselho para executar aplicativos GUI do WSL é instalar outro servidor X. Geralmente o Xming é recomendado, mas não vi nenhuma sugestão de que o Cygwin não deva funcionar.

No entanto, a maneira simples falha:

WSL $ export DISPLAY=:0
WSL $ emacs &
Display :0 unavailable, simulating -nw

Eu suspeitava que poderia ser um problema de rede, por causa de

WSL $ telnet localhost 6000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
WSL $ /sbin/ifconfig
Warning: cannot open /proc/net/dev (No such file or directory). Limited output.
WSL $ # there was no output at all, actually

... mas o ssh para uma máquina remota funciona bem, e aparentemente os Xservers pararam de escutar na porta 6000 desde a última vez que depurei uma.

Eu tentei correr cygwin $ xhost +localhost, só para descobrir que xhost não está instalado atualmente. Qual pode ser a próxima coisa a tentar, ou pode ser uma perseguição selvagem --- xhost (ou pelo menos, um nu xhost + ) estava principalmente desanimado a última vez que depurei um servidor X.

Existe alguma falha fundamental que impede a WSL de usar o servidor Cygwin X? Se não, como devo proceder?

rob
fonte
1
Como você está usando um dispositivo com DPI alto (o Surface 3), esse truque extra pode ser útil para você. Você pode aumentar o tamanho da fonte, o tamanho da janela, etc., mostrando o que o CygwinX acha que é o DPI da tela. Editar /etc/X11/Xresources e mudar o Xft.dpi padrão de 96. Sua exibição deve ser de 214 DPI, portanto, o texto deve parecer bem pequeno no CygwinX. Independentemente disso, você pode ajustar esse valor de DPI para alterar a escala ao seu gosto. (Apenas reinicie o CygwinX entre as alterações).
Chris

Respostas:

10

Você precisa dizer ao Cygwin / X para ouvir o TCP, o que ele não faz por padrão. Você faz isso passando a opção -listen tcp para XLaunch. Quando você faz isso, funciona muito bem. Eu realmente prefiro Cygwin / X para Xming. Mais detalhes em o manual .


Encontre o atalho que você está usando para iniciar o Cygwin / X. (Atalhos de inicialização por usuário estão em C:\Users\<you>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, enquanto os atalhos de inicialização do sistema estão em C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp. Abra as "Propriedades" deste link e altere o alvo de

C:\cygwin64\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; exec /usr/bin/startxwin"

para

C:\cygwin64\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; exec /usr/bin/startxwin -- -listen tcp"

Para xauth apoio, você deve copiar ~/.Xauthority do diretório home do seu Cygwin para o diretório home da sua WSL.

Ou se você quiser desabilitar xauth, você pode editar o Cygwin's /usr/bin/startxwin, alterando a linha apropriada perto do topo para enable_xauth=0.

Markus Hartikainen
fonte
1

Você tem que iniciar o servidor X com startx. Se você não tiver o X Windows instalado, execute o Cygwin setup.exe e selecione todos os sistemas X Windows e um gerenciador de janelas.

Chloe
fonte