Какой самый простой способ запуска приложений с графическим интерфейсом в подсистеме Windows для Linux с 2018 года?


89

Я искал вокруг, и в настоящее время есть два предложенных метода; установка расширения для подсистемы Windows для Linux и установка XServer.

Я хочу знать, какой метод является наиболее простым (простой в установке и использовании), а какой менее трудоемким.

Я просто хочу Synaptic и CMake. Почему это не может быть встроенной функцией?


1
Мое личное ощущение, что WSL - это шутка! Почему бы просто не загрузить ВМ?
Чарльз Грин

3
@CharlesGreen память ... Я сейчас на довольно старом ноутбуке.
Георгий Ованнисян

Я тоже, но я запускаю Windows 10 на виртуальной машине для одной нужной мне программы, которая работает только в Windows
Чарльз Грин,

1
@CharlesGreen VirtualBox?
Георгий Ованнисян

«Я действительно хочу запустить Steam и, наконец, поиграть в Portal 2 на Linux!» WSL - это не Linux, поэтому никогда этого не произойдет. WSL также не предназначен для игровой платформы. Это платформа для раскрытия возможностей BASH для Windows. Больше ничего. А для запуска steam в WSL вам потребуется не только рабочий стол на WSL Но также STEAM для поддержки WSL. Никогда не случится
Rinzwind

Ответы:


29

Короткий ответ: вы не можете, так как WSL еще не поддерживает эту функцию. WSL не является полной установкой Linux с ядром Linux, он позволяет вам запускать некоторые собственные команды / исполняемые файлы Linux на ядре Windows (Microsoft) и имеет ограничения.

См. Https://github.com/Microsoft/WSL/issues/2356.

Однако вы можете установить сторонний X-сервер, такой как xming и ssh, в свой WSL.

https://virtualizationreview.com/articles/2017/02/08/graphical-programs-on-windows-subsystem-on-linux.aspx

Я не копировал это руководство здесь, так как оно довольно вездесущее (X поверх ssh), и я ожидаю, что некоторые приложения просто не будут работать даже с этой техникой.


Таким образом, без проблем не вариант, тогда? Может быть, кто-нибудь в будущем сделает Synaptic для Windows для работы с WSL ....
Джордж Ованнисян

1
Графические программы на WSL не означают, что вы можете использовать Steam на WSL. Вам понадобится Valve для создания поддержки WSL.
Ринзвинд

7
Имейте в виду, что вам вообще не нужно использовать SSH. Просто установите DISPLAYи все готово (в любом случае для xming и VcXsrv).
dma1324

5
Я хотел бы понизить этот ответ, так как он 1: не совсем точный, и 2: не в духе вопроса - да, вы можете запускать приложения с графическим интерфейсом в wsl с помощью xserver. Оператор не спрашивал о поддерживаемых приложениях. (установить vcxserve или что-то подобное, sudo apt-get установить synaptic после настройки DISPLAY, нет необходимости в ssh) ...
decuser

1
Вместо этого @decuser Upvote лучше ответит: если его нет, напишите один.
Турбьёрн Равн Андерсен

62

VcXsrv

Я решил использовать VcXsrvв WSL (подсистема Windows 10 для Linux). Я рекомендую всем изучить их xming(принятый ответ) и VcXsrv, прежде чем выбирать один или другой для поддержки графического интерфейса пользователя (GUI) в Windows 10 Ubuntu 16.04.

Монтаж

Установка прямо вперед. С 17 марта 2019 года вы можете просто принять значения по умолчанию. Если вы хотите позвонить geditиз Bash Shell / Terminal, вам нужно отредактировать ~/.bashrcи вставить эту строку:

export DISPLAY=localhost:0.0

Что вы можете сделать после установки VcXsrv?

Я смог бежать:

sudo apt install ubuntu-desktop
sudo apt install yad
sudo apt install gedit

... для установки программного обеспечения с графическим интерфейсом. Это позволило мне бежать geditи nautilus. Также я смог установить определенные приложения с графическим интерфейсом через CLI (интерфейс командной строки) с помощью команд aptили apt-get.

Когда я хочу попробовать многие из моих Башей сценариев Ubuntu внутри WSL VcXsrv должны быть установлены таким образом , zenityи yadдиалоговые окон Рентгеновских окон отображаются для ввода данных пользователя.

