Cygwin / X i Windows Subsystem dla Linux


14

Mam działającą instalację Cygwin na moim urządzeniu z systemem Windows 10 (w razie potrzeby Surface 3), w tym działającym środowisku okienkowym Xorg. Właśnie zacząłem eksperymentować z podsystemem Windows dla systemu Linux. Wygląda na to, że radą do uruchamiania aplikacji GUI z WSL jest instalacja innego serwera X. Zwykle zaleca się Xming, ale nie widziałem żadnych sugestii, że Cygwin nie powinien działać.

Jednak prosty sposób zawodzi:

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

Podejrzewałem, że może to być problem z siecią

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

... ale ssh na zdalnej maszynie działa dobrze i najwyraźniej Xservers przestał nasłuchiwać na porcie 6000 od czasu ostatniego debugowania.

Próbowałem uruchomić cygwin $ xhost +localhost, ale odkryłem, że xhostnie jest tam obecnie zainstalowany. Co może być następną rzeczą, aby spróbować, czy może być dzikie gęsi pościg --- xhost(lub przynajmniej, nagi xhost +) był przede wszystkim zniechęcać ostatni raz debugowane serwera X.

Czy jest jakaś podstawowa wada uniemożliwiająca WSL korzystanie z serwera Cygwin X? Jeśli nie, jak mam postępować?


1
Ponieważ używasz urządzenia o wysokiej DPI (Surface 3), ta dodatkowa sztuczka może ci się przydać. Możesz zwiększyć rozmiar czcionki, rozmiar okna itp., Pokazując zmieniając, co CygwinX uważa za DPI ekranu. Edytuj /etc/X11/Xresourcesi zmień wartość Xft.dpidomyślną z 96. Twój wyświetlacz powinien mieć 214 DPI, więc tekst musi wyglądać dość cienko przez CygwinX. Niezależnie od tego możesz dostosować tę wartość DPI, aby zmienić skalowanie według własnych upodobań. (Po prostu uruchom ponownie CygwinX między zmianami.)
Chris

Odpowiedzi:


15

Musisz powiedzieć Cygwin / X, aby nasłuchiwał TCP, czego domyślnie nie robi. Robisz to, przekazując opcję -listen tcpdo XLaunch. Kiedy to zrobisz, działa naprawdę dobrze. Właściwie wolę Cygwin / X od Xming. Więcej szczegółów w instrukcji .


Znajdź skrót, którego używasz do uruchomienia Cygwin / X. (Dostępne są skróty uruchamiania dla poszczególnych użytkowników C:\Users\<you>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, a dostępne są skróty uruchamiania dla całego systemu C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp. Otwórz „Właściwości” tego łącza i zmień cel z

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

do

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

Aby uzyskać xauthwsparcie, powinieneś skopiować ~/.Xauthorityz katalogu domowego Cygwina do katalogu domowego WSL.

Lub jeśli chcesz wyłączyć xauth, możesz edytować Cygwina /usr/bin/startxwin, zmieniając odpowiednią linię u góry na enable_xauth=0.


Działa mi to, dodając -listen tcp do pola panelu XLauncha, kiedy kliknąłem XLauncha w menu Start. Nie mogłem zmodyfikować właściwości za pomocą pozycji menu, aby zmienić argument wiersza poleceń.
Yu Shen

0

Musisz uruchomić serwer X za pomocą startx. Jeśli nie masz zainstalowanego systemu X Windows, uruchom Cygwin setup.exei wybierz wszystkie systemy X Windows oraz menedżera okien.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.