web-dev-qa-db-fra.com

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?

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?

69

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 présente 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.

23
Panther

VcXsrv

J'ai choisi d'utiliser VcXsrv dans WSL (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 gedit à partir de votre terminal/shell Bash, vous devez éditer ~/.bashrc et 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 d'exécuter gedit et 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 apt ou apt-get.

Lorsque je veux essayer plusieurs de mes scripts bash Ubuntu dans WSL , VcXsrv doit être installé. Les boîtes de dialogue zenity et yad x-windows sont affichées pour permettre la saisie par l'utilisateur.

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/environment en Tweak GUI menus déroulants:

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à que je stocke les scripts utilisés à la fois dans le double démarrage WSL Windows 10 et dans le double démarrage Ubuntu 16.04. La plupart des utilisateurs n'incluent pas ceci sur leur machine.
49
WinEunuuchs2Unix

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 à partir de bash en mode graphique à partir du bureau Windows10 à l'aide de XServer.

  1. Installez 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 de 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
    

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

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

    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, unityname__, ccsmname__, compizet essayer de lancer 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 exécuter gnome-terminal sur XServer au lieu de XTerm, veuillez partager ...

P.S
Vous pouvez ajouter VcXsrv en tant que bootable Win1

Pour maximiser vos sources avec "Steam" comme spécifié dans l'article original, réglez un peu Windows pour la gestion des paquets réseau (afin de 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 l'entrée DhcpIPAdddress(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 de 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é). Accédez maintenant à la clé suivante: HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ

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

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 Tweak, 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 indiquée; sous cette clé {NIC-id}, 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 comme suit NetworkThrottlingIndex , puis définissez sa valeur hexadécimale à 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 attribuez-lui le nom suivant: SystemResponsiveness , définissez sa valeur décimale sur 00000000 pour les jeux et la diffusion en continu.

Dans le même registre que le Tweak 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 Windows = Xbox Tweak ...

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

17
tenedas

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 l'ordinateur
Lancer Microsoft Store
Recherchez Ubuntu
Sélectionnez Ubuntu 18.04 sous Applications
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 .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 mstsc.exe
Ordinateur: 127.0.0.1:3390
Laissez le nom d'utilisateur vide
Relier

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

Profitez de xfce!

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

Sudo /etc/init.d/xrdp stop
exit
7
Guest

Puisque vous le voulez facilement ... Il existe une application dans le Microsoft Store appelée x41 . 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, attendez peut-être une vente!

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'y a pas de moyen simple et rapide de faire fonctionner des applications graphiques.

En outre, j'ai utilisé le tutoriel this , avec quelques modifications:

  1. Je n'ai pas installé xfce, car je ne sais pas pourquoi j'aurais besoin d'un ordinateur de bureau.
  2. Choisissez Multiple Windows in XLaunch (Pas de DE, donc pas besoin d'une seule 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.

1

Si vous voulez 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.

1
abalter

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.

0
weberjn