Quelle est la façon la plus simple d’exécuter des applications graphiques sur un sous-système Windows pour Linux à partir de 2018?

89

J'ai cherché autour, et actuellement il y a deux méthodes suggérées; installer une amélioration pour le sous-système Windows pour Linux et installer un serveur XServer.

Je veux savoir quelle méthode est la plus simple (facile à installer ET à utiliser), et laquelle est la moins lourde en mémoire.

Je veux juste Synaptic et CMake. Pourquoi cela ne pourrait-il pas être une fonctionnalité intégrée?

George Hovhannisian
la source
1
Mon sentiment personnel est que WSL est une blague! Pourquoi ne pas simplement charger une VM?
Charles Green
3
@CharlesGreen memory ... Je suis actuellement sur un très vieux portable.
George Hovhannisian
Moi aussi, mais je lance Windows 10 sur une machine virtuelle pour le programme dont j'ai besoin et qui ne tourne que sous Windows
Charles Green
1
@CharlesGreen VirtualBox?
George Hovhannisian
"Je veux vraiment utiliser Steam et enfin jouer à Portal 2 sous Linux!" WSL n’est pas Linux, ce qui ne se produira jamais. WSL n’est pas non plus conçu comme une plate-forme de jeu. C’est une plate-forme qui permet à BASH de tirer le maximum de sa puissance pour Windows. Mais aussi STEAM pour soutenir WSL
ça

Réponses:

29

La réponse courte est que vous ne pouvez pas car WSL ne supporte pas encore cette fonction. WSL n'est pas une installation Linux complète avec un noyau Linux, il vous permet d'exécuter des commandes / binaires Linux natives sur un noyau Windows (Microsoft) et comporte des limitations.

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

Vous pouvez cependant installer un serveur X tiers, tel que xming et ssh dans votre WSL.

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

Je n'ai pas copié ce tutoriel ici car il est assez omniprésent (X over ssh) et je m'attendrais à ce que certaines applications ne fonctionnent tout simplement pas même avec cette technique.

Panthère
la source
Alors, sans tracas n'est pas une option, alors? Peut-être que quelqu'un va faire fonctionner Synaptic pour Windows avec WSL dans le futur ...
George Hovhannisian le
1
Les programmes graphiques sur WSL ne signifient pas que vous pouvez utiliser Steam sur WSL. Vous aurez besoin de Valve pour créer un support pour WSL.
Rinzwind
7
Gardez à l'esprit que vous n'avez pas du tout besoin d'utiliser SSH. Il suffit de définir DISPLAYet vous êtes prêt (pour xming et VcXsrv de toute façon).
dma1324
5
Je souhaiterais que cette réponse soit 1: pas tout à fait exacte, et 2: pas dans l’esprit de la question - oui, vous pouvez exécuter des applications gui dans wsl avec un xserver. L'op n'a pas posé de question sur les applications prises en charge. (installez vcxserve ou quelque chose de similaire, sudo apt-get installez synaptic après le réglage de DISPLAY, pas besoin de ssh) ...
decuser
1
@decuser Les votes positifs sont meilleurs à la place: s'il n'y en a pas, écrivez-en une.
Thorbjørn Ravn Andersen le
62

VcXsrv

J'ai choisi d'utiliser VcXsrvWSL (Windows 10 Subsystem for Linux). Je recommande à chacun de faire ses recherches entre xming(la réponse acceptée) et VcXsrv avant de sélectionner l’un ou l’autre pour la prise en charge de l’interface utilisateur graphique (GUI) dans Windows 10 Ubuntu 16.04.

Installation

L'installation est simple. À compter du 17 mars 2019, vous pouvez simplement accepter les valeurs par défaut. Si vous souhaitez appeler geditdepuis votre terminal / shell Bash, vous devez modifier ~/.bashrcet insérer cette ligne:

export DISPLAY=localhost:0.0

Que pouvez-vous faire après l’installation de VcXsrv?

J'ai pu courir:

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

... pour installer le logiciel de bureau graphique. Cela m'a ensuite permis de courir geditet nautilus. De plus, j'ai ensuite pu installer des applications d'interface graphique spécifiques via l'interface de ligne de commande (CLI) à l'aide des commandes aptou apt-get.

Lorsque je veux essayer plusieurs de mes scripts bash Ubuntu dans WSL, VcXsrv doit être installé de sorte zenityque les yadboîtes de dialogue x-windows s'affichent pour que l'utilisateur puisse les saisir.

