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

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

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

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

VcXsrv

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

Установка

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

export DISPLAY=localhost:0.0

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

Я был в состоянии бежать:

sudo apt install ubuntu-desktopsudo apt install yadsudo apt install gedit

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

Когда я хочу попробовать многие из моих скриптов Ubuntu bash в WSL VcXsrv должен быть установлен таким образом zenity и yad для ввода пользователем отображаются диалоговые окна x-windows.

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

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

Я изменил /etc/environment чтобы настроить выпадающие меню графического интерфейса:

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=Yesexport DISPLAY=localhost:0.0
  • /mnt/e/bin это необычный путь, потому что именно там я храню скрипты, используемые как в Windows 10 dual boot WSL, так и в Ubuntu 16.04 dual boot. Большинство пользователей не включили бы это на своем компьютере.

Короткий ответ - вы не можете, так как 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), и я бы ожидал, что некоторые приложения просто не будут работать даже с этой техникой.

У меня был очень положительный опыт работы с VcXsrv на Win 10 Bash в Ubuntu на Windows (Ubuntu 16.04- x86_64 Linux 4.4.0-17074-Microsoft). Я не сосредотачивался на запуске Unity desktop, поскольку это бесполезно и отнимает много ресурсов. Я просто запускал приложения из 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 Package Manager" и "Nautilus" file explorer для 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
  1. С тобой покончено! Теперь просто запустите synaptic, nautilus или firefox из Bash, и они должны загрузиться на рабочий стол Win10. Параметры графического интерфейса, подобные этому, глючат, но работают. Вы можете установить ubuntu-desktop, unity, ccsm, compiz и попытаться убежать Рабочий стол Unity для Ubuntu. Я не пытался установить "Steam", потому что я все еще мучаюсь, пытаясь запустить "Unreal", удачи :)

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

P.S
Ты можешь добавьте VcXsrv в качестве загрузочного файла Win10

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

Хотя вы будете запускать "Steam" под "Unix", оболочка по-прежнему "Windows", которая позволяет запускать "Steam" на "Unix"; …

Подготовка к Tcp:;

В regedit:

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

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

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

Назовите это Частота tcpчастота и нажмите ok.

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

Снова щелкните правой кнопкой мыши на клавише и выберите Новое значение > Dword (32-разрядное).

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

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

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

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

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

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

  • TcpFrequency и установите его на 1, чтобы отключить “нытье” для игр.
  • TCPDelay и установите для него также значение 1, чтобы отключить “ворчание”
  • TcpTicks и установите его на 0

Примечание:

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

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

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

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

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

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


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

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

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

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

Оттуда создайте новое DWORD и назовите его следующим образом Системная отзывчивость установите его десятичное значение равным 00000000 для чистой игры / потоковой передачи.

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

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

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

  • “Приоритет графического процессора” изменяет свои значения на 8 для игр.
  • “Приоритет” установлен на 1 для игр.

Приветствую "неизвестного" (простите, я давно не копировал ваши инструкции) автора этого твика для Windows = Xbox...

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

  • [WSL_Apache_Roolez][1]
  • [Throttling_a_'mm'_:0][2]
  • [У Вас Есть Почта!!!][3]

Microsoft объявила о зеленом свете для графического интерфейса WSL 2:https://devblogs.microsoft.com/commandline/the-windows-subsystem-for-linux-build-2020-summary/#wsl-gui

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

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

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

sudo apt-get update -ysudo apt-get install ubuntu-desktop -ysudo apt-get install xfce4 xorg xrdp -ysudo 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 .xsessionsudo systemctl enable xrdp

Вам понадобится вторая учетная запись в Ubuntu

sudo adduser remotesudo usermod -aG sudo remote

Изменить startwm.sh

cd /etc/xrdpsudo chmod 777 startwm.shvim 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 stopexit

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

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

Установка mate-desktop на Ubuntu это немного по-другому.

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

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

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

Для Дистрибутив debian Пользователь:

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

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

  • откройте консоль ubuntu из Windows 10
  • тип sudo apt install tasksel, нажмите enter
  • тип sudo apt update, нажмите enter
  • тип sudo tasksel install ubuntu-mate-desktop, нажмите enter

Шаг 3: Установите X server в 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: Display mate-графический интерфейс рабочего стола:

  • тип mate-session для Дистрибутив debian пользователь

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

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

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

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

### Setup a D-Bus instance that will be shared by all X-Window appspidof dbus-launch 1> /dev/null || dbus-launch --exit-with-x11 1> /dev/null 2> /dev/null## Exportexport DISPLAY=127.0.0.1:0.0

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

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

Кроме того, я использовал этот учебное пособие, с некоторыми изменениями:

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

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

Я не использую виртуальную машину / двойную загрузку по той же причине, на которую указала Panther; Мне нужна удобная (для меня) среда разработки, а не полноценная гибкая ОС.