Gérer le menu Démarrer Windows et les icônes pour les logiciels installés directement via WSL

Le plugin WSL Dynamic Virtual Channel (WSLDVCPlugin) semble faire un excellent travail pour créer des liens dans le menu Démarrer et la recherche pour les applications graphiques Linux qui ont été installées via un gestionnaire de paquets système (pour moi c’est apt sous Ubuntu).

WSLDVCPlugin crée également une icône Windows à partir de l’icône Linux originale de l’application, et ajoute le pingouin dans le coin inférieur droit de l’icône pour qu’elle se distingue comme WSL dans la barre des tâches.

J’aimerais utiliser cette même fonctionnalité de menu Démarrer et d’icône pour les applications que j’ai installées sans gestionnaire de paquets (plus précisément je la veux pour Anaconda Navigator et Firefox Developer Edition). J’ai quelques idées sur la manière dont cela pourrait être fait, mais je n’ai actuellement pas suffisamment de connaissances en Linux et WSL pour y parvenir.

Réponse courte

Pour chaque application pour laquelle vous souhaitez que Windows crée une entrée dans le menu Démarrer, créez un fichier <appname>.desktop.

Explication

Cela semble (et paraît être, quand je l’ai essayé) assez simple. Selon le readme GitHub de WSLg :

Ce canal est utilisé par Weston pour énumérer toutes les applications graphiques Linux (c’est-à-dire les applications qui ont une entrée de fichier desktop de type gui) ainsi que leur ligne de commande de lancement et leur icône. Le WSLDVCPlugin open source traite la liste des applications graphiques Linux envoyée via ce canal et crée des liens pour elles dans le menu Démarrer de Windows.

Donc le côté Linux est responsable de la recherche des fichiers <appname>.desktop, comme il le fait habituellement pour créer des entrées de menu dans le gestionnaire de bureau Linux. Microsoft a exploité ce mécanisme dans leur implémentation pour envoyer des notifications d’applications installées via RDP vers Windows, où le plugin crée l’entrée du menu Démarrer.

Donc pour créer un élément du menu Démarrer Windows, il suffit de créer un fichier /usr/share/applications/.desktop correspondant :

sudo bash -c 'cat << EOF > /usr/share/applications/<appname>.desktop
[Desktop Entry]
Type=Application
Name=<appname>
Exec=/path/to/app
EOF'

Notes supplémentaires

L’élément du menu Démarrer apparaît en une seconde environ sur mon installation (Win 11 dans une VM Skylake avec virtualisation imbriquée).

Notez qu’il semble que le fichier .desktop doit être dans /usr/share/applications. Lors de mes tests, ~/.local/share/applications n’a pas fonctionné.

Également, lors de mes tests, les fichiers desktop avec Terminal=true semblent être ignorés.

Supprimer les fichiers <appname>.desktop supprime également l’entrée du menu Démarrer.