12

У меня есть работающая установка 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-сервер? Если нет, то как мне действовать?

2 ответа2

10

Вы должны указать Cygwin/X прослушивать TCP, что по умолчанию не выполняется. Вы делаете это, передавая параметр -listen tcp в XLaunch. Когда вы делаете это, это работает очень хорошо. Я на самом деле предпочитаю 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 , вы можете отредактировать /usr/bin/startxwin , изменив соответствующую строку в верхней части на enable_xauth=0 .

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .