137 votes

Quel est le moyen le plus simple d'exécuter des applications GUI sur le sous-système Windows pour Linux ?

J'ai fait des recherches, et actuellement il y a deux méthodes suggérées ; l'installation d'une amélioration pour Windows Subsystem for Linux et l'installation d'un XServer.

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

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

101voto

WinEunuuchs2Unix Points 91128

VcXsrv

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

Installation

L'installation est simple. À partir du 17 mars 2019, vous pouvez simplement accepter les valeurs par défaut. Si vous voulez appeler gedit à partir de votre Bash Shell / Terminal vous devez éditer ~/.bashrc et insérez cette ligne :

export DISPLAY=localhost:0.0

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

J'étais capable de courir :

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

... pour installer le logiciel de bureau GUI. Cela m'a ensuite permis d'exécuter gedit y nautilus . J'ai également été en mesure d'installer des applications GUI spécifiques par le biais de l'interface CLI (Command Line Interface) à l'aide de apt o apt-get des commandes.

Lorsque je veux essayer plusieurs de mes scripts Ubuntu bash dans WSL VcXsrv doit être installé pour que zenity y yad Les boîtes de dialogue x-Windows s'affichent pour permettre à l'utilisateur d'effectuer des saisies.

Comme d'autres l'ont noté, l'interface graphique de WSL n'est pas parfaite et vous pouvez vous attendre à passer du temps à résoudre certains problèmes. De même, certains logiciels GUI ne fonctionnent tout simplement pas dans WSL.

Notes de configuration

J'ai modifié /etc/environment pour modifier les menus déroulants des interfaces graphiques :

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 est un chemin inhabituel car c'est l'endroit où je stocke les scripts utilisés à la fois dans Windows 10 dual boot WSL et Ubuntu 16.04 dual boot. La plupart des utilisateurs n'incluraient pas cela sur leur machine.

40voto

Panther Points 96601

La réponse courte est que vous ne pouvez pas, car la 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 certaines commandes / binaires linux natifs sur un noyau Windows (Microsoft) et a des limitations.

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

Vous pouvez cependant installer un serveur X tiers, tel que xming, et vous connecter en ssh à 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'attends à ce que certaines applications ne fonctionnent tout simplement pas même avec cette technique.

27voto

tenedas Points 379

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 consomme des ressources. J'ai simplement exécuté les applications de bash en mode GUI depuis le bureau Windows10 en utilisant XServer.

  1. Installer VcXsrv à partir de ici sur Sourceforge

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

  3. Ouvrez Ubuntu Bash :

     cd /mnt

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

    cd .. 

(localhost@localhost:/$ ce qui signifie que cette commande vous amène au début du disque dur pour autant que WSL puisse voir...)

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

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

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

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

Appuyez sur i pour 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 ESC lorsque vous avez terminé de modifier le fichier et :wq pour enregistrer le fichier.

Exécutez ces commandes et vérifiez leurs résultats :

    $ export DISPLAY=localhost:0
    $ sudo service dbus start
    * Starting system message bus dbus                 [OK]
    $ echo $DISPLAY
    localhost:0
  1. Vous avez terminé ! Maintenant, lancez synaptic, nautilus ou firefox depuis Bash et ils devraient se charger sur le bureau de Win10. Les options GUI comme celle-ci sont boguées mais opérationnelles. Vous pouvez installer ubuntu-desktop , unity , ccsm , compiz et essayer d'exécuter Unity Desktop pour Ubuntu . Je n'ai pas essayé de configurer le "Steam" parce que je souffre encore en essayant d'exécuter "Unreal", Bonne chance :)

Si quelqu'un sait comment diriger gnome-terminal sur XServer au lieu de XTerm, veuillez partager...

P.S.
Vous pouvez ajouter VcXsrv comme un bootable Win10

Pour maximiser vos sources avec "Steam" comme spécifié dans le post original, réglez un peu votre Windows pour la gestion des paquets réseau (pour réduire la latence) et la priorisation CPU/GPU pour faire une Win10XBox :)

Bien que vous fassiez tourner "Steam" sous "Unix", le Shell est toujours "Windows", ce qui vous permet de lancer "Steam" sur "Unix"

Tcp Prep: ;

Dans regedit :

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

Vous devez parcourir la liste des sous-clés pour trouver l'entrée de la carte réseau utilisée pour se connecter à Internet. Si vous utilisez le protocole DHCP, vous devez rechercher les éléments suivants DhcpIPAdddress entrée (avec des valeurs de données système NON :0.0.0.0 ) pour trouver le bon adaptateur.

Une fois que vous avez localisé la bonne clé, faites un clic droit dessus 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 rétablir le paramètre par défaut, définissez la valeur sur 2 ou supprimez la clé). Naviguez maintenant jusqu'à la clé suivante : HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ

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

Nommez le nouveau paramètre TcpDelay

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

Algorithme de Nagle

L'algorithme de Nagle combine plusieurs petits paquets en un seul paquet plus grand pour des transmissions plus efficaces. Il est conçu pour améliorer l'efficacité du débit de transmission des données. La désactivation du "nagling" peut aider à réduire la latence/ping dans certains jeux. L'algorithme de Nagle est activé par défaut dans Windows. Pour mettre en œuvre cette astuce, modifiez les clés de registre suivantes.

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

