Qual è il modo più semplice per eseguire app GUI sul sottosistema Windows per Linux a partire dal 2018?


89

Ho cercato in giro, e attualmente ci sono due metodi suggeriti; l'installazione di un miglioramento per il sottosistema Windows per Linux e l'installazione di un XServer.

Voglio sapere quale metodo è il più senza problemi (facile da installare E da usare) e quale è meno pesante di memoria.

Voglio solo Synaptic e CMake. Perché non potrebbe essere una funzionalità integrata?


1
La mia sensazione personale è che WSL sia uno scherzo! Perché non caricare semplicemente una macchina virtuale?
Charles Green

3
@CharlesGreen memory ... Sono attualmente su un laptop piuttosto vecchio.
George Hovhannisian,

Anch'io, ma eseguo Windows 10 in una macchina virtuale per l'unico programma di cui ho bisogno che funziona solo in Windows
Charles Green

1
@CharlesGreen VirtualBox?
George Hovhannisian,

"Voglio davvero far girare Steam e finalmente giocare a Portal 2 su Linux! ' WSL non è Linux, quindi non accadrà mai. WSL non è nemmeno inteso come una piattaforma di giochi, è una piattaforma per liberare la potenza di BASH su Windows. Nient'altro. E per far funzionare Steam su WSL non è necessario solo un desktop su WSL Ma anche STEAM per supportare WSL. Non succederà mai.
Rinzwind

Risposte:


29

La risposta breve è che non è possibile in quanto WSL non supporta ancora questa funzione. WSL non è un'installazione Linux completa con un kernel Linux, consente di eseguire alcuni comandi / binari Linux nativi su un kernel Windows (Microsoft) e presenta delle limitazioni.

Vedi https://github.com/Microsoft/WSL/issues/2356

Tuttavia, è possibile installare un server X di terze parti, come xming e ssh nel WSL.

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

Non ho copiato questo tutorial qui perché è abbastanza onnipresente (X su ssh) e mi aspetterei che alcune app semplicemente non funzionino nemmeno con questa tecnica.


Quindi, senza problemi non è un'opzione, allora? Forse qualcuno farà in modo che Synaptic per Windows funzioni con WSL in futuro ....
George Hovhannisian,

1
I programmi grafici su WSL non significano che puoi usare Steam su WSL. Avresti bisogno di Valve per creare supporto per WSL.
Rinzwind

7
Tieni presente che non è necessario utilizzare SSH. Basta impostare DISPLAYe sei a posto (per xming e VcXsrv comunque).
dma1324,

5
Vorrei sottovalutare questa risposta in quanto è 1: non completamente accurato e 2: non nello spirito della domanda - sì, puoi eseguire app gui in wsl con un xserver. L'op non ha chiesto informazioni sulle app supportate. (installa vcxserve o qualcosa di simile, sudo apt-get install synaptic dopo aver impostato DISPLAY, non c'è bisogno di ssh) ...
decuser

1
@decuser Migliora invece le risposte migliori: se non ce n'è una, scrivine una.
Thorbjørn Ravn Andersen,

62

VcXsrv

Ho scelto di utilizzare VcXsrvin WSL (sottosistema Windows 10 per Linux). Consiglio a tutti di fare le loro ricerche tra xming(la risposta accettata) e VcXsrv prima di selezionare l'una o l'altra per il supporto della GUI (Graphical User Interface) in Windows 10 Ubuntu 16.04.

Installazione

L'installazione è semplice. A partire dal 17 marzo 2019 puoi semplicemente accettare le impostazioni predefinite. Se vuoi chiamare geditdall'interno di Bash Shell / Terminal devi modificare ~/.bashrce inserire questa linea:

export DISPLAY=localhost:0.0

Cosa si può fare dopo l'installazione di VcXsrv?

Sono stato in grado di eseguire:

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

... per installare il software desktop GUI. Questo poi mi ha permesso di correre gedite nautilus. Inoltre sono stato in grado di installare specifiche applicazioni della GUI tramite l'interfaccia della riga di comando (Command Line Interface) utilizzando apto apt-getcomandi.

