<!--
  canonical-url: https://www.avonture.be/fr/blog/windows-terminal
  published:     2024-04-01
  This is a static plain-Markdown mirror generated at build time.
  Visit the canonical URL above for the fully rendered page, with images and interactive components.
-->

# Windows Terminal

> Un guide complet de Windows Terminal. Découvrez comment l'installer, personnaliser les profils, utiliser des images de fond et configurer les paramètres pour WSL, Docker et l'ouverture de plusieurs onglets au démarrage.

---
![Windows Terminal](/img/v2/windows_terminal_tips.webp)

**TL;DR**

Cet article traite de la personnalisation de Windows Terminal via son fichier `settings.json` : définir une image de fond par profil, ajouter un nouveau profil pour ouvrir un shell dans une distribution WSL ou un container Docker précis, définir le profil par défaut et le dossier de démarrage, et utiliser `startupActions` pour ouvrir automatiquement plusieurs onglets (par exemple Ubuntu plus un prompt DOS) au lancement.

Pour ceux qui aiment travailler dans une console, Windows Terminal peut être vu comme le successeur de la vieille console DOS ; vous savez, cet *écran noir* où vous pouvez taper des commandes comme `dir` ou `mkdir`.

Windows Terminal est un logiciel multi-onglets : au lieu d'avoir plusieurs fenêtres, vous avez plusieurs onglets. Mais la fonctionnalité qui me séduit le plus, c'est la possibilité d'avoir une console DOS dans un onglet, une Powershell dans un deuxième, un ou plusieurs onglets pour Linux et, pourquoi pas, [un onglet pour une connexion SSH](/blog/windows-terminal-ssh-profile). Et au lieu d'onglets, vous pouvez aussi afficher plusieurs consoles côte à côte ; voyez [Windows Terminal - Split Panes](/blog/windows-terminal-split-panes).

Et c'est vraiment confortable ! Dans une même fenêtre, vous pouvez avoir plusieurs consoles actives et, par exemple, partager votre historique Linux entre les onglets. Plutôt sympa !

## Personnaliser votre profil {#customize-your-profile}

Sur mon ordinateur, voici à quoi ressemble ma console Ubuntu. J'utilise Windows Terminal et [PowerLevel10k](/blog/powerlevel10k_sandbox) :

![Windows Terminal avec une console Ubuntu](./images/windows_terminal.webp)

Mais pour rendre l'interface plus geek, j'utilise un fond d'écran au lieu d'un simple écran noir.

Si ça vous tente, procédez comme ceci :

1. Cliquez sur le bouton `+` et choisissez `settings`

2.

3. Dans l'éditeur ouvert, dépliez la `list` des `profiles` et retrouvez celui que vous souhaitez personnaliser (dans mon cas `Ubuntu`)

Dans mon cas, mon profil a ces paramètres :

**settings.json**

```json
{
    "backgroundImage": "c:/Users/Christophe/Backgrounds/ubuntu.jpg",
    "backgroundImageOpacity": 0.3,
    "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
    "hidden": false,
    "name": "Ubuntu",
    "source": "Windows.Terminal.Wsl",
    "startingDirectory": "\\\\wsl$\\Ubuntu\\home\\christophe\\repositories",
    "tabTitle": "Ubuntu"
}
```

Comme vous pouvez le voir, j'ai téléchargé une jolie image de fond, je l'ai enregistrée dans mon dossier `Backgrounds` puis j'utilise la notation Linux pour y faire référence.

## Installation {#installation}

