15/11/2024

AstucesPowerShell

Comment personnaliser le shell PowerShell avec Oh My Posh ?

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'))

Installation de Oh-My-Posh PowerShell

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 :

Oh My Posh - Editer le profil Windows

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".

Oh My Posh - Installation police

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 :

Oh My Posh - Configuration Police Windows Terminal

Cliquez sur "Enregistrer". Cette modification est reportée dans le fichier de configuration JSON de Windows Terminal.

Oh My Posh - Windows Terminal Exemple

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.

Oh My Posh - Thème opérationnel - Windows

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"
            },
Oh My Posh et Windows Terminal

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.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “Comment personnaliser le shell PowerShell avec Oh My Posh ?

  • 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

    Répondre
  • C’est bizzard mais quand j’ouvre powershell en administrateur l’affichage n’est pas correct

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.