Cygwin / X y Windows Subsystem para Linux

14

Tengo una instalación de Cygwin en funcionamiento en mi dispositivo con Windows 10 (una Surface 3, en caso de que sea importante), incluido un entorno de ventanas Xorg en funcionamiento. También he comenzado a experimentar con el Subsistema de Windows para Linux también. Parece que el consejo para ejecutar aplicaciones GUI desde WSL es instalar otro servidor X. Por lo general, se recomienda Xming, pero no he visto ninguna sugerencia de que Cygwin no debería funcionar.

Sin embargo, la forma simple falla:

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

Sospeché que podría ser un problema de red, debido a

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

... pero ssh para una máquina remota funciona bien, y aparentemente los servidores X han dejado de escuchar en el puerto 6000 desde la última vez que depuré uno.

Intenté ejecutar cygwin $ xhost +localhost, solo para descubrir que xhostactualmente no está instalado allí. Lo que podría ser lo siguiente que intente, o podría ser una persecución salvaje xhost(o al menos, un desnudo xhost +) se desalentó en su mayoría la última vez que depuré un servidor X.

¿Hay alguna falla fundamental que impida que WSL use el servidor Cygwin X? Si no, ¿cómo proceder?

robar
fuente
1
Dado que está utilizando un dispositivo con un alto DPI (Surface 3), este truco adicional podría serle útil. Puede aumentar el tamaño de la fuente, el tamaño de la ventana, etc., que se muestra cambiando lo que CygwinX cree que es el DPI de la pantalla. Edite /etc/X11/Xresourcesy cambie el Xft.dpivalor predeterminado de 96. Su pantalla debe tener 214 DPI, por lo que el texto debe verse bastante pequeño a través de CygwinX. De todos modos, puede ajustar ese valor de DPI para cambiar la escala a su gusto. (Simplemente reinicie CygwinX entre los cambios.)
Chris

Respuestas:

15

Debe decirle a Cygwin / X que escuche TCP, lo que no hace de manera predeterminada. Para ello, pasa la opción -listen tcpa XLaunch. Cuando haces esto, funciona muy bien. De hecho, prefiero Cygwin / X a Xming. Más detalles en el manual .


Encuentre el acceso directo que está utilizando para iniciar Cygwin / X. (Los accesos directos de inicio por usuario están activados C:\Users\<you>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, mientras que los accesos directos de inicio de todo el sistema están activados C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp. Abra las "Propiedades" de este enlace y cambie el objetivo de

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

a

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

Para obtener xauthasistencia, debe copiar ~/.Xauthoritydesde el directorio de inicio de su Cygwin al directorio de inicio de su WSL.

O si desea deshabilitar xauth, puede editar Cygwin's /usr/bin/startxwin, cambiando la línea apropiada cerca de la parte superior a enable_xauth=0.

Markus Hartikainen
fuente
Me funcionó agregando -listen tcp al campo del panel de XLaunch cuando hice clic en XLaunch en el menú Inicio. No pude modificar la propiedad con el elemento del menú para cambiar el argumento de la línea de comando.
Yu Shen
0

Tienes que iniciar el servidor X con startx. Si no tiene instalado X Windows, ejecute Cygwin setup.exey seleccione todos los sistemas X Windows y un administrador de ventanas.

Chloe
fuente