Quando voglio provare molti dei miei script bash di Ubuntu in WSL VcXsrv deve essere installato in modo zenityche yadvengano visualizzate le finestre di dialogo di x-windows per l'input dell'utente.

Come altri hanno notato, la GUI in WSL non è perfetta e ci si può aspettare di dedicare del tempo alla risoluzione di alcuni problemi. Inoltre, alcuni software GUI semplicemente non funzionano in WSL.

Note di installazione

Ho modificato /etc/environmentper modificare i menu a discesa della GUI:

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è un percorso insolito perché è dove immagazzino gli script utilizzati sia in Windows 10 dual boot WSL che in Ubuntu 16.04 dual boot. La maggior parte degli utenti non lo includerebbe nel proprio computer.

1
@GeorgeHovhannisian Il vantaggio per me è che posso usare ciò geditche ho familiarità con l'esperienza Ubuntu Desktop. Inoltre molti dei miei script bash usano zenityo yadper le finestre di dialogo di x-windows. Questi script bash non verranno eseguiti se non VcXsrvsono installati.
WinEunuuchs2Unix

6
+1 semplicemente esilarante: come posso convertire segretamente il mio sistema Windows in Ubuntu dall'interno?
dessert,

8
Questo è stato indolore: su Windows, scaricato VcXsrv utilizzando il collegamento fornito. Installato e lanciato. Quindi ho aperto una shell di Ubuntu e sono entrato export DISPLAY=:0. Ora potrei eseguire xhost, xeyese gnuplotin Ubuntu (purché questi programmi siano già installati in Ubuntu WSL).
Daniel K.

2
@dessert +1 al tuo commento. È doppiamente divertente considerando che il mio nome utente significa "Limitato dall'utente Windows passato a Unix". Grazie a WSL uso Windows 10 di tanto in tanto ora perché posso eseguire Ubuntu al suo interno. Chiamami WinEunuuchs2Unix2WinSub4Linux? : p
WinEunuuchs2Unix

2
inoltre export LIBGL_ALWAYS_INDIRECT=1ottieni un'accelerazione hardware nelle app GL su X usando VcXsrv
Jippers

19

