Comment exécuter des applications Graphical Linux Desktop à partir de Windows 10's Bash Shell?
Premièrement, j'ai installé le sous-système Windows pour Linux (WSL) suivant les étapes suivantes, comme indiqué dans ici comme suit:
(1) Installation d'aperçu de l'aperçu de l'initié Windows 10 pro initié installé 19619.
(2) Installé la distribution Ubuntu Linux.
(3) Modification de la version de distribution de WSL 1 à WSL 2.
Deuxièmement, pour activer les applications Graphical Linux Desktop à partir de Windows 10's Bash Shell, j'ai suivi les étapes suivantes comme indiqué ici comme suit:
(4) J'ai installé un serveur X qui est xographe
(5) Editeur VIM graphique basé sur GTK installé en tant que test utilisant:
Sudo apt-get install vim-gtk
(6) Définir la variable d'environnement d'affichage
export DISPLAY=:0
(7) lancer une demande
gvim
Cependant, cela n'a pas déjeuné l'application et j'ai eu l'erreur suivante:
E233: cannot open display
Press ENTER or type command to continue
E852: The child process failed to start the GUI
Press ENTER or type command to continue
Avez-vous une idée de cette erreur?
Ajouter à la réponse de Fquinner,
Votre affichage [~ # ~] [~ # ~ ~ ~] env variable doit être défini comme export DISPLAY=X.X.X.X:0
Pour utiliser l'adresse IP de l'hôte de Windows comme WSL2 et l'hôte Windows ne figure pas dans le même périphérique réseau, où x.x.x.x est l'adresse IP
et votre adresse IP est répertorie dans resolv.conf contre le serveur de noms ($ cat /etc/resolv.conf
)
ou simplement export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
Pour charger l'adresse IP correcte automatiquement. De plus, vous pouvez ajouter ceci à .bashrc
ou alors .zshrc
(Si vous utilisez ZSH)
Il y a une section de dépannage ici pour le débogage X11 sur WSL2:
https://github.com/cascadium/wsl-windows-toolbar-launcher/blob/master/readme.md#troufeage
Le transfert de port n'est pas le même que WSL1 - vos services Linux peuvent être accessibles via localhost pour Windows, mais l'inverse n'est plus vrai.
Vous devez donc utiliser l'adresse IP interne de votre hôte Windows et modifier le pare-feu pour permettre au réseau WSL.
Source:Comment installer Ubuntu Desktop avec une interface utilisateur graphique dans WSL2
Télécharger VCXSRV: Visitez le site officiel Cliquez sur "Télécharger"
Installez VCXSRV: Ouvrez "VCXSRV-64.1.20.8.1.INSTALLER.EXE" Cliquez sur "Suivant" Cliquez sur "Installer" Cliquez sur "Fermer"
Autoriser l'accès à VCXSRV: Vérifiez "Réseaux privés" Cliquez sur "Autoriser l'accès"
Open PowerShell: Appuyez sur "⊞ Windows" Entrez "PowerShell" dans la barre de recherche Cliquez avec le bouton droit de la souris sur "Windows PowerShell", cliquez sur "Exécuter en tant qu'administrateur".
Open WSL2: Copiez la commande ci-dessous Ces instructions collant la commande dans PowerShell Press "Entrée"
wsl
Installez Ubuntu Desktop: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
Sudo apt --yes install ubuntu-desktop
Définissez la variable Nom d'utilisateur: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
username=$(wslvar USERNAME)
Créer le répertoire Ubuntu: Copiez la commande ci-dessous Ces instructions Coller la commande dans PowerShell Press "Entrée"
mkdir --parents /mnt/c/users/$username/.ubuntu/
Ouvrez le répertoire Ubuntu: Copiez la commande ci-dessous Ces instructions Coller la commande dans PowerShell Press "Entrée"
cd /mnt/c/users/$username/.ubuntu
Téléchargez le référentiel de logiciels Linux pour les produits Microsoft: Copiez la commande ci-dessous Ces instructions collez la commande dans PowerShell Press "Entrée"
Ubuntu 20.04:wget https://packages.Microsoft.com/config/ubuntu/20.04/packages-Microsoft-prod.deb --output-document packages-Microsoft-prod.deb
Ubuntu 18.04:wget https://packages.Microsoft.com/config/ubuntu/18.04/packages-Microsoft-prod.deb --output-document packages-Microsoft-prod.deb
Installez le référentiel de logiciels Linux pour les produits Microsoft: Copiez la commande ci-dessous Ces instructions collez la commande dans PowerShell Press "Entrée"
Sudo dpkg --install packages-Microsoft-prod.deb
Mettez à jour les référentiels: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
Sudo apt update
Installation APT Transport pour HTTPS: Copiez la commande ci-dessous Ces instructions Coller la commande dans PowerShell Press "Entrée"
Sudo apt install --yes apt-transport-https
Mettez à jour les référentiels: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
Sudo apt update
Installez .NET: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
Sudo apt install --yes dotnet-sdk-5.0
Ajouter des systèmes Arkane dans le répertoire de liste source: Copiez la commande ci-dessous Ces instructions Coller la commande dans PowerShell Press "Entrée"
Sudo sh -c 'echo "deb [trusted=yes] https://wsl-translinux.arkane-systems.net/apt/ /" > /etc/apt/sources.list.d/wsl-translinux.list'
Mettez à jour les référentiels: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
Sudo apt update
Installez Genie: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
Sudo apt install --yes systemd-genie
Créer le fichier sudoers: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
echo "$USER ALL=(ALL) NOPASSWD:/usr/bin/genie" | Sudo EDITOR="tee" visudo --file /etc/sudoers.d/$USER
Créez le script Desktop: Copiez le code ci-dessous Ces instructions collez le code dans PowerShell Press "Entrée"
# CREATE BASH SCRIPT
# Store block of text with here document
create_bash_script=$(cat << end_of_string
# Define necessary environment variables
export DISPLAY="\$(cat /etc/resolv.conf | grep nameserver | awk '{ print \$2 }'):1.0"
export DESKTOP_SESSION="ubuntu"
export GDMSESSION="ubuntu"
export XDG_SESSION_DESKTOP="ubuntu"
export XDG_CURRENT_DESKTOP="ubuntu:GNOME"
export XDG_SESSION_TYPE="x11"
export XDG_BACKEND="x11"
export XDG_SESSION_CLASS="user"
export XDG_DATA_DIRS="/usr/local/share/:/usr/share/:/var/lib/snapd/desktop"
export XDG_CONFIG_DIRS="/etc/xdg"
export XDG_RUNTIME_DIR="\$HOME/xdg"
export XDG_CONFIG_HOME="\$HOME/.config"
export XDG_DATA_HOME="\$HOME/.local/share"
export XDG_CACHE_HOME="\$HOME/.cache"
export XDG_DESKTOP_DIR="\$HOME/Desktop"
export XDG_DOCUMENTS_DIR="\$HOME/Documents"
export XDG_DOWNLOAD_DIR="\$HOME/Downloads"
export XDG_MUSIC_DIR="\$HOME/Music"
export XDG_PICTURES_DIR="\$HOME/Pictures"
export XDG_PUBLICSHARE_DIR="\$HOME/Public"
export XDG_TEMPLATES_DIR="\$HOME/Templates"
export XDG_VIDEOS_DIR="\$HOME/Videos"
# Start desktop environment
gnome-session
end_of_string
)
# Store username environment variable in lowercase
username=$(wslvar USERNAME | awk '{ print tolower($0) }') &&
# Save block of text in bash file
echo "${create_bash_script}" > "/mnt/c/users/$username/.ubuntu/02_start_desktop.sh"
Téléchargez les images de raccourci: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
wget https://assets.ubuntu.com/v1/9fbc8a44-circle-of-friends-web.Zip
Décompressez les images de raccourci: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
unzip -o 9fbc8a44-circle-of-friends-web.Zip
Créer l'icône de raccourci: Copiez la commande ci-dessous Ces instructions Coller la commande dans PowerShell Press "Entrée"
convert -resize 64x64 ./circle-of-friends-web/png/cof_orange_hex.png ubuntu.ico
EXIT WSL2: Copiez la commande de ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
exit
Créez le script VCXRV: Copiez le code ci-dessous Ces instructions collez le code dans PowerShell Press "Entrée"
# RELOAD VCXSRV SCRIPT
# Store username environment variable in lowercase
$username = $env:username.tolower()
# Store block of text with here-string
$reload_vcxsrv_script = @"
# Stop vcxsrv proccess that contains "1.0" in the program window title
get-process vcxsrv | where { `$_.mainwindowtitle -like "*1.0*" } | stop-process
# Start vcxsrv process in a large program window on display number one
start-process "c:\program files\vcxsrv\vcxsrv.exe" -argument ":1 -ac -nowgl -multimonitors -dpms"
"@
# Save block of text in powershell file
echo "${reload_vcxsrv_script}" > $env:userprofile/.ubuntu/reload_vcxsrv.ps1
Créez le script Ubuntu: Copiez le code ci-dessous Ces instructions collez le code dans PowerShell Press "Entrée"
# CREATE VISUAL BASIC SCRIPT
# Store username environment variable in lowercase
$username = $env:username.tolower()
# Store block of text with here-string
$create_vbs_script = @"
' Run PowerShell script in background
set application = createobject("Shell.application")
application.shellexecute "powershell", "-file c:\users\admin\.ubuntu\01_reload_vcxsrv.ps1", "", "", 0
' Allow PowerShell script to complete
wscript.sleep 3000
' Run Bash script in background
set Shell= createobject("wscript.Shell")
Shell.run "wsl Sudo genie -c bash /mnt/c/users/admin/.ubuntu/02_start_desktop.sh", 0
"@
# Save block of text in bash file
echo "${create_vbs_script}" > $env:userprofile/.ubuntu/03_start_ubuntu.vbs
Créez le script de raccourci: Copiez le code ci-dessous Ces instructions collez le code dans PowerShell Press "Entrée"
# Store block of text with here-string
$create_shortcut_script = @"
# Define location variables
`$shortcut_location = "`$env:userprofile\.ubuntu\Ubuntu.lnk"
`$program_location = "`$env:userprofile\.ubuntu\03_start_ubuntu.vbs"
# Create shortcut
`$object = new-object -comobject wscript.Shell
`$shortcut = `$object.createshortcut(`$shortcut_location)
`$shortcut.targetpath = `$program_location
`$shortcut.iconlocation = "`$env:userprofile\.ubuntu\ubuntu.ico"
`$shortcut.save()
"@
# Save block of text in powershell file
echo $create_shortcut_script > $env:userprofile/.ubuntu/04_create_shortcut.ps1
Ouvrez le répertoire Ubuntu: Copiez la commande ci-dessous Ces instructions Coller la commande dans PowerShell Press "Entrée"
cd c:\users\admin\.ubuntu
Créer le raccourci: Copiez la commande ci-dessous Ces instructions Coller la commande dans PowerShell Press "Entrée"
powershell.exe -file .\04_create_shortcut.ps1
Ouvrez le répertoire dans Explorer: Copiez la commande ci-dessous ces instructions Coller la commande dans PowerShell Press "Entrée"
Explorer .
Lancez le bureau Ubuntu: double-cliquez sur le raccourci "Ubuntu"
Terminal ouvert: cliquez sur "Activités" dans le coin supérieur gauche Entrez "Terminal" dans la barre de recherche, cliquez sur "Terminal"
Désactiver le verrouillage de l'écran: Copiez la commande de ci-dessous ces instructions collez la commande dans la touche Terminal Appuyez sur "Entrée"
gsettings set org.gnome.desktop.screensaver lock-enabled false
Installez le SNAP Store: Copiez la commande ci-dessous Ces instructions collant la commande dans la touche Terminal Appuyez sur "Entrée"
Sudo snap install snap-store
Découvert que maintenant afin d'obtenir une interface graphique (au moins en ligne), vous devez utiliser votre adresse IP publique ...
par exemple. Courir ce qui suit devrait fonctionner:
export DISPLAY=$(Dig +short myip.opendns.com @resolver1.opendns.com):0