Cygwin / X dan Subsistem Windows untuk Linux

14

Saya memiliki instalasi Cygwin yang berfungsi pada perangkat Windows 10 saya (Permukaan 3, dalam hal yang penting), termasuk lingkungan windowing Xorg yang berfungsi. Saya baru saja mulai bereksperimen dengan Subsistem Windows untuk Linux, juga. Sepertinya saran untuk menjalankan aplikasi GUI dari WSL adalah menginstal X server lain. Biasanya Xming direkomendasikan, tetapi saya belum melihat saran bahwa Cygwin seharusnya tidak bekerja.

Namun, cara sederhana gagal:

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

Saya menduga itu mungkin masalah jaringan, karena

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

... tetapi ssh ke mesin jarak jauh berfungsi dengan baik, dan tampaknya Xservers telah berhenti mendengarkan pada port 6000 sejak terakhir kali saya men-debug satu.

Saya mencoba menjalankan cygwin $ xhost +localhost, hanya untuk menemukan bahwa xhostsaat ini tidak diinstal di sana. Yang mungkin hal berikutnya untuk mencoba, atau mungkin sia-sia --- xhost(atau setidaknya, telanjang xhost +) adalah sebagian besar berkecil terakhir kali aku debug server X.

Apakah ada beberapa kelemahan mendasar yang mencegah WSL menggunakan server Cygwin X? Jika tidak, bagaimana saya harus melanjutkan?

rampok
sumber
1
Karena Anda menggunakan perangkat DPI tinggi (Surface 3), trik tambahan ini mungkin berguna bagi Anda. Anda dapat meningkatkan ukuran font, ukuran jendela, dll, yang ditunjukkan dengan mengubah pendapat CygwinX tentang DPI layar. Edit /etc/X11/Xresourcesdan ubah Xft.dpidefault dari 96. Tampilan Anda harus 214 DPI, jadi teks harus terlihat sangat kecil melalui CygwinX. Apapun, Anda dapat mengubah nilai DPI untuk mengubah penskalaan sesuai keinginan Anda. (Mulai ulang CygwinX di antara perubahan.)
Chris

Jawaban:

15

Anda perlu memberi tahu Cygwin / X untuk mendengarkan TCP, yang tidak dilakukan secara default. Anda melakukan ini dengan meneruskan opsi -listen tcpke XLaunch. Ketika Anda melakukan ini, itu berfungsi dengan sangat baik. Sebenarnya saya lebih suka Cygwin / X daripada Xming. Lebih detail dalam manual .


Temukan pintasan yang Anda gunakan untuk memulai Cygwin / X. (Pintasan permulaan per pengguna ada C:\Users\<you>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, sementara pintasan startup di seluruh sistem ada C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp. Buka "Properti" tautan ini, dan ubah target dari

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

untuk

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

Untuk xauthdukungan, Anda harus menyalin ~/.Xauthoritydari direktori home Cygwin Anda ke direktori home WSL Anda.

Atau jika Anda ingin menonaktifkan xauth, Anda dapat mengedit Cygwin /usr/bin/startxwin, mengubah baris yang sesuai di bagian atas enable_xauth=0.

Markus Hartikainen
sumber
Ini berhasil bagi saya dengan menambahkan -daftar tcp ke bidang panel XLaunch ketika saya mengklik XLaunch di menu Mulai. Saya tidak bisa memodifikasi properti dengan item menu untuk mengubah argumen baris perintah.
Yu Shen
0

Anda harus memulai X server dengan startx. Jika Anda tidak menginstal X Windows, jalankan Cygwin setup.exedan pilih semua sistem X Windows dan window manager.

Chloe
sumber