Cygwin / X et sous-système Windows pour Linux

14

J'ai une installation Cygwin fonctionnelle sur mon appareil Windows 10 (une Surface 3, au cas où cela compte), y compris un environnement de fenêtrage Xorg fonctionnel. Je viens également de commencer à expérimenter avec le sous-système Windows pour Linux. Il semble que le conseil pour exécuter des applications GUI à partir de WSL est d'installer un autre serveur X. Habituellement, Xming est recommandé, mais je n'ai vu aucune suggestion que Cygwin ne devrait pas fonctionner.

Cependant, la méthode simple échoue:

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

Je soupçonnais que ce pourrait être un problème de mise en réseau, à cause 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

... mais ssh sur une machine distante fonctionne très bien, et apparemment les Xservers ont cessé d'écouter sur le port 6000 depuis la dernière fois que j'ai débogué.

J'ai essayé de courir cygwin $ xhost +localhost, seulement pour découvrir que ce xhostn'est pas actuellement installé là-bas. Ce qui pourrait être la prochaine chose à essayer, ou pourrait être une chasse à l'oie sauvage --- xhost(ou au moins, une nue xhost +) a été principalement découragée la dernière fois que j'ai débogué un serveur X.

Existe-t-il une faille fondamentale empêchant WSL d'utiliser le serveur Cygwin X? Sinon, comment dois-je procéder?

Rob
la source
1
Étant donné que vous utilisez un périphérique à haute résolution (la Surface 3), cette astuce supplémentaire pourrait vous être utile. Vous pouvez augmenter la taille de la police, la taille de la fenêtre, etc., en modifiant ce que CygwinX pense que le DPI de l'écran est. Modifiez /etc/X11/Xresourceset modifiez la Xft.dpivaleur par défaut de 96. Votre affichage doit être de 214 DPI, donc le texte doit être assez petit via CygwinX. Quoi qu'il en soit, vous pouvez modifier cette valeur DPI pour modifier l'échelle à votre guise. (Il suffit de redémarrer CygwinX entre les changements.)
Chris

Réponses:

15

Vous devez dire à Cygwin / X d'écouter TCP, ce qu'il ne fait pas par défaut. Pour ce -listen tcpfaire, passez l'option à XLaunch. Lorsque vous faites cela, cela fonctionne très bien. En fait, je préfère Cygwin / X à Xming. Plus de détails dans le manuel .


Recherchez le raccourci que vous utilisez pour démarrer Cygwin / X. (Les raccourcis de démarrage par utilisateur sont disponibles C:\Users\<you>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, tandis que les raccourcis de démarrage à l'échelle du système le sont C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp. Ouvrez les "Propriétés" de ce lien et changez la cible de

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

à

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

Pour le xauthsupport, vous devez copier ~/.Xauthoritydu répertoire personnel de votre Cygwin vers le répertoire personnel de votre WSL.

Ou si vous souhaitez désactiver xauth, vous pouvez modifier Cygwin /usr/bin/startxwin, en changeant la ligne appropriée près du haut en enable_xauth=0.

Markus Hartikainen
la source
Cela a fonctionné pour moi en ajoutant -listen tcp au champ du panneau de XLaunch lorsque j'ai cliqué sur XLaunch dans le menu Démarrer. Je n'ai pas pu modifier la propriété avec l'élément de menu pour modifier l'argument de la ligne de commande.
Yu Shen
0

Vous devez démarrer le serveur X avec startx. Si vous n'avez pas installé X Windows, exécutez Cygwin setup.exeet sélectionnez tous les systèmes X Windows et un gestionnaire de fenêtres.

Chloe
la source