Démarrer Code en mode WSL

J’adore l’IDE Visual Studio Code pour plusieurs raisons. Une de celles-ci est l’utilisation du Terminal bash qui nous permet d’utiliser des lignes de commande Linux à l’aide de Windows Subsystem for Linux (WSL). Comme si ce n’était pas déjà assez, une nouvelle extension permet dorénavant de démarrer complètement l’IDE dans l’environnement WSL. Il est donc possible de démarrer des tâches et de déboguer des applications directement sous Linux dans Windows.

Pour utiliser cette fonctionnalité, il faut démarrer Code et cliquer sur le bouton vert dans le coin en bas à gauche. Par la suite, vous choisissez de redémarrer le dossier en mode WSL. Vous devriez voir que le bouton d’accès rapide indique maintenant WSL et la distribution de Linux, si vous en avez plusieurs.

Visual Studio Code en mode WSL

Ouvrir l’IDE deux fois me semble une perte de temps, étant donné que la manière dont je préfère l’ouvrir est par le menu contextuel dans le dossier de mon projet. J’ai décidé d’ajouter un item supplémentaire pour me faciliter la vie.

Menu contextuel avec l’item supplémentaire

Pour faire cela il suffit d’éditer le registre de Windows. Pour simplifier les choses, voici le contenu du fichier .reg que j’utilise.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCodeWSL]
@="Open with Code WSL"
"Icon"="C:\\Program Files\\Microsoft VS Code\\Code.exe"

[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCodeWSL\command]
@="wsl.exe Code ."

Il suffit de créer un fichier avec l’extension .reg qui contient cette information, de le sauvegarder et de faire un double-clic dessus. Ceci devrait rendre disponible la nouvelle fonctionnalité. La commande wsl.exe et l’application Code.exe doivent être dans votre path pour que ceci fonctionne.

Lorsque l’item est sélectionné dans le menu, une fenêtre de terminal devrait apparaitre brièvement avant de démarrer Code.

Plaisir coupable

Un de mes plaisirs coupables est de voir un logiciel planter dans un endroit public. Par exemple, un guichet automatique, un téléviseur dans un aéroport, une pompe à essence, etc. Ce samedi par un bel après-midi, voici ce qui a mis un sourire dans mon visage.

Windows problem
Oups, on dirait qu’il y a eu un problème…

Je crois que le message complet est celui-ci:

A problem has been detected and Windows has been shut down to prevent damage to your computer.

The Windows Driver Framework has detected that a violation has occurred.

Utiliser Gogs comme un service Windows

Dans mon dernier article, j’avais expliqué comment démarrer MiNET comme un service Windows. On avait la chance que la fonctionnalité était intégrée à l’application. Par contre, ce n’est pas toujours le cas.

Cette fois-ci c’est l’application Gogs que j’aimerais utiliser comme service Windows. Gogs (Go Git Service) est une solution Git auto-hébergée codée en Go. Ce projet à code source ouvert hébergé sur GitHub a beaucoup de qualité, la plus grande étant sans doute sa facilité d’installation. Maintenant, il est temps de parler de l’un de ses défauts: il ne peut pas être installé nativement comme service Windows.

La documentation de Gogs nous dirige vers l’application NSSM pour palier à ce problème. NSSM (Non-Sucking Service Manager) se vante de ne pas être médiocre comme les autres outils de ce genre. L’application possède même une interface graphique pour installer, éditer ou supprimer un service créer à partir de NSSM. Par contre, dans cet article, c’est plutôt des lignes de commande que nous utiliserons.

En premier, il faut que le fichier app.ini de Gogs soit modifié pour que le paramètre RUN_USER porte le nom du PC. Pour connaitre le nom, vous pouvez utiliser la commande suivante:

echo %COMPUTERNAME%

Le fichier ini doit être modifié comme ceci:

RUN_USER = NOMDUPC$

Le signe de dollar à la fin du nom est important.

En second lieu, il faut s’assurer que NSSM a été installé dans votre %PATH%. Par exemple, le fichier nssm.exe peut être copié dans le dossier C:\WINDOWS\system32.

Ensuite, on ouvre une fenêtre de terminal et on tape toutes ces commandes:

set gogspath=c:\gogs
set escapepath=^%PATH^%
nssm install gogs "%gogspath%\gogs.exe"
nssm set gogs AppDirectory "%gogspath%"
nssm set gogs AppParameters "web"
nssm set gogs DisplayName "Gogs - Go Git Service"
nssm set gogs Description "A painless self-hosted Git service."
nssm set gogs Start SERVICE_DELAYED_AUTO_START
nssm set gogs AppStdout "%gogspath%\gogs.log"
nssm set gogs AppStderr "%gogspath%\gogs.log"
nssm set gogs AppRotateFiles 1
nssm set gogs AppRotateBytes 1000000
nssm set gogs AppEnvironmentExtra "PATH=%escapepath%;%gogspath%;C:\Program Files\Git\bin"
nssm start gogs

Il est important de changer la ligne 1 pour y inscrire le chemin vers l’application Gogs. La ligne 13 doit aussi être changée si Git n’est pas dans le %PATH%. La dernière ligne va démarrer le service, donc ouvrez un navigateur web et testez que tout fonctionne.

Si vous désirez supprimer le service, c’est cette commande qu’il faut utiliser:

nssm remove gogs

Pour éditer un service déjà installé avec l’interface on utilise cette commande:

nssm edit gogs

NSSM Details
Édition du service Gogs à l’aide de NSSM

En terminant, je veux vous parler de Gitea. Il s’agit d’un fork de Gogs qui semble avoir le vent dans les voiles. Pour l’instant, je préfère encore demeurer avec Gogs, mais je garde un œil attentif sur ce projet.