Comme d'autres l'ont noté, l'interface graphique dans WSL n'est pas parfaite et vous pouvez vous attendre à perdre du temps à résoudre certains problèmes. De plus, certains logiciels d'interface graphique ne fonctionneront tout simplement pas dans WSL.

Notes d'installation

J'ai modifié /etc/environmentpour ajuster les menus déroulants de l'interface graphique:

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/binest un chemin inhabituel car c’est là que je stocke les scripts utilisés à la fois dans Windows 10 à double démarrage WSL et à double démarrage Ubuntu 16.04. La plupart des utilisateurs n'incluent pas ceci sur leur machine.
WinEunuuchs2Unix
la source
1
@ GeorgeHovhannisian L'avantage pour moi est que je peux utiliser geditce que je connais de l'expérience Ubuntu Desktop. De plus, beaucoup de mes scripts bash utilisent zenityou yadpour les boîtes de dialogue x-windows. Ces scripts bash ne s'exécutent que s'ils VcXsrvsont installés.
WinEunuuchs2Unix
6
+1 juste hilarant: Comment puis-je convertir secrètement mon système Windows à Ubuntu de l'intérieur?
Dessert
8
C'était simple: Sous Windows, téléchargé VcXsrv à l'aide du lien fourni. Installé et lancé. Ensuite, j'ai ouvert un shell Ubuntu et je suis entré export DISPLAY=:0. Maintenant , je pouvais courir xhost, xeyeset gnuplotdans Ubuntu ( à condition que ces programmes sont déjà installés dans le Ubuntu WSL).
Daniel K.
2
@dessert +1 à votre commentaire. C'est hilarant de penser que mon nom d'utilisateur signifie "Limité par l'utilisateur Windows commuté sur Unix". Grâce à WSL, j'utilise Windows 10 occasionnellement car je peux utiliser Ubuntu à l'intérieur. Appelez-moi WinEunuuchs2Unix2WinSub4Linux? : p
WinEunuuchs2Unix le
2
aussi export LIBGL_ALWAYS_INDIRECT=1et vous obtenez une accélération matérielle dans les applications GL sur X en utilisant VcXsrv
Jippers
19

