Cygwin / X und Windows Subsystem für Linux


14

Ich habe eine funktionierende Cygwin-Installation auf meinem Windows 10-Gerät (ein Surface 3, falls wichtig), einschließlich einer funktionierenden Xorg-Fensterumgebung. Ich habe gerade angefangen, auch mit dem Windows-Subsystem für Linux zu experimentieren. Es scheint, als würde der Rat zum Ausführen von GUI-Anwendungen über die WSL darin bestehen, einen anderen X-Server zu installieren. Normalerweise wird Xming empfohlen, aber ich habe keine Vorschläge gesehen, dass Cygwin nicht funktionieren sollte.

Der einfache Weg schlägt jedoch fehl:

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

Ich vermutete, dass es sich um ein Netzwerkproblem handeln könnte

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

... aber ssh auf einem Remote-Computer funktioniert einwandfrei, und anscheinend haben Xserver Port 6000 seit dem letzten Debugging nicht mehr überwacht.

Ich habe versucht zu laufen cygwin $ xhost +localhost, nur um festzustellen, dass xhostdort derzeit nicht installiert ist. Was als nächstes versucht werden könnte oder eine wilde Gänsejagd sein könnte - xhost(oder zumindest eine nackte xhost +), wurde beim letzten Debuggen eines X-Servers größtenteils entmutigt.

Gibt es einen grundlegenden Fehler, der die Verwendung des Cygwin X-Servers durch WSL verhindert? Wenn nicht, wie soll ich vorgehen?


1
Da Sie ein Gerät mit hoher DPI (das Surface 3) verwenden, kann dieser zusätzliche Trick für Sie hilfreich sein. Sie können die Schriftgröße, Fenstergröße usw. erhöhen, indem Sie ändern, was CygwinX für die Bildschirm-DPI hält. Bearbeiten /etc/X11/Xresourcesund ändern Sie die Xft.dpiStandardeinstellung von 96. Ihre Anzeige sollte 214 DPI haben, sodass der Text in CygwinX recht klein aussehen muss. Unabhängig davon können Sie diesen DPI-Wert anpassen, um die Skalierung nach Ihren Wünschen zu ändern. (Starten Sie CygwinX einfach zwischen den Änderungen neu.)
Chris

Antworten:


15

Sie müssen Cygwin / X anweisen, TCP abzuhören, was standardmäßig nicht der Fall ist. Sie tun dies, indem Sie die Option -listen tcpan XLaunch übergeben. Wenn Sie dies tun, funktioniert es wirklich gut. Eigentlich bevorzuge ich Cygwin / X gegenüber Xming. Weitere Details im Handbuch .


Suchen Sie die Verknüpfung, mit der Sie Cygwin / X starten. (Startverknüpfungen pro Benutzer sind aktiviert C:\Users\<you>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, während systemweite Startverknüpfungen aktiviert sind C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp. Öffnen Sie die "Eigenschaften" dieses Links und ändern Sie das Ziel von

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

zu

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

Zur xauthUnterstützung sollten Sie ~/.Xauthorityaus dem Home-Verzeichnis Ihres Cygwin in das Home-Verzeichnis Ihrer WSL kopieren .

Wenn Sie deaktivieren möchten xauth, können Sie Cygwins bearbeiten /usr/bin/startxwinund die entsprechende Zeile oben in ändern enable_xauth=0.


Es hat bei mir funktioniert, indem ich -listen tcp zum Feld des Bedienfelds von XLaunch hinzugefügt habe, als ich im Startmenü auf XLaunch geklickt habe. Ich konnte die Eigenschaft mit dem Menüelement nicht ändern, um das Befehlszeilenargument zu ändern.
Yu Shen

0

Sie müssen den X-Server mit starten startx. Wenn Sie X Windows nicht installiert haben, führen Sie Cygwin aus setup.exeund wählen Sie alle X Windows-Systeme und einen Fenstermanager aus.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.