Как уже отмечали другие, GUI в WSL не идеален, и вы можете ожидать, что потратите время на решение некоторых проблем. Также некоторые программы с графическим интерфейсом просто не будут работать в WSL.

Примечания по настройке

Я изменил /etc/environmentGUI для настройки выпадающего меню:

PATH="/mnt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export LIBGL_ALWAYS_INDIRECT=Yes
export DISPLAY=localhost:0.0
  • /mnt/e/binЭто необычный путь, потому что именно там я храню скрипты, используемые как в Windows 10 с двойной загрузкой, так и в Ubuntu 16.04 с двойной загрузкой. Большинство пользователей не будут включать это на своей машине.

1
@ GeorgeHovhannisian Преимущество для меня в том, что я могу использовать то, с geditчем я знаком из опыта работы с Ubuntu Desktop. Также многие из моих скриптов bash используют zenityили yadдля диалоговых окон x-windows. Эти bash-скрипты не будут работать, если они VcXsrvне установлены.
WinEunuuchs2Unix

6
+1 просто смешно: как я могу тайно преобразовать свою систему Windows в Ubuntu изнутри?
десерт

8
Это было безболезненно: в Windows скачал VcXsrv по предоставленной ссылке. Установил и запустил его. Затем я открыл оболочку Ubuntu и вошел export DISPLAY=:0. Теперь я мог работать xhost, xeyesи gnuplotв Ubuntu (если эти программы уже установлены в Ubuntu WSL).
Даниэль К.

2
@dessert +1 к вашему комментарию. Это смешно, учитывая, что мое имя пользователя означает «Ограничено пользователем Windows, переключенным на Unix». Благодаря WSL я иногда использую Windows 10, потому что я могу запустить Ubuntu внутри нее. Назовите меня WinEunuuchs2Unix2WinSub4Linux? : p
WinEunuuchs2Unix

2
Кроме того, export LIBGL_ALWAYS_INDIRECT=1вы получаете некоторое аппаратное ускорение в приложениях GL поверх X с помощью VcXsrv
Jippers

19

У меня был очень положительный опыт работы с VcXsrv на Win 10 Bash на Ubuntu в Windows (Ubuntu 16.04 Xenial x86_64 Linux 4.4.0-17074-Microsoft). Я не сосредоточился на запуске рабочего стола Unity, поскольку он бесполезен и потребляет много ресурсов. Я просто запускал приложения из bash в режиме графического интерфейса пользователя с рабочего стола Windows10 с помощью XServer.

  1. Установите VcXsrv отсюда на Sourceforge

  2. Запустите приложение VcXsrv напрямую, не запускайте XLaunch. Вы должны увидеть, localhost:0.0 - 0 clientsкогда вы наводите курсор на значок на панели задач Win10

  3. Откройте Ubuntu Bash:

    cd /mnt
    

    (приводит к localhost @ localhost: / mnt $)

    cd .. 
    

    (localhost @ localhost: / $ означает, что эти команды приводят вас к началу жесткого диска, насколько WSL может видеть ...)

    sudo apt-get install dbus synaptic nautilus --install-suggests --show-progress
    

    (это установит «dbus» для создания виртуального соединителя для графического интерфейса, «Менеджер пакетов Synaptic» и файловый менеджер «Nautilus» для unity-desktop

    cd /usr/share/dbus-1 && sudo vi session.conf
    

    (Когда session.confоткрывается в редакторе vi)

    Нажмите, iчтобы войти в режим вставки и добавить

    <!-- <listen>unix:tmpdir=/tmp</listen> || Original Command --> to preserve original rules
    

    чем добавить:

    <listen>tcp:host=localhost,bind=0.0.0.0,port=0</listen>
    <auth>EXTERNAL</auth>
    <auth>DBUS_COOKIE_SHA1</auth>
    <auth>allow_anonymous</auth> 
    

    Нажмите ESC, когда вы закончите редактирование файла и :wqсохраните файл.

    Запустите эти команды и проверьте их вывод:

    $ export DISPLAY=localhost:0
    $ sudo service dbus start
    * Starting system message bus dbus                 [OK]
    $ echo $DISPLAY
    localhost:0
    
  4. Вы сделали! Теперь просто запустите synaptic, nautilus или firefox из Bash, и они должны загрузиться на рабочий стол Win10. Опции GUI, подобные этой, глючат, но работают. Вы можете установить ubuntu-desktop, unity, ccsm, compizи попробуйте запустить Unity Desktop для Ubuntu . Я не пытался установить "Steam", потому что я все еще страдаю, пытаясь запустить "Unreal", Удачи :)