J'ai eu une expérience très positive avec VcXsrv sur Win 10 Bash sur Ubuntu sur Windows (Ubuntu 16.04 Xenial x86_64 Linux 4.4.0-17074-Microsoft). Je ne me suis pas concentré sur l'exécution du bureau Unity, car il est inutile et utilise beaucoup de ressources. Je viens tout simplement d'exécuter des applications de bash en mode graphique à partir du bureau Windows10 à l'aide de XServer.

  1. Installez VcXsrv à partir d' ici sur Sourceforge

  2. Exécutez l'application VcXsrv directement, ne lancez pas XLaunch. Vous devriez voir localhost:0.0 - 0 clientsquand vous survolez l'icône sur la barre des tâches Win10

  3. Ouvrez Ubuntu Bash:

    cd /mnt
    

    (résultats dans localhost @ localhost: / mnt $)

    cd .. 
    

    (localhost @ localhost: / $ signifie que cette commande vous amène au début du disque dur aussi loin que WSL peut le voir ...)

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

    (ceci installera "dbus" pour créer un connecteur virtuel pour l'interface graphique, "Synaptic Package Manager" et l'explorateur de fichiers "Nautilus" pour l'unité-desktop

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

    (Quand session.confs'ouvre dans l'éditeur vi)

    Appuyez sur ipour passer en mode insertion et ajouter

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

    que d'ajouter:

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

    Appuyez sur Échap lorsque vous avez terminé de modifier le fichier et :wqde le sauvegarder.

    Exécutez ces commandes et vérifiez leur sortie:

    $ export DISPLAY=localhost:0
    $ sudo service dbus start
    * Starting system message bus dbus                 [OK]
    $ echo $DISPLAY
    localhost:0
    
  4. Vous avez terminé! Maintenant, lancez simplement synaptic, nautilus ou firefox à partir de Bash et ils devraient se charger sur le bureau Win10. Les options de l'interface graphique comme celle-ci sont boguées mais opérationnelles. Vous pouvez installer ubuntu-desktop, unity, ccsm, compizet essayez d'exécuter Unity Desktop pour Ubuntu . Je n'ai pas essayé de régler le "Steam" parce que je souffre toujours de courir pour courir "Unreal", bonne chance :)

Si quelqu'un sait comment utiliser gnome-terminalXServer au lieu de XTerm, veuillez partager ...

PS
Vous pouvez ajouter VcXsrv en tant que bootable Win10

Pour maximiser vos sources avec "Steam" comme spécifié dans le message d'origine, réglez un peu Windows pour la gestion des paquets réseau (pour réduire le temps de latence) et la hiérarchisation des processeurs / GPU pour créer une Win10XBox ... :)

Bien que vous exécutiez "Steam" sous "Unix", le shell est toujours "Windows", ce qui vous permet de lancer "Steam" sur "Unix"…

Tcp Prep :;

En regedit:

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

Ici, vous devez parcourir la liste des sous-clés pour localiser l'entrée de la carte réseau utilisée pour vous connecter à Internet. Si vous utilisez DHCP, vous devez rechercher une DhcpIPAdddressentrée (avec les valeurs de données système NOT :0.0.0.0) pour trouver le bon adaptateur.

Une fois que vous avez trouvé la bonne clé, cliquez dessus avec le bouton droit de la souris et sélectionnez Nouveau> Valeur Dword (32 bits) .

Nommez-le TcpFrequency et cliquez sur ok.

Double-cliquez ensuite sur la valeur et définissez sa valeur décimale sur 1. (Pour restaurer le paramètre par défaut, définissez la valeur sur 2 ou supprimez la clé). Maintenant, accédez à la clé suivante: HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ

Cliquez à nouveau avec le bouton droit sur la clé et sélectionnez Nouveau> Valeur Dword (32 bits) .

Nommez le nouveau paramètre TcpDelay

Double-cliquez dessus et changez sa valeur décimale en 1. (Pour restaurer la clé ultérieurement, définissez-la sur 0 ou supprimez la clé).

Algorithme de Nagle

L'algorithme de Nagle combine plusieurs petits paquets en un seul et plus grand paquet pour des transmissions plus efficaces. Ceci est conçu pour améliorer l'efficacité du débit de la transmission de données. Désactiver «nagling» peut aider à réduire la latence / ping dans certains jeux. L'algorithme de Nagle est activé dans Windows par défaut. Pour implémenter ce réglage, modifiez les clés de registre suivantes.

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

Pour le {NIC-id}, recherchez celui avec votre adresse IP listée; sous cette {NIC-id}clé, créez la valeur DWORD suivante:

  • TcpFrequency et réglez-le sur 1 pour désactiver le "nagling" pour les jeux.
  • TCPDelay et réglez-le également sur 1 pour désactiver «nagling»
  • TcpTicks et réglez-le sur 0

Remarque:

Certains rapports disent que les réglages ont réduit la latence lorsque vous jouez à Dota 2 et à League of Legends, mais cela ne fonctionne pas pour certains. Je l'ai essayé et ma latence est passée de 110 à 90 ms (SEA Server) lors de la lecture de Dota 2.

Index de limitation du réseau

Windows implémente un mécanisme de limitation du réseau, l’idée étant que le traitement des paquets réseau peut être une tâche gourmande en ressources. Il est avantageux de désactiver cette limitation pour obtenir un débit maximal.

Pour implémenter ce tweak, lancez regedit et modifiez le registre

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

Sous SystemProfile , créez une valeur DWORD et nommez-la NetworkThrottlingIndex, puis définissez sa valeur hexadécimale sur ffffffff pour les jeux et le débit maximal: ffffffff désactive complètement la limitation.


Réactivité du système de jeu (pas si sûr de celui-ci :)

La diffusion multimédia en continu et certains jeux utilisant le service «Multimedia Class Scheduler» (MMCSS) ne peuvent utiliser que 80% de la CPU. Le service «Multimedia Class Scheduler» (MMCSS) assure un accès prioritaire aux ressources de la CPU, sans refuser les ressources de la CPU aux applications d'arrière-plan de priorité inférieure.

Pour implémenter ce tweak, lancez regedit et modifiez la clé de registre

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

À partir de là, créez un nouveau DWORD et nommez-le SystemResponsiveness. Définissez sa valeur décimale sur 00000000 pour les jeux et la diffusion en continu.

Dans la même ruche de registre que le réglage ci-dessus, vous pouvez également modifier la priorité des jeux. Pour mettre en œuvre ce tweak, allez à

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

et modifiez les valeurs de registre suivantes:

  • «Priorité GPU» change ses valeurs à 8 pour les jeux.
  • «Priorité» défini sur 1 pour les jeux.

Tous les acclamations pour "inconnu" (excusez-moi il y a longtemps que j'ai copié vos instructions) auteur de cette modification Windows = Xbox ...

PPS: Si XServer échoue, essayez de trouver une solution de contournement avec Docker.

Tenedas
la source
6-5-7; : 5-6-7 ...
Tenedas
Merci pour une réponse très détaillée. Autrement, je ne peux pas croire que quiconque ait suggéré le montage, en réalité, propose des solutions pour faire fonctionner Steam. D'un autre côté, les gens continuent de suggérer des ordinateurs de bureau, mais je n'ai toujours aucune idée de ce que serait l'utilisation de cela. Personnellement, je n'ai même pas besoin d'un gestionnaire de fichiers, encore moins d'un ordinateur de bureau totalement flexible.
George Hovhannisian
J'ai installé Xming sous Windows, puis utilisé toutes les étapes de la section 3. ici (ci-dessus) - installez dbus (aucun besoin réel de synaptique ou de nautile, mais nautilus est un bon moyen de vérification), modifiez le fichier session.conf, puis démarrez-le. un service. Nautilus démarre ensuite avec succès avec quelques messages d'erreur.
MikeW
Que voulez-vous dire par "Lancer l'application VcXsrv directement" - comment faire exactement cela?
Erel Segal-Halevi le
Changez <auth>allow_anonymous</auth>en <auth>ANONYMOUS</auth>, alors service dbus restartet gnome-terminaldevrait fonctionner
ZAB
9

Même si un environnement de bureau à interface graphique complète n'est pas "officiellement" pris en charge par Microsoft, cela peut fonctionner.

Activer ou désactiver des fonctionnalités
Windows Activer le sous-système Windows pour Linux
Redémarrer un ordinateur
Lancer Microsoft Store
Rechercher Ubuntu
Sélectionnez Ubuntu 18.04 sous Applications
Cliquez sur Obtenir
Lancer Ubuntu et attendez l'installation
Définissez le nom d'utilisateur et le mot de passe

Exécutez les commandes suivantes:

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

Créer et modifier .xsession

cd /home/user/
sudo vim .xsession

Ajouter du texte:

gnome-session --session=ubuntu-2d

Sauvegarder et quitter vi

sudo chmod 755 .xsession
sudo systemctl enable xrdp

Vous aurez besoin d'un deuxième compte sur Ubuntu.

sudo adduser remote
sudo usermod -aG sudo remote

Modifier startwm.sh

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

Commentez les deux dernières lignes

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

Ajouter du texte:

startxfce4

Sauvegarder et quitter vi

exit

Sous Windows, redémarrez Ubuntu et exécutez:

sudo /etc/init.d/xrdp start

Dans Windows, exécutez l'
ordinateur mstsc.exe : 127.0.0.1:3390
Laissez le nom d'utilisateur vide.
Connectez-vous.

Session:
Nom d'utilisateur Xorg :
mot de passe distant : mot de passe

Profitez de xfce!

Une fois terminé, fermez la connexion au bureau à distance
Retournez à la ligne de commande Ubuntu

sudo /etc/init.d/xrdp stop
exit
Client
la source
1
Ça marche. J'ai utilisé Ubuntu 16. Je n'avais pas l'apparence de l'interface utilisateur graphique native d'ubuntu. Xorg n'est pas disponible dans la liste
xrdp
Je continue à recevoir le message d'erreur suivant - "Échec de la connexion pour l'affichage 0". Pensées? Pourquoi xrdp ne me permet-il pas de me connecter?
J-Dizzle
2

Puisque vous le voulez facilement ... Il existe une application dans le Microsoft Store appelée x410 . C'est en gros un serveur Cygwin X11 sans l'utilisation de Cygwin lui-même. Après versement - c'est zéro config - vous pouvez exécuter les applications WSL X11! (ou même des ordinateurs de bureau entiers). Vous voudrez peut-être insérer les lignes suivantes dans votre fichier .bashrc (à partir de votre compte d'utilisateur WSL) afin de pouvoir exécuter les applications à partir de votre terminal 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

J'ai acheté x410 sur pommade pour environ 5 euros. Donc si c'est trop, peut-être attendre une vente!

PourquoiAlwaysTheLoginAndPassword
la source
2

Si vous souhaitez une solution prête à l' emploi, utilisez MobaXTerm . C'est un excellent émulateur de terminal multitabbed avec prise en charge directe de WSL et doté d'un serveur X optimisé intégré. J'utilise synaptic tout le temps sur Moba. Même RStudio.

abalter
la source
1

J'ai choisi la réponse de Panther non seulement parce que c'est la seule, mais aussi parce que c'est la bonne réponse; Il n’existe pas de moyen simple et simple d’exécuter des applications graphiques.

De plus, j'ai utilisé ce tutoriel, avec quelques modifications:

  1. Je n'ai pas installé xfcecar je ne sais pas pourquoi j'aurais besoin d'un ordinateur de bureau.
  2. Choisissez Multiple Windowsdans XLaunch(No DE, donc pas besoin d'une fenêtre géante)
  3. Pas besoin de correction mkdir ni de terminal séparé.

Quelles applications graphiques ai-je installées? Seulement Synaptic et CMake, puisque je ne peux vraiment pas penser à autre chose dont j’aurais besoin sur wsl.

Je ne fais pas VM / Dual Boot, pour la même raison que Panther a souligné; J'ai besoin d'un environnement de développement pratique (pour moi) et non d'un système d'exploitation totalement flexible.

George Hovhannisian
la source
vagrantup.com/docs/other/wsl.html - vagrant est un excellent outil pour créer rapidement des environnements de développement. On dirait qu'il prend en charge WSL. Bien que je ne l'ai pas encore essayé.
TamusJRoyce
1

D'après mes recherches, wsl n'était pas conçu à l'origine pour les utilisateurs d'interface graphique. Cependant, nous pouvons installer un serveur X du tiers pour afficher l'interface graphique. J'ai testé que VcXsrv avec une configuration appropriée peut être utilisé pour afficher le bureau Linux Debian.

Je pense que mon approche fonctionne correctement pour afficher mate-desktop (GUI) sur le sous-système Windows Linux Debian. J'ai réalisé une vidéo sur l'installation et l'affichage de mate-desktop (GUI) sur wsl Debian à partir de zéro. Lien: https://youtu.be/QjogEWudpaM

L'installation de mate-desktop sur Ubuntu est légèrement différente.

Étape 1 : installez WSL

  • Ouvrez PowerShell en tant qu'administrateur et tapezEnable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Installez "Debian" ou "Ubuntu" à partir du magasin Microsoft.

Étape 2 : installez une interface utilisateur graphique, telle que mate desktop.

Pour les utilisateurs Debian :

  • Ouvrez la console Linux dans Windows 10 et installez mate-desktop en tapant:, sudo apt-get updateappuyez sur Entrée.
  • Une fois la mise à jour terminée, tapez sudo apt install task-mate-desktop, appuyez sur Entrée.

OU pour l' utilisateur Ubuntu :

  • Ouvrez la console Ubuntu à partir de Windows 10
  • tapez sudo apt install tasksel, appuyez sur Entrée
  • tapez sudo apt update, appuyez sur Entrée
  • tapez sudo tasksel install ubuntu-mate-desktop, appuyez sur Entrée

Étape 3 : Installez le serveur X sous Windows 10. J'ai utilisé un serveur open-source appelé VcXsrv. Il peut être téléchargé à partir de https://sourceforge.net/projects/vcxsrv/ .
Une fois l'installation terminée:

  • ouvrez XLauch dans Windows 10

  • effectuez la configuration suivante:

    • sélectionner: "One large window"
    • sélectionner Display number: 0
    • Cliquez sur next
    • sélectionner Start no client
    • Cliquez sur next
    • Cliquez sur finish

Étape 4 : installation dans la console Linux:

  • type export DISPLAY=:0

  • type export LIBGL_ALWAYS_INDIRECT=1(peut-être que cette recommandation n'est pas obligatoire)

Étape 5 : Afficher l'interface graphique de mate-desktop:

  • type mate-sessionpour l' utilisateur Debian

  • tapez mate-sessionou lightdm-sessionpour l' utilisateur Ubuntu

Si vous ne comprenez pas ma description, vous pouvez consulter mes vidéos youtube. Installer l'interface graphique (mate desktop) sur Microsoft Windows Subsystem Linux .

David Xue
la source
-1

Habituellement, l'hôte d'un invité VirtualBox peut être atteint à 10.0.2.2

Vous pouvez désormais utiliser n'importe quel programme WSL X sur votre bureau Fedora, même sous Windows transparent.

Weberjn
la source
Maintenant, c'est intéressant. Je ne suis pas un grand fan de Fedora moi-même. Peut-on faire la même chose avec Arch?
George Hovhannisian
J'imagine. Le serveur X est accessible dans Fedora via ssh par défaut, vous devrez peut-être modifier certains paramètres sshd dans Arch.
weberjn