Cygwin / X и Windows Подсистема для Linux

14

У меня есть работающая установка Cygwin на моем устройстве Windows 10 (в случае необходимости, на Surface 3), включая работающую оконную среду Xorg. Я только начал экспериментировать с подсистемой Windows для Linux. Похоже, что совет для запуска приложений с графическим интерфейсом из WSL - установить еще один X-сервер. Обычно рекомендуется Xming, но я не видел никаких предположений, что Cygwin не должен работать.

Однако простой способ не удался:

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

Я подозревал, что это может быть проблема с сетью, из-за

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

... но ssh на удаленной машине работает нормально, и, очевидно, Xservers прекратил прослушивание порта 6000, так как в последний раз я отлаживал один.

Я попытался запустить cygwin $ xhost +localhost, только чтобы обнаружить, что xhostв данный момент там не установлено. Что может быть следующая вещь , чтобы попробовать, или может быть дикий гусь погоня --- xhost(или , по крайней мере, голый xhost +) был в основном не рекомендуется в последний раз я отлаженный сервер X.

Есть ли какой-то фундаментальный недостаток, мешающий WSL использовать Cygwin X-сервер? Если нет, то как мне действовать?

грабить
источник
1
Поскольку вы используете устройство с высоким DPI (Surface 3), этот дополнительный прием может быть полезен для вас. Вы можете увеличить размер шрифта, размер окна и т. Д., Показав это, изменив представление CygwinX о разрешении экрана. Отредактируйте /etc/X11/Xresourcesи измените Xft.dpiзначение по умолчанию с 96. Ваше отображение должно быть 214 DPI, поэтому текст должен выглядеть довольно маленьким через CygwinX. Независимо от этого, вы можете настроить это значение DPI, чтобы изменить масштабирование по своему вкусу. (Просто перезапустите CygwinX между изменениями.)
Chris

Ответы:

15

Вы должны указать Cygwin / X прослушивать TCP, что по умолчанию не выполняется. Вы делаете это, передавая опцию -listen tcpXLaunch. Когда вы делаете это, это работает очень хорошо. Я на самом деле предпочитаю Cygwin / X Xming. Более подробная информация в руководстве .


Найдите ярлык, который вы используете для запуска Cygwin / X. (Пользовательские ярлыки запуска включены C:\Users\<you>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup, а общесистемные ярлыки запуска находятся C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp. Откройте «Свойства» этой ссылки и измените цель с

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"

Для получения xauthподдержки вам следует скопировать ~/.Xauthorityиз домашнего каталога вашего Cygwin домашний каталог вашего WSL.

Или, если вы хотите отключить xauth, вы можете отредактировать Cygwin's /usr/bin/startxwin, изменив соответствующую строку в верхней части на enable_xauth=0.

Маркус Хартикайнен
источник
Это сработало для меня, добавив -listen tcp в поле панели XLaunch, когда я щелкнул XLaunch в меню «Пуск». Я не мог изменить свойство с помощью пункта меню, чтобы изменить аргумент командной строки.
Ю Шен
0

Вы должны запустить X-сервер с startx. Если у вас не установлена ​​X Windows, запустите Cygwin setup.exeи выберите все системы X Windows и менеджер окон.

Хлоя
источник