Если кто-то знает, как запустить gnome-terminalXServer вместо XTerm, пожалуйста, поделитесь ...

PS
Вы можете добавить VcXsrv в качестве загрузочного Win10

Чтобы максимально увеличить ваши источники с помощью «Steam», как указано в исходном сообщении, немного настройте Windows для управления сетевыми пакетами (чтобы снизить задержку) и расстановки приоритетов CPU / GPU для создания Win10XBox… :)

Хотя вы будете запускать «Steam» под «Unix», оболочка все еще «Windows», что позволяет запускать «Steam» на «Unix»…

Tcp Prep :;

В regedit:

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces

Здесь вам нужно просмотреть список подразделов, чтобы найти запись сетевого адаптера, которая используется для подключения к Интернету. Если вы используете DHCP, вам нужно найти DhcpIPAdddressзапись (со значениями системных данных НЕ :0.0.0.0), чтобы найти правильный адаптер.

Найдя правильный ключ, щелкните его правой кнопкой мыши и выберите « Создать»> «Значение слова (32-разрядное)» .

Назовите его TcpFrequency и нажмите ok.

Дважды щелкните значение впоследствии и установите его десятичное значение равным 1. (Чтобы восстановить настройку по умолчанию, измените значение на 2 или удалите ключ). Теперь перейдите к следующему ключу: HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ

Снова щелкните правой кнопкой мыши по ключу и выберите « Создать»> «Значение слова (32-разрядное)» .

Назовите новый параметр TcpDelay

Затем дважды щелкните по нему и измените его десятичное значение на 1. (Чтобы восстановить ключ в более поздний момент времени, измените его на 0 или удалите ключ)

Алгоритм Нэгла

Алгоритм Nagle объединяет несколько небольших пакетов в один большой пакет для более эффективной передачи. Это предназначено для повышения пропускной способности передачи данных. Отключение nagling может помочь уменьшить задержку / пинг в некоторых играх. Алгоритм Nagle включен в Windows по умолчанию. Чтобы реализовать эту настройку, измените следующие ключи реестра.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{NIC-id}

Для {NIC-id}, ищите тот с вашим IP-адресом в списке; под этим {NIC-id}ключом создайте следующее значение DWORD:

  • TcpFrequency и установите его равным 1, чтобы отключить «ворчание» для игр.
  • TCPDelay и установите его также в 1, чтобы отключить "Nagling"
  • TcpTicks и установите его в 0

Примечание:

В некоторых сообщениях говорится, что твики уменьшали задержку при игре в Dota 2 и League of Legends, но у некоторых это не работает. Я попробовал это, и моя задержка улучшилась с 110 до 90 мс (SEA Server) при игре в Dota 2.

Индекс регулирования сети

В Windows реализован механизм регулирования сети, идея которого заключается в том, что обработка сетевых пакетов может быть ресурсоемкой задачей. Для достижения максимальной пропускной способности выгодно отключить такое регулирование.

Чтобы реализовать эту настройку, запустите regedit и измените реестр

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile. 

В SystemProfile создайте значение DWORD и присвойте ему имя NetworkThrottlingIndex, затем установите шестнадцатеричное значение для ffffffff для игр и максимальной пропускной способности: ffffffff полностью отключает регулирование.


Отзывчивость системной игры (Не уверен насчёт этого :)

Потоковая передача мультимедиа и некоторые игры, использующие службу «Планировщик мультимедийных классов» (MMCSS), могут использовать только до 80% ЦП. Служба «Планировщик мультимедийных классов» (MMCSS) обеспечивает приоритетный доступ к ресурсам ЦП, не отказывая в ресурсах ЦП фоновым приложениям с более низким приоритетом.

Для реализации этой настройки запустите regedit и измените раздел реестра.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile. 

Оттуда создайте новый DWORD и назовите его SystemResponsiveness, установите его десятичное значение в 00000000 для чистого игрового / потокового видео.

В том же кусте Реестра, что и вышеуказанная настройка, вы также можете изменить приоритет Игр. Чтобы реализовать эту настройку, перейдите к

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games

и измените следующие значения реестра:

  • «Приоритет GPU» меняет свои значения на 8 для игр.
  • «Приоритет» установлен на 1 для игр.

Все ура за "неизвестно" (простите, я был некоторое время, так как я скопировал ваши указания), автор этой настройки Windows = Xbox ...

