Pour comprendre ce qui se passe, il faut faire la distinction entre les "applications Windows GUI" et les "applications Linux (X) GUI". Tout ce que vous mentionnez et qui s'ouvre est une application Windows.
Il est important de noter que cette réponse ne concerne que la version actuelle de WSL. Dans le courant de l'année, la version WSLg devrait être publiée avec la mise à jour 21H2 de Windows 10. Celle-ci ajoutera la possibilité d'exécuter des applications GUI Linux. Comme vous mentionnez une "solution de contournement" dans votre question, vous savez déjà que WSL ne permet pas d'exécuter des applications Linux. actuellement inclut cette fonctionnalité, sauf si vous exécutez une version Windows Insider/Preview ou si vous avez installé manuellement un serveur X distinct et l'avez configuré (comme indiqué dans la "solution de contournement").
Alors que l'on s'attendrait normalement à devoir lancer une application Windows dans WSL à l'aide de la commande .exe
(et vous auriez raison), il y a quelques exceptions.
Pour le code .
exemple que vous mentionnez, Microsoft inclut spécifiquement un Shell Shell dans le téléchargement du VSCode et le place dans le PATH de Windows. Comme vous appelez code
代わりに code.exe
ce Shell Shell est en cours d'exécution. Vous pouvez y jeter un coup d'oeil avec view "$(which code)"
. Ce script, entre autres choses, finit par appeler le programme Windows .exe
version.
Si vous êtes curieux de savoir pourquoi les exécutables de Windows ( .exe
) dans le domaine du WSL, veuillez consulter le site suivant cette très bonne réponse sur le sujet.
Quant aux carnets Jupyter, il s'agit spécifiquement de lancer une URL. Python inclut un webbrowser
qui lui permet de lancer un navigateur avec une URL. Vous pouvez l'essayer en lançant python3
et ensuite entrer les commandes suivantes :
>> import webbrowser
>> webbrowser.open("https://superuser.com/q/1654716/1210833")
true
Notez que cela ne fonctionne que sur la distribution Ubuntu de WSL, et peut-être d'autres qui ont fourni les hooks appropriés. Par exemple, dans OpenSuse, cela ne fonctionne pas par défaut :
>> import webbrowser
>> webbrowser.open("https://superuser.com/q/1654716/1210833")
false
Cependant, sur d'autres distributions, vous pouvez simplement exporter le fichier BROWSER
variable d'environnement. Par exemple, j'utilise le navigateur Vivaldi sous Windows :
export BROWSER="/mnt/c/Program Files/Vivaldi/Application/vivaldi.exe"
Après cela, OpenSuse fonctionne de la même manière qu'Ubuntu avec la fonction webbrowser.open
appeler.
Ubuntu fournit le wslu
par défaut sur WSL. Il comprend wslview
pour ouvrir l'application par défaut pour un fichier (par ex. wslview payroll.pdf
) et aussi le www-browser
hook qui est probablement ce que Python utilise lorsque vous lancez votre notebook Jupyer.