Comment personnaliser le shell PowerShell avec Oh My Posh ?
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à personnaliser la console de PowerShell à l'aide de Oh My Posh, un outil de plus en plus populaire qui va vous permettre d'avoir le shell de vos rêves !
Oh My Posh est en quelque sorte un "moteur de thèmes" qui va vous permettre de personnaliser votre console PowerShell rapidement en appliquant l'un des thèmes disponibles. Enfin, vous pouvez aussi vous lancer dans la création de votre propre thème ou éditer un thème existant.
Dans cet article, je prends l'exemple de la personnalisation du shell PowerShell sous Windows en passant par Windows Terminal, mais c'est également possible de personnaliser un environnement Linux ou macOS. Si cela peut vous donner des idées...
Envie d'apprendre à utiliser PowerShell ? Retrouvez notre cours complet :
II. Installation de Oh My Posh sur Windows
Tout d'abord, sur votre machine Windows, ouvrez une console PowerShell et exécutez la commande suivante pour installer l'outil. Cette commande va récupérer le script d'installation officiel.
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://ohmyposh.dev/install.ps1'))
Sinon, vous pouvez utiliser directement winget si votre système prend en charge ce gestionnaire de paquets.
winget install oh-my-posh
Une fois l'installation terminée, la console PowerShell vous donne accès à la commande "oh-my-posh". D'accord, très bien, mais qu'est-ce que l'on en fait ?
III. Configuration d'Oh My Posh
A. Déclarer le thème
Pour que le thème Oh My Posh s'applique à la console PowerShell, nous devons modifier le profil PowerShell et choisir un thème. La liste des thèmes est disponible sur cette page : Oh My Posh - Thèmes.
Je vous invite à ouvrir votre profil PowerShell avec cette commande :
notepad $PROFILE
Une erreur peut s'afficher dans le cas où vous n'avez jamais créé de profils PowerShell dans la session actuelle. Dans ce cas, créez le fichier :
New-Item -Path $PROFILE -Type File -Force
La variable $PROFILE existera forcément sur votre machine. Vous pouvez l'afficher pour regarder où sera créé votre fichier de profil. Une fois que le fichier est créé, relancez la première commande pour ouvrir le profil.
Ici, vous allez devoir ajouter une ligne de commande pour initialiser Oh My Posh afin qu'il charge un thème. L'exemple ci-dessous permet de charger le thème "quick-term.omp.json".
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/quick-term.omp.json" | Invoke-Expression
Ce qui donne :
Dans cette commande, on peut voir que la variable d'environnement "$env:POSH_THEMES_PATH" est utilisée. Créée par Oh My Posh, elle correspond à l'emplacement suivant :
C:\Users\<utilisateur>\AppData\Local\Programs\oh-my-posh\themes
Dans le dossier mentionné ci-dessus, vous pouvez visualiser l'ensemble des thèmes déjà disponible en local.
Sauvegardez le fichier du profil, et laissez-le de côté pour le moment.
B. Installation d'une police
Pour fonctionner, Oh My Posh doit bénéficier d'une police d'écriture qui va être chargée à partir du projet Nerd Fonts. Pour cela, il faut exécuter la commande ci-dessous :
oh-my-posh font install
Ceci va permettre de sélectionner la police à installer. Sélectionnez "CascadiaCode" qui est la police la plus fréquemment utilisée. Naviguez avec les flèches du clavier et validez avec "Entrée".
Une fois que c'est fait, ouvrez l'application "Windows Terminal" puis accédez aux paramètres. Ici, sous "Profils", cliquez sur "Par défaut" puis sur "Apparence". Dans la section "Apparence", sélectionnez la nouvelle police au niveau du champ "Type de police". Lorsque l'on installe la police CascadiaCode, il convient de sélectionner "CaskaydiaCove NF Mono". Comme ceci :
Cliquez sur "Enregistrer". Cette modification est reportée dans le fichier de configuration JSON de Windows Terminal.
C. Installation des icônes pour le terminal
Les thèmes sont susceptibles d'utiliser des icônes, ce qui rend le shell encore plus agréable visuellement parlant. Pour activer la prise en charge des icônes dans le terminal, le module PowerShell "Terminal-Icons" doit être installé. Voici la commande à exécuter :
Install-Module -Name Terminal-Icons -Repository PSGallery
Ensuite, ouvrez de nouveau le profil PowerShell :
notepad $PROFILE
A la suite de la ligne "oh-my-posh" que l'on a déjà ajoutée précédemment, ajoutez celle-ci afin que le module Terminal-Icons soit systématiquement importé.
Import-Module -Name Terminal-Icons
Enregistrez et fermez le fichier de profil. Fermez également la console PowerShell.
IV. Aperçu du thème
Ouvrez la console PowerShell via Windows Terminal, et là, vous devriez voir apparaître votre nouveau thème, avec la prise en charge des icônes. Le thème pris pour exemple indique le nom de l'utilisateur dans le prompt, ainsi que sur la droite le temps d'exécution de chaque commande, ainsi que l'heure à laquelle cette commande a été exécutée.
V. Aller plus loin
Windows Terminal dispose aussi de diverses options de personnalisation, notamment pour modifier l'image de fond de votre console. Ainsi, on peut coupler l'utilisation d'un thème Oh My Posh et les options de Windows Terminal pour aller encore plus loin dans la personnalisation de son environnement PowerShell.
Dans les paramètres de Windows Terminal, en bas à gauche, il y a le bouton "Ouvrir le fichier JSON" qui donne accès à la configuration au format brut. Ici, vous pouvez déclarer une image de fond (backgroundImage) ainsi que l'opacité de cette image (backgroundImageOpacity). Par exemple :
"defaults": {},
"list":
[
{
"backgroundImage": "C:/Exemple/IT-Connect_Wallpaper.png",
"backgroundImageOpacity": 0.2,
"guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
"hidden": false,
"name": "PowerShell",
"source": "Windows.Terminal.PowershellCore"
},
VI. Conclusion
Nous venons de voir comment personnaliser le shell PowerShell simplement à l'aide de Oh My Posh ! Au-delà des couleurs, chaque thème est susceptible d'afficher des informations différentes et de répondre plus ou moins à vos attentes. Testez un thème et s'il ne vous plait pas, passez sur un autre ou modifiez-le.
Le projet Oh My Posh est tellement apprécié qu'il est mentionné dans la documentation de Microsoft. On apprend également sur cette page que l'on peut l'utiliser avec WSL.
Bonjour,
Merci pour votre travail, je suis obligé de vous écrire, car j’ai un problème de téléchargement avec les icons CascadiaCode => context deadline exceeded.
Je pensais avoir trouvé la solution en les installant moi même et ça a fonctionné jusqu’a que je redémarre mon PC, les icons sont bien installés mais powershell ne les voit pas et du coup je suis contraint de les retélécharger et ça remarche, c’est pas très viable.
Si vous pouviez m’aider ça serait cool.
Breizil29
C’est bon c’est résolu.
C’est bizzard mais quand j’ouvre powershell en administrateur l’affichage n’est pas correct