PPS: Если XServer завершается неудачно с тем, что вы хотели бы сделать, попробуйте найти обходной путь с помощью Docker.


6-5-7; : 5-6-7 ...
Тенедас

Спасибо за очень подробный ответ. В противном случае, благодаря тому, кто предложил редактирование, я не могу поверить, что люди на самом деле предлагают решения для запуска Steam. С другой стороны, люди все еще продолжают предлагать настольные компьютеры, которые я до сих пор не знаю, какой будет польза от этого, лично мне даже не нужен файловый менеджер, не говоря уже о полностью гибком рабочем столе.
Джордж Ованнисян

Я установил Xming на Windows, затем использовал все шаги из раздела 3. Здесь (выше) - установите dbus (нет необходимости в synaptic или nautilus, но nautilus - хорошая проверка), отредактируйте файл session.conf и запустите dbus оказание услуг. Затем Nautilus успешно запускается с несколькими сообщениями об ошибках.
MikeW

Что вы подразумеваете под «Запустить приложение VcXsrv напрямую» - как именно это сделать?
Эрель Сегал-Халеви

Поменяйте <auth>allow_anonymous</auth>на <auth>ANONYMOUS</auth>, тогда service dbus restartи gnome-terminalдолжно работать
ZAB

9

Хотя полноценная среда рабочего стола с графическим интерфейсом не «официально» поддерживается Microsoft, она может работать.

Включение или отключение функций Windows.
Включение подсистемы Windows для Linux.
Перезагрузка компьютера.
Запуск Microsoft Store.
Поиск Ubuntu.
Выберите Ubuntu 18.04 в разделе «Приложения».
Нажмите «Get
Launch Ubuntu» и дождитесь установки.
Установите имя пользователя и пароль.

Запустите следующие команды:

sudo apt-get update -y
sudo apt-get install ubuntu-desktop -y
sudo apt-get install xfce4 xorg xrdp -y
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini

Создать и изменить .xsession

cd /home/user/
sudo vim .xsession

Добавить текст:

gnome-session --session=ubuntu-2d

Сохранить и выйти из vi

sudo chmod 755 .xsession
sudo systemctl enable xrdp

Вам понадобится второй аккаунт в Ubuntu

sudo adduser remote
sudo usermod -aG sudo remote

Изменить startwm.sh

cd /etc/xrdp
sudo chmod 777 startwm.sh
vim startwm.sh

Закомментируйте две нижние строки

#test -x /etc/X11/Xsession && exec /etc/X11/Xsession
#exec /bin/sh /etc/X11/Xsession

Добавить текст:

startxfce4

Сохранить и выйти из vi

exit

В Windows перезапустите Ubuntu и запустите:

sudo /etc/init.d/xrdp start

В Windows запустите mstsc.exe
Компьютер: 127.0.0.1:3390
Оставьте имя пользователя пустым
Подключиться

Сессия: Xorg
имя пользователя: удаленный
пароль: пароль

Наслаждайтесь XFCE!

Когда закончите, закройте соединение с удаленным рабочим столом.
Вернитесь в командную строку Ubuntu.

sudo /etc/init.d/xrdp stop
exit

1
Это работает Я использовал Ubuntu 16. У меня не было Ubuntu с графическим интерфейсом. Xorg недоступен в списке
xrdp

Я продолжаю получать следующее сообщение об ошибке - «сбой входа в систему для отображения 0». Мысли? Почему xrdp не позволит мне войти?
J-Dizzle

2

Так как вы хотите, чтобы это было просто ... В Магазине Microsoft есть приложение под названием x410 . Это в основном сервер Cygwin X11 без использования самого Cygwin. После установки - это нулевой конфиг - вы можете запускать приложения WSL X11! (или даже целые рабочие столы). Возможно, вы захотите вставить следующие строки в ваш .bashrc (из вашей учетной записи пользователя WSL), чтобы вы могли запускать приложения из вашего терминала bash.

### Setup a D-Bus instance that will be shared by all X-Window apps
pidof dbus-launch 1> /dev/null || dbus-launch --exit-with-x11 1> /dev/null 2> 
/dev/null

## Export
export DISPLAY=127.0.0.1:0.0

Я купил x410 на бальзаме примерно за 5 евро. Так что, если это слишком много, возможно, подождите продажи!


2