Ho avuto un'esperienza molto positiva con VcXsrv su Win 10 Bash su Ubuntu su Windows (Ubuntu 16.04 Xenial x86_64 Linux 4.4.0-17074-Microsoft). Non mi sono concentrato sull'esecuzione del desktop Unity perché è inutile e richiede risorse. Ho semplicemente eseguito app da bash in modalità GUI dal desktop di Windows 10 usando XServer.

  1. Installa VcXsrv da qui su Sourceforge

  2. Esegui direttamente l'app VcXsrv, non avviare XLaunch. Dovresti vedere localhost:0.0 - 0 clientsquando passi con il mouse sull'icona sulla barra delle applicazioni di Win10

  3. Apri Ubuntu Bash:

    cd /mnt
    

    (risultati in localhost @ localhost: / mnt $)

    cd .. 
    

    (localhost @ localhost: / $ significa che questo comando ti porta all'inizio del disco rigido per quanto WSL può vedere ...)

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

    (questo installerà "dbus" per creare un connettore virtuale per GUI, "Synaptic Package Manager" e "Nautilus" esploratore di file per unity-desktop

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

    (Quando si session.confapre nell'editor vi)

    Premere iper accedere alla modalità di inserimento e aggiungere

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

    di aggiungere:

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

    Premere ESC al termine della modifica del file e :wqper salvare il file.

    Esegui questi comandi e controlla il loro output:

    $ export DISPLAY=localhost:0
    $ sudo service dbus start
    * Starting system message bus dbus                 [OK]
    $ echo $DISPLAY
    localhost:0
    
  4. Hai fatto! Ora esegui synaptic, nautilus o firefox da Bash e dovrebbero caricarsi sul desktop Win10. Le opzioni della GUI come questa sono buggy ma operative. È possibile installare ubuntu-desktop, unity, ccsm, compize tenta di eseguire l'Unità desktop per Ubuntu . Non ho provato a impostare "Steam" perché sto ancora soffrendo il tentativo di eseguire "Unreal", buona fortuna :)

Se qualcuno sa come eseguire gnome-terminalXServer invece di XTerm, ti preghiamo di condividere ...

PS
È possibile aggiungere VcXsrv come avvio Win10

Per massimizzare le tue fonti con "Steam" come specificato nel post originale, ottimizza un po 'Windows per la gestione dei pacchetti di rete (a bassa latenza) e la priorità della CPU / GPU per creare un Win10XBox ... :)

Sebbene eseguirai "Steam" sotto "Unix", la shell è ancora "Windows" che ti consente di avviare "Steam" su "Unix" ...

Tcp Prep :;

In regedit:

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

Qui è necessario scorrere l'elenco delle sottochiavi per individuare la voce della scheda di rete utilizzata per connettersi a Internet. Se si utilizza DHCP, è necessario cercare la DhcpIPAdddressvoce (con valori di dati di sistema NON :0.0.0.0) per trovare l'adattatore corretto.

Dopo aver individuato la chiave corretta, fai clic con il pulsante destro del mouse e seleziona Nuovo> Valore Dword (32 bit) .

Denominalo TcpFrequency e fai clic ok.

Fare doppio clic sul valore in seguito e impostare il valore Decimale su 1. (Per ripristinare l'impostazione predefinita, modificare il valore su 2 o eliminare la chiave) Ora passare alla chiave seguente: HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ

Fare di nuovo clic con il tasto destro del mouse sulla chiave e selezionare Nuovo> Valore Dword (32 bit) .

Denominare il nuovo parametro TcpDelay

Fare doppio clic su di esso in seguito e modificare il suo valore decimale su 1. (Per ripristinare la chiave in un secondo momento, modificarla su 0 o eliminare la chiave)

Algoritmo di Nagle

L'algoritmo di Nagle combina diversi piccoli pacchetti in un unico pacchetto più grande per trasmissioni più efficienti. Questo è progettato per migliorare l'efficienza della trasmissione dei dati. La disabilitazione del “fastidio” può aiutare a ridurre la latenza / ping in alcuni giochi. L'algoritmo di Nagle è abilitato in Windows per impostazione predefinita. Per implementare questa modifica, modificare le seguenti chiavi di registro.

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

Per quello {NIC-id}, cerca quello con il tuo indirizzo IP elencato; sotto questa {NIC-id}chiave creare il seguente valore DWORD:

  • TcpFrequency e impostarlo su 1 per disabilitare il "fastidio" per i giochi.
  • TCPDelay e impostarlo anche su 1 per disabilitare il "nagling"
  • TcpTick e impostarlo su 0

Nota:

Alcuni rapporti dicono che le modifiche hanno ridotto la latenza quando si gioca a Dota 2 e League of Legends, ma per alcuni non funziona. L'ho provato e la mia latenza è migliorata da 110 a 90 ms (SEA Server) durante la riproduzione di Dota 2.

Indice di limitazione della rete

Windows implementa un meccanismo di limitazione della rete, l'idea alla base di tale limitazione è che l'elaborazione dei pacchetti di rete può essere un'attività ad alta intensità di risorse. È utile disattivare tale limitazione per ottenere il massimo rendimento.

Per implementare questo tweak, esegui regedit e modifica il registro

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

In SystemProfile , crea un valore DWORD e assegnalo a NetworkThrottlingIndex, quindi imposta il suo valore esadecimale su ffffffff per i giochi e il throughput massimo: ffffffff disabilita completamente la limitazione.


Reattività di gioco del sistema (non sono così sicuro di questo :)

Lo streaming multimediale e alcuni giochi che utilizzano il servizio "Multimedia Class Scheduler" (MMCSS) possono utilizzare solo fino all'80% della CPU. Il servizio "Multimedia Class Scheduler" (MMCSS) garantisce l'accesso prioritario alle risorse della CPU, senza negare le risorse della CPU alle applicazioni in background con priorità più bassa.

Per implementare questo tweak, esegui regedit e modifica la chiave di registro

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

Da lì, crea un nuovo DWORD e chiamalo SystemResponsiveness impostando il suo valore decimale su 00000000 per puro gaming / streaming.

Nello stesso alveare del Registro di sistema come sopra, puoi anche cambiare la priorità di Giochi. Per implementare questo tweak, vai a

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

e modificare i seguenti valori di registro:

  • "GPU Priority" cambia i suoi valori in 8 per i giochi.
  • “Priorità” impostata su 1 per i giochi.

Tutti applausi per "sconosciuto" (scusatemi un po 'da quando ho copiato le vostre indicazioni) autore di questo tweak di Windows = Xbox ...

PPS: se XServer fallisce ciò che vorresti fare, prova a trovare la soluzione alternativa con Docker.


6-5-7; : 5-6-7 ...
tenedas

Grazie per una risposta molto dettagliata. Altrimenti, grazie a chiunque abbia suggerito la modifica, non posso credere, le persone in realtà stanno suggerendo soluzioni per l'esecuzione di Steam. D'altra parte, le persone continuano a suggerire desktop, di cui non ho ancora idea di quale sarebbe l'uso, personalmente non ho nemmeno bisogno di un file manager, per non parlare di un desktop full flex.
George Hovhannisian,

Ho installato Xming su Windows, quindi ho usato tutti i passaggi dalla sezione 3. qui (sopra) - installa dbus (non è necessario alcun synaptic o nautilus, ma nautilus è un buon controllo), modifica il file session.conf e avvia il dbus servizio. Nautilus si avvia quindi correttamente con alcuni messaggi di errore.
MikeW,

Cosa intendi con "Esegui direttamente l'app VcXsrv" - come fare esattamente?
Erel Segal-Halevi,

Cambiare <auth>allow_anonymous</auth>per <auth>ANONYMOUS</auth>, poi service dbus restarte gnome-terminaldovrebbe funzionare
ZAB

9

Anche se un ambiente desktop con GUI completo non è "ufficialmente" supportato da Microsoft, può funzionare.

Attiva o disattiva le funzionalità di
Windows Abilita sottosistema Windows per Linux
Riavvia il computer
Avvia Microsoft Store
Cerca Ubuntu
Seleziona Ubuntu 18.04 in App
Fai clic su
Avvia Ubuntu e attendi l'installazione
Imposta nome utente e password

Esegui i seguenti comandi:

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

Crea e modifica .xsession

cd /home/user/
sudo vim .xsession

Aggiungi testo:

gnome-session --session=ubuntu-2d

Salva ed esci vi

sudo chmod 755 .xsession
sudo systemctl enable xrdp

Avrai bisogno di un secondo account su Ubuntu

sudo adduser remote
sudo usermod -aG sudo remote

Modifica startwm.sh

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

Commenta le due righe in basso

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

Aggiungi testo:

startxfce4

Salva ed esci vi

exit

In Windows, riavvia Ubuntu ed esegui:

sudo /etc/init.d/xrdp start

In Windows, esegui mstsc.exe
Computer: 127.0.0.1:3390
Lascia il nome utente vuoto
Connetti

Sessione:
nome utente Xorg :
password remota : password

Goditi xfce!

Al termine, chiudere la connessione desktop remoto
Tornare alla riga di comando di Ubuntu

sudo /etc/init.d/xrdp stop
exit

1
Questo sta funzionando. Ho usato Ubuntu 16. Non avevo l'aspetto della GUI nativa di Ubuntu. Xorg non è disponibile nell'elenco
xrdp

Continuo a ricevere il seguente messaggio di errore: "accesso non riuscito per la visualizzazione 0". Pensieri? Perché xrdp non mi consente di accedere?
J-Dizzle,

2

Dal momento che lo vuoi facile ... C'è un'app in Microsoft Store chiamata x410 . È fondamentalmente un server Cygwin X11 senza l'uso dello stesso Cygwin. Dopo l'installazione - ovvero zero config - puoi eseguire le app WSL X11! (o persino interi desktop). Potresti voler inserire le seguenti righe nel tuo .bashrc (dal tuo account utente WSL) in modo da poter eseguire le app dal tuo terminale 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

Ho comprato x410 su salve per circa 5 euro ... Quindi se è troppo, forse aspetta una vendita!


2

Se si desidera una soluzione immediata , utilizzare MobaXTerm . È un ottimo emulatore di terminale multitabbed con supporto diretto per WSL e ha un server X ottimizzato integrato. Uso sinaptico tutto il tempo su Moba. Anche RStudio.


1

Ho scelto la risposta di Panther non solo perché è l'unica, ma anche perché è la risposta corretta; non esiste un modo semplice per far funzionare le app gui.

Inoltre, ho usato questo tutorial, con alcune modifiche:

  1. Non ho installato xfce, perché non so perché avrei bisogno di un desktop.
  2. Ha scelto Multiple Windowsin XLaunch(No DE, quindi senza necessità di una finestra gigante)
  3. Nessuna necessità di correzione mkdir e nessuna necessità di un terminale separato.

Quali app gui ho installato? Solo Synaptic e CMake, dato che non riesco davvero a pensare a nient'altro di cui avrei bisogno su wsl.

Non faccio VM / Dual Boot, per lo stesso motivo per cui Panther ha sottolineato; Ho bisogno di un ambiente di sviluppo conveniente (per me), non di un sistema operativo completamente flessibile.


vagrantup.com/docs/other/wsl.html - vagrant è uno strumento eccellente per far girare rapidamente gli ambienti di sviluppo. Sembra che supporti wsl. Anche se non l'ho ancora provato.
TamusJRoyce,

1

Sulla base della mia ricerca, wsl inizialmente non era progettato per gli utenti della GUI. Tuttavia, possiamo installare un X-server di terze parti per visualizzare la GUI. Ho testato che VcXsrv con una corretta configurazione può essere usato per visualizzare il desktop Debian Linux.

Penso che il mio approccio funzioni senza problemi per visualizzare mate-desktop (GUI) sul sottosistema Windows Debian Linux. Ho realizzato un video su come installare e visualizzare mate-desktop (GUI) su wsl Debian da zero. Link: https://youtu.be/QjogEWudpaM

L'installazione di mate-desktop su Ubuntu è leggermente diversa.

Passaggio 1 : installa wsl

  • Apri PowerShell come amministratore e digitaEnable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Installa "Debian" o "Ubuntu" dal Microsoft Store.

Passaggio 2 : installare un'interfaccia utente grafica, ad esempio mate desktop.

Per l' utente Debian :

  • Apri la console Linux in Windows 10 e installa mate-desktop digitando:, sudo apt-get updatepremi invio.
  • Al termine dell'aggiornamento, digitare sudo apt install task-mate-desktop, premere invio.

O per l' utente Ubuntu :

  • apri la console di Ubuntu da Windows 10
  • digita sudo apt install tasksel, premi invio
  • digita sudo apt update, premi invio
  • digita sudo tasksel install ubuntu-mate-desktop, premi invio

Step3 : Installa il server X in Windows 10. Ho usato un server open source chiamato VcXsrv. Può essere scaricato da https://sourceforge.net/projects/vcxsrv/ .
Una volta completata l'installazione:

  • aprire XLauch in Windows 10

  • eseguire la seguente configurazione:

    • Selezionare: "One large window"
    • Selezionare Display number: 0
    • clic next
    • Selezionare Start no client
    • clic next
    • clic finish

Passaggio 4 : installazione nella console Linux:

  • genere export DISPLAY=:0

  • tipo export LIBGL_ALWAYS_INDIRECT=1(forse questo encomio non è richiesto)

Passaggio 5 : Visualizza la GUI di mate-desktop:

  • digitare mate-sessionper l' utente Debian

  • digitare mate-sessiono lightdm-sessionper l' utente Ubuntu

Se ti confondi sulla mia descrizione, puoi controllare i miei video di YouTube Installa la GUI (mate desktop) sul sottosistema Microsoft Windows Linux .


-1

Di solito l'host di un guest VirtualBox è raggiungibile alla 10.0.2.2

Ora puoi qualsiasi programma WSL X sul tuo desktop Fedora, anche con Windows senza soluzione di continuità.


Questo è interessante. Io stesso non sono un grande fan di Fedora. La stessa cosa può essere fatta con Arch?
George Hovhannisian,

Immagino così. Il server X è accessibile in Fedora tramite ssh per impostazione predefinita, potrebbe essere necessario modificare alcune impostazioni sshd in Arch.
Weberjn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.