Який найпростіший спосіб запустити програми GUI у підсистемі Windows для Linux станом на 2018 рік?


87

Я шукав навколо, і на даний момент пропонуються два методи; встановлення удосконалення для підсистеми Windows для Linux та встановлення XServer.

Я хочу знати, який метод є найпростішим (простий у встановленні І у використанні), а який - менш важкий для пам'яті.

Я просто хочу Synaptic і CMake. Чому це не може бути вбудованою функцією?


1
Моє особисте відчуття, що WSL - це жарт! Чому б просто не завантажувати VM?
Чарльз Грін

3
Пам'ять @CharlesGreen ... Зараз я переживаю досить старий ноутбук.
Георгій Ованеннісян

Так і я, але я запускаю Windows 10 у віртуальній машині для однієї потрібної мені програми, яка працює лише в Windows
Чарльз Грін,

1
@CharlesGreen VirtualBox?
Джордж Ованеннісян

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

Відповіді:


28

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

Див. Https://github.com/Microsoft/WSL/isissue/2356

Однак можна встановити сторонній сервер X, наприклад xming та ssh, на свій WSL.

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

Я не копіював цей підручник сюди, оскільки він досить всюдисущий (X over ssh), і я б очікував, що деякі програми просто не працюватимуть навіть з цією методикою.


Тож без проблем - це не варіант? Можливо, хтось змусить Synaptic для Windows працювати з WSL в майбутньому ....
Джордж Ованеннісян

1
Графічні програми на WSL не означають, що ви можете використовувати Steam on WSL. Вам знадобиться Valve, щоб створити підтримку WSL.
Rinzwind

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

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

1
@decuser Upvote замість кращих відповідей: Якщо такої немає, напишіть її.
Thorbjørn Ravn Andersen

61

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-desktop
sudo apt install yad
sudo apt install gedit

... встановити програмне забезпечення для графічного інтерфейсу GUI. Це тоді дозволило мені бігати geditі nautilus. Крім того, я був тоді в стані встановити конкретні додатки з графічним інтерфейсом через CLI (інтерфейс командного рядка) , використовуючи aptабо apt-getкоманди.

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

Як зазначають інші, GUI в межах 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=Yes
export DISPLAY=localhost:0.0
  • /mnt/e/binце незвичний шлях, тому що саме там я зберігаю скрипти, які використовуються в обох WSL з подвійним завантаженням 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 в режимі GUI з робочого столу 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" для створення віртуального роз'єму для GUI, "Synaptic Package Manager" та "Nautilus" Explorer Explorer для об'єднання-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. Варіанти графічного інтерфейсу, подібні до цього, є баггі, але функціональні. Ви можете встановити ubuntu-desktop, unity, ccsm, compizі спробуйте запустити Unity Desktop для Ubuntu . Я не намагався встановити "Пар", тому що я все ще страждаю, намагаюся запустити "Нереально", удачі :)

Якщо хтось знає, як запустити gnome-terminalXServer замість XTerm, будь ласка, поділіться ...

PS
Ви можете додати VcXsrv як завантажувальний файл Win10

Щоб отримати максимум джерел за допомогою "Steam", як зазначено в оригінальній публікації, налаштуйте свою систему Windows на управління мережевим пакетом (на нижчу затримку) та пріоритетність процесора / 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 об'єднує кілька невеликих пакетів в один, більший пакет для більш ефективної передачі. Це розроблено для підвищення ефективності пропускної здатності передачі даних. Якщо вимкнути «нагінг», можна допомогти зменшити затримку / пінг у деяких іграх. Алгоритм 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 і назначте його SystemRespoinityness, встановіть його десяткове значення 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 (немає фактичної потреби в синаптичному або nautilus, але nautilus - це хороша перевірка), внесіть редагування session.conf і запустіть dbus сервіс. Потім Nautilus успішно починається з кількох повідомлень про помилки.
MikeW

Що ви маєте на увазі під «Запустити додаток VcXsrv безпосередньо» - як саме це зробити?
Ерел Сегал-Халеві

Перейдіть <auth>allow_anonymous</auth>на <auth>ANONYMOUS</auth>, тоді service dbus restartі gnome-terminalповинні працювати
ЗАБ

9

Навіть незважаючи на те, що повне середовище GUI на робочому столі не підтримується офіційно «Microsoft», воно може працювати.

Увімкнення та вимкнення функцій Windows
Увімкнення підсистеми Windows для Linux
Перезавантаження комп'ютера
Запуск комп’ютера Microsoft
Search Пошук Ubuntu
Виберіть Ubuntu 18.04 у розділі Програми
Клацніть Отримати
запуск 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
Залиште ім'я порожній
Connect

Сесія:
Ім'я користувача 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 на Salve приблизно за 5 євро. Так що якщо це занадто багато, можливо, зачекайте на продаж!


2

Якщо ви хочете без проблем зняти рішення на полиці, використовуйте MobaXTerm . Це чудовий багатоядерний емулятор терміналу з прямою підтримкою WSL та має вбудований оптимізований X-сервер. Я весь час використовую синаптик на Мобі. Навіть RStudio.


1

Я вибрав відповідь Пантери не лише тому, що вона єдина, але й тому, що це правильна відповідь; не існує безпроблемного (прямого) способу запустити програми gui.

Також я використав цей підручник із кількома змінами:

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

Які програми gui я встановив? Тільки Synaptic і CMake, оскільки я дійсно не можу придумати нічого іншого, що мені знадобиться на wsl.

Я не роблю VM / Dual Boot з тієї самої причини, на яку зазначив Пантер; Мені потрібна зручна (для мене) програма для розробників, а не повна флеш-операційна система.


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

1

На основі мого дослідження, wsl спочатку не був розроблений для користувачів GUI. Однак ми можемо встановити X-сервер від третьої сторони для відображення графічного інтерфейсу. Я перевірив, що VcXsrv з певною настройкою може використовуватися для відображення Debian Linux-робочого столу.

Я думаю, що мій підхід працює бездоганно, щоб відображати мате-робочий стіл (GUI) у підсистемі Windows Linux Debian. Я зробив відео про те , як встановити та відображення мат-робочий стіл (GUI) на WsL Debian з нуля. Посилання: https://youtu.be/QjogEWudpaM

Установка мате-робочого столу на Ubuntu дещо відрізняється.

Крок 1 : встановіть wsl

  • Відкрийте PowerShell як адміністратор та введітьEnable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Встановіть "Debian" або "Ubuntu" з магазину Microsoft.

Крок 2. Встановіть графічний інтерфейс користувача, наприклад, робочий стіл.

Для користувача Debian :

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

АБО для користувача Ubuntu :

  • відкрити консоль ubuntu з Windows 10
  • тип sudo apt install tasksel, натисніть клавішу Enter
  • тип sudo apt update, натисніть клавішу Enter
  • тип sudo tasksel install ubuntu-mate-desktop, натисніть клавішу Enter

Крок 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 (помічник робочого столу) для Microsoft Windows Subsystem Linux .


-1

Зазвичай господаря гостя VirtualBox можна отримати в 10.0.2.2

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


Тепер це цікаво. Я сам не є величезним шанувальником федира. Чи можна те ж саме зробити з Arch?
Джордж Ованеннісян

Думаю так. Сервер X доступний у Fedora через ssh за замовчуванням, можливо, доведеться змінити деякі параметри sshd в Arch.
weberjn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.