Если вы хотите легко получить готовое решение, используйте MobaXTerm . Это отличный эмулятор многопоточных терминалов с прямой поддержкой WSL и встроенным оптимизированным X-сервером. Я использую синаптику все время на Мобе. Даже RStudio.


1

Я выбрал ответ Пантеры не только потому, что он единственный, но и потому, что это правильный ответ; нет простого (простого) способа запуска приложений с графическим интерфейсом.

Также я использовал этот урок с некоторыми изменениями:

  1. Я не установил xfce, потому что я не знаю, зачем мне настольный компьютер.
  2. Выберите Multiple Windowsв XLaunch(Нет DE, следовательно , нет необходимости в течение одного гигантского окна)
  3. Нет необходимости исправлять MKDIR и нет необходимости в отдельном терминале.

Какие графические приложения я установил? Только Synaptic и CMake, так как я действительно не могу думать ни о чем другом, что мне понадобится на wsl.

Я не делаю VM / Dual Boot, по той же причине, на которую указал Пантера; Мне нужна удобная (для меня) среда разработки, а не полнофункциональная ОС.


vagrantup.com/docs/other/wsl.html - vagrant - отличный инструмент для быстрого ускорения разработки. Похоже, он поддерживает WSL. Хотя я еще не пробовал.
TamusJRoyce

1

Основываясь на моих исследованиях, wsl изначально не был предназначен для пользователей графического интерфейса. Тем не менее, мы можем установить X-сервер от третьего лица для отображения графического интерфейса. Я проверил, что VcXsrv с некоторыми настройками может использоваться для отображения рабочего стола Debian Linux.

Я думаю, что мой подход работает гладко для отображения рабочего стола (GUI) в подсистеме Windows Linux Debian. Я сделал видео о том, как установить и отобразить mate-desktop (GUI) на wsl Debian с нуля. Ссылка: https://youtu.be/QjogEWudpaM

Установка рабочего стола mate на Ubuntu немного отличается.

Шаг 1 : установите wsl

  • Откройте PowerShell от имени администратора и введитеEnable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Установите «Debian» или «Ubuntu» из магазина Microsoft.

Шаг 2 : установите графический интерфейс пользователя, например, рабочий стол mate.

Для пользователя Debian :

  • Откройте консоль Linux в Windows 10 и установите mate-desktop, набрав:, sudo apt-get updateнажмите ввод.
  • После завершения обновления введите sudo apt install task-mate-desktop, нажмите Enter.

ИЛИ для пользователя Ubuntu :

  • открыть консоль Ubuntu из Windows 10
  • введите sudo apt install tasksel, нажмите ввод
  • введите sudo apt update, нажмите ввод
  • введите sudo tasksel install ubuntu-mate-desktop, нажмите ввод

Шаг 3. Установите X-сервер в Windows 10. Я использовал сервер с открытым исходным кодом VcXsrv. Его можно скачать с https://sourceforge.net/projects/vcxsrv/ .
После завершения установки:

  • открыть XLauch в windows 10

  • выполнить следующую настройку:

    • Выбрать: "One large window"
    • Выбрать Display number: 0
    • щелчок next
    • Выбрать Start no client
    • щелчок next
    • щелчок finish

Шаг 4 : настройка в консоли Linux:

  • тип export DISPLAY=:0

  • тип export LIBGL_ALWAYS_INDIRECT=1(возможно, это похвалы не требуется)

Шаг 5 : Показать графический интерфейс рабочего стола:

  • тип mate-sessionдля пользователя Debian

  • введите mate-sessionили lightdm-sessionдля пользователя Ubuntu

Если вы запутались в моем описании, вы можете посмотреть мои видеоролики на YouTube. Установить GUI (рабочий стол mate) в подсистему Microsoft Windows Linux .


-1
  • установите Fedora в VirtualBox на вашем компьютере под управлением Windows с сетью NAT
  • в WSL sudo service ssh start
  • от Федоры беги ssh -Y 10.0.2.2

Обычно хост гостя VirtualBox может быть достигнут в 10.0.2.2

Теперь вы можете использовать любую программу WSL X на рабочем столе Fedora, даже с Windows.


Теперь это интересно. Я сам не большой поклонник Fedora. Можно ли сделать то же самое с Arch?
Джордж Ованнисян

Полагаю так. X-сервер доступен в Fedora через ssh по умолчанию, возможно, вам придется изменить некоторые настройки sshd в Arch.
Weberjn
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.