Windows Terminal fait partie de Windows 11 : vous l'avez donc déjà si vous utilisez cet OS. Si vous êtes sur une version plus ancienne de Windows, vous pouvez installer Windows Terminal via le Windows Store ou, troisième possibilité si ce n'est pas possible, télécharger [la dernière release depuis GitHub](https://github.com/microsoft/terminal/releases).

## Ajouter un nouveau profil {#add-a-new-profile}

Pour ajouter un nouveau profil, disons une console à l'intérieur d'un de vos containers Docker (oui ! c'est possible), regardez le tableau `list` dans le contenu JSON : copiez/collez simplement un profil existant pour créer le nouveau.

Par exemple, je vais créer un nouveau profil pour pouvoir ouvrir directement mon blog dans un container Docker (puisque, bien sûr, mon blog a sa propre image Docker) :

**settings.json**

```json
{
    "profiles": {
        "list": [
            {
                "commandline": "wsl.exe -d Ubuntu docker-compose exec docusaurus /bin/sh",
                "backgroundImage": "c:/Users/Christophe/Backgrounds/blog.jpg",
                "backgroundImageOpacity": 0.3,
                "tabColor": "#2496ED",
                "guid": "{d77a8e47-3017-4745-9300-d338d849ee20}",
                "icon": "ms-appdata:///roaming/pen.png",
                "name": "Docker - Blog",
                "startingDirectory": "\\\\wsl$\\Ubuntu\\home\\christophe\\repositories\\blog"
            }
        ]
    }
}
```

> **Vos paramètres:**
>
> * `commandline` : pour démarrer un sous-système Linux, commencez votre commande par `wsl.exe -d` suivi du nom de la distribution, par exemple `wsl.exe -d Debian`. Bien sûr, cette distribution doit être présente sur votre machine. Vous pouvez compléter la ligne de commande par un paramètre : la commande à exécuter au démarrage, par exemple `docker-compose`, `ls` ou autre chose.
> * `backgroundImage` : optionnel. Indiquez ici, en notation Linux, le path vers l'endroit où vous avez enregistré l'image à utiliser comme fond,
> * `backgroundImageOpacity` : optionnel. Entre `0` et `1` ; en fait, cela dépendra de l'image que vous choisirez,
> * `guid` : vous devez, chaque fois, générer un nouveau GUID. Pour cela, lancez simplement `uuidgen` dans une console Linux, puis copiez/collez la valeur obtenue dans `{...}`,
> * `icon` : optionnel. Pour personnaliser l'icône, récupérez n'importe quelle icône sur Internet et enregistrez l'image dans le dossier `%USERPROFILE%\AppData\Local\Packages\Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe\RoamingState`. La notation à utiliser ensuite est `ms-appdata:///roaming/your_image_name.png`

![Le profil du blog](./images/blog.webp)

![La console du blog](./images/blog_opened.webp)

## Définir le profil par défaut {#set-the-default-profile}

Jetez un œil à la liste des profils définis dans votre fichier `settings.json` : chaque profil a son propre `guid`. Copiez/collez simplement le guid du profil de votre choix dans le nœud racine `defaultProfile`.

## Définir le dossier par défaut pour Ubuntu {#set-the-default-folder-for-ubuntu}

Pour ouvrir directement le dossier souhaité, il faut définir le nœud `startingDirectory` dans un profil. Disons que nous voulons ouvrir le dossier home de l'utilisateur au démarrage d'un nouveau shell Ubuntu :

**settings.json**

```json
{
  "profiles": {
    "list": [
      {
        "name": "Ubuntu",
        "source": "Windows.Terminal.Wsl",
        "startingDirectory": "\\\\wsl$\\Ubuntu\\home\\christophe\\"
      }
    ]
  }
}
```

Il vous suffit de spécifier le nœud `startingDirectory` et de le définir sur `\\wsl$\Ubuntu\home\christophe\`

## Ouvrir plusieurs onglets au démarrage {#open-multiple-tabs-during-the-startup-process}

Windows Terminal possède une propriété `startupActions` qui vous permet de spécifier les actions à effectuer pendant le processus de démarrage.

Imaginons que je veuille lancer deux onglets : celui par défaut (rien à prévoir) et un second onglet. Pour faciliter la maintenance, je vais utiliser un profil :

**settings.json**

```json
"startupActions": "; new-tab --profile \"DOS Command Prompt\"",
```

Je dois donc maintenant créer un profil appelé `DOS Command Prompt` :

**settings.json**

```json
{
    "profiles": {
        "list": [
            {
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "hidden": false,
                "name": "DOS Command Prompt"
            },
        ]
    }
}
```

Et tadaaa, maintenant, au lancement de Windows Terminal, mon terminal par défaut s'ouvrira (Ubuntu dans mon cas) et, dans un second onglet, j'ouvrirai aussi une console DOS.

## Pour aller plus loin {#going-further}

Voilà pour les bases, mais Windows Terminal a bien plus à offrir. J'ai écrit des articles dédiés, plus détaillés, sur quelques-uns de ces sujets : [utiliser une image de fond](/blog/windows-terminal-background), [diviser une fenêtre en plusieurs panneaux](/blog/windows-terminal-split-panes), et [ajouter un profil SSH en un clic](/blog/windows-terminal-ssh-profile).
