web-dev-qa-db-fra.com

WSL 2: Exécutez des applications de bureau Linux graphiques à partir de Windows 10 Bash Shell "Erreur E233: impossible d'ouvrir l'affichage"

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?

6
ASE

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)

3
VPraharsha

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.

1
fquinner

enter image description here Les instructions suivantes ont été copiées et collées d'un article que j'ai écrit, mais il a perdu le formatage d'origine, les liens et les captures d'écran:

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


0
TheAltruist

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
0
AlienDrew