Pour le {NIC-id} recherchez celui où figure votre adresse IP ; sous cette rubrique, vous trouverez les informations suivantes {NIC-id} crée la valeur DWORD suivante :

  • TcpFrequency et définissez-le à 1 pour désactiver le "nagling" pour les jeux.
  • TCPDelay et mettez-le également à 1 pour désactiver le "nagling".
  • TcpTicks et le mettre à 0

Note :

Certains rapports indiquent que ces modifications ont permis de réduire la latence lors des parties de Dota 2 et de League of Legends, mais cela ne fonctionne pas pour certains. Je l'ai essayé et ma latence est passée de 110 à 90 ms (serveur SEA) lorsque je joue à Dota 2.

Indice d'étranglement du réseau

Windows met en œuvre un mécanisme d'étranglement du réseau, l'idée derrière cet étranglement étant que le traitement des paquets réseau peut être une tâche gourmande en ressources. Il est utile de désactiver ce mécanisme pour obtenir un débit maximal.

Pour mettre en œuvre cette modification, exécutez regedit et modifiez le registre.

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

Sous Profil du système créez une valeur DWORD et donnez-lui le nom suivant NetworkThrottlingIndex puis définissez sa valeur hexadécimale à ffffffff pour les jeux et le débit maximal : ffffffff désactive complètement l'étranglement.


Réactivité du système de jeu (Je ne suis pas très sûr de ce point :)

Le streaming multimédia et certains jeux qui utilisent le service "Multimedia Class Scheduler" (MMCSS) ne peuvent utiliser que 80 % du processeur. Le service "Multimedia Class Scheduler" (MMCSS) garantit un accès prioritaire aux ressources du processeur, sans priver les applications d'arrière-plan moins prioritaires des ressources du processeur.

Pour mettre en œuvre cette modification, exécutez regedit et modifiez la clé de registre suivante

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

À partir de là, créez un nouveau DWORD et donnez-lui le nom suivant Réactivité du système définir sa valeur décimale à 00000000 pour le jeu/streaming pur.

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

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

et modifiez les valeurs de registre suivantes :

  • "GPU Priority" change ses valeurs à 8 pour les jeux.
  • "Priorité" fixée à 1 pour les jeux.

Bravo à l'auteur "inconnu" (pardon, cela fait un moment que j'ai copié vos instructions) de ce tweak Windows=Xbox...

PPS : Si XServer échoue dans ce que vous voulez faire, essayez de trouver une solution de contournement avec Docker.

  • [WSL_Apache_Roolez][1]
  • [Throttling_a_'mm'_:0][2]
  • [You've Got Mail !!!] [3]

Microsoft a annoncé le feu vert pour l'interface graphique de WSL 2 : https://devblogs.microsoft.com/commandline/the-Windows-subsystem-for-linux-build-2020-summary/#wsl-gui

12voto

Guest Points 129

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

Activer ou désactiver les fonctionnalités de Windows
Activer le sous-système Windows pour Linux
Redémarrer l'ordinateur
Lancer le Microsoft Store
Recherche pour Ubuntu
Sélectionnez Ubuntu 18.04 sous Apps
Cliquez sur Obtenir
Lancez Ubuntu et attendez l'installation
Définir 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 le fichier .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 le fichier 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 mstsc.exe
Ordinateur : 127.0.0.1:3390
Laissez le nom d'utilisateur vide
Connectez-vous à

Session : Xorg
nom d'utilisateur : remote
mot de passe : mot de passe

Profitez de xfce !

Lorsque vous avez terminé, fermez la connexion au bureau à distance
Retour à la ligne de commande Ubuntu

sudo /etc/init.d/xrdp stop
exit

5voto

David Xue Points 199

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

Je pense que mon approche fonctionne sans problème pour afficher mate-desktop (GUI) sur le sous-système Windows Linux Debian. J'ai fait une vidéo sur la façon d'installer et afficher mate-desktop (GUI) sur wsl Debian à partir de zéro. Lien : https://youtu.be/QjogEWudpaM

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

Étape 1 : installer wsl

  • Ouvrez PowerShell en tant que un administrateur et le type Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  • Installez "Debian" ou "Ubuntu" depuis la boutique Microsoft.

Étape 2 : installer une interface utilisateur graphique, telle que le bureau mate.

Pour Debian Utilisateur :

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

OU pour Ubuntu Utilisateur :

  • ouvrir la console ubuntu à partir de Windows 10
  • type sudo apt install tasksel et appuyez sur Entrée.
  • type sudo apt update et appuyez sur Entrée.
  • type sudo tasksel install ubuntu-mate-desktop et appuyez sur Entrée.

Étape 3 : Installer le serveur X dans 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 :

  • ouvrir XLauch dans Windows 10

  • effectuer la configuration suivante :

    • sélectionner : "One large window"
    • sélectionnez Display number: 0
    • cliquez sur next
    • sélectionnez 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 (cette recommandation n'est peut-être pas nécessaire)

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

  • type mate-session para Debian utilisateur

  • type mate-session o lightdm-session para Ubuntu utilisateur

Si vous vous trompez dans ma description, vous pouvez consulter mes vidéos sur YouTube. Installer une interface graphique (mate desktop) sur le sous-système Linux de Microsoft Windows .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X