Oh my zsh pour WSL2

Oh My Zsh est un framework pour zsh qu'il est tout à fait possible d'utiliser sur le terminal WSL de votre Windows 10. Voici les notes que j'ai rassemblées à ce sujet.

Installation de zsh

Sur une Debian, zsh n'est pas installé par défaut, on commence donc par le faire via apt install zsh -y

Pour vérifier la version installée, zsh --version

Installation de Oh My Zsh

Oh-my-zsh s'installe avec un script qui va configurer le terminal en indiquant notamment que zsh sera le shell par défaut.

Selon que vous ayez curl ou wget, la commande diffère légérement, pour ma part, j'utilise curl :

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Dorénavant, la configuration de votre shell passera par l'édition du fichier ~/.zshrc.

Configuration de Oh My Zsh

Nous allons éditer le fichier de configuration avec l'éditeur de texte de votre choix (ici nano) et modifier la ligne ZSH_THEME="agnoster" pour spécifier le thème Agnoster qui est l'un des thèmes le efficient. Comme indiqué dans le fichier, la liste des thèmes est disponible sur github

Il y a d'autres options, je vous conseille de lire la documentation ou d'aller sur stackoverflow en cas de problème.

Si on redémarre le terminal, on voit que le shell zsh et le thème Agnoster sont activés mais il y a un soucis au niveau de l'affichage :

Windows Terminal

Il manque donc une police pour zsh mais laquelle ? après quelques recherches, il s'avère que ce problème est solutionné en installant les polices de caratères pour l'outil Powerline, un module pour vim et pour d'autres applications comme zsh justement.

Sauf que je n'ai pas envie d'installer toutes les polices comme le suggérent certains sites mais uniquement d'installer la police manquante. Dans le cas de Oh My Zsh, c'est la police DejaVu Sans Mono for Powerline qui est requise (comme indiqué ici). Après avoir téléchargé l'archive du projet, il faut n'installer que cette famille de police (Installer pour tous les utilisateurs).

Et indiquer ensuite dans le fichier de configuration de Windows Terminal que l'on souhaite utiliser la polie DejaVu Sans Mono.

Cette fois, le shell s'affiche sans problème

Shell Debian (ou autre)

Si dans le nouveau terminal de Windows, l'affichage est correct, cela n'est pas le cas si on lance directement Debian pour WSL. Autant dire que je ne l'utilise que rarement, c'est vraiment facultatif mais autant faire bien les choses.

Dans les propriétés de la fenêtre, il faut maintenant choisir la police DejaVu Sans Mono que nous venons d'installer.

Le shell s'affiche sans problème

VSCode

Dernier élément à configurer, VSCode, l'éditeur de code de Microsoft. En effet, son terminal aussi n'affiche pas correctement Oh My Zsh et il faut donc lui préciser quelle police il faut utiliser.

Dans les paramètres de VSCode, il faut chercher le paramètre terminal.integrated.fontFamily. Ce paramètre peut être modifier à plusieurs endroits, j'ai choisi Distant [WSL: Debian] pour ne pas modifier les polices des autres shells (powershell, cmd, ...).

Immédiatement après, la fenêtre de mon terminal se met à jour.


Sources :

  1. Powerline - Overview
  2. WSL2, zsh, and docker. Linux through Windows.
  3. Setting up WSL2, Windows Terminal and oh-my-zsh