Configuration cross-platform pour un environnement terminal unifié.
Bare git repo — un seul dot checkout et tout est en place.
| Outil | Rôle |
|---|---|
| WezTerm | Émulateur de terminal (Windows / macOS) |
| zsh | Shell |
| Starship | Prompt (config custom inspirée Catppuccin powerline) |
| Neovim + LazyVim | Éditeur |
| fzf | Fuzzy finder |
| zoxide | Navigation intelligente (cd) |
| mise | Gestionnaire de versions (node, python, go…) |
| eza | Remplacement de ls |
| bat | Remplacement de cat |
| ripgrep | Remplacement de grep |
| fd | Remplacement de find |
| jq | Traitement JSON |
| lazydocker | TUI Docker (optionnel) |
| Claude Code | Assistant CLI (statusline custom theme-aware) |
WSL — Ubuntu 24.04 requis. La config WezTerm cible
Ubuntu-24.04explicitement et certains outils (treesitter, Mason) nécessitent une GLIBC récente. Vérifier aveclsb_release -rs.
CLI tools
# Debian/Ubuntu (WSL)
sudo apt install build-essential curl unzip zsh fzf bat ripgrep fd-find jq
# bat s'installe sous le nom batcat, fd sous le nom fdfind :
mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat
ln -s /usr/bin/fdfind ~/.local/bin/fd
# Activer zsh comme shell par défaut :
chsh -s $(which zsh)
# macOS
brew install zsh fzf bat ripgrep fd jqLes outils suivants s'installent indépendamment : starship · neovim · zoxide · mise · eza · lazydocker (optionnel)
Plugins zsh
# Debian/Ubuntu (WSL)
sudo apt install zsh-autosuggestions zsh-syntax-highlighting
# macOS
brew install zsh-autosuggestions zsh-syntax-highlightingThèmes bat Catppuccin
mkdir -p "$(bat --config-dir)/themes"
cd "$(bat --config-dir)/themes"
curl -Lo 'Catppuccin Latte.tmTheme' 'https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Latte.tmTheme'
curl -Lo 'Catppuccin Macchiato.tmTheme' 'https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Macchiato.tmTheme'
bat cache --buildClés SSH
Si des clés existent sur une autre machine/distro, les copier dans ~/.ssh/ puis fixer les permissions :
chmod 700 ~/.ssh && chmod 600 ~/.ssh/*Sinon, générer une paire minimale :
ssh-keygen -t ed25519Le .zshrc charge automatiquement les clés au démarrage via ssh-add. Il ne bloque pas si aucune clé n'existe, mais l'agent SSH sera vide.
Font — JetBrainsMono Nerd Font, à installer côté hôte :
# Windows (scoop)
scoop bucket add nerd-fonts && scoop install nerd-fonts/JetBrainsMono-NF# macOS (brew)
brew install --cask font-jetbrains-mono-nerd-fontTerminal — WezTerm, installé côté hôte.
WSL — config WezTerm minimale pour premier démarrage
Si WezTerm ouvre cmd.exe au lieu de WSL, créer un stub minimal temporaire (PowerShell) :
mkdir -Force "$env:USERPROFILE\.config\wezterm" | Out-Null
@"
local wezterm = require("wezterm")
local config = wezterm.config_builder()
config.default_prog = { "wsl.exe" }
return config
"@ | Set-Content "$env:USERPROFILE\.config\wezterm\wezterm.lua"Ce fichier sera écrasé par le stub définitif (dofile vers WSL) à la fin de l'installation.
Ce sont des dotfiles personnels amenés à diverger — forker d'abord le repo sur GitHub, puis cloner le fork :
# Forker d'abord https://github.com/PierreLouisPAUGAM/dotfiles sur GitHub, puis :
git clone --bare https://github.com/<VOTRE-USER>/dotfiles.git ~/.dotfiles
alias dot='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
dot config status.showUntrackedFiles no
dot checkoutSi
dot checkoutéchoue à cause de fichiers existants, les sauvegarder ou les supprimer puis relancer.
# Optionnel : identité git dédiée au repo dotfiles (sans --global)
git --git-dir=$HOME/.dotfiles --work-tree=$HOME config user.name "Prénom Nom"
git --git-dir=$HOME/.dotfiles --work-tree=$HOME config user.email "[email protected]"Claude Code — les instructions dotfiles sont gérées via le système de mémoire projet, scopé à ~/ (ne pollue pas les projets sous ~/repos/). Sur une nouvelle machine, demander à Claude de lire ~/.claude/dotfiles-claude.md et de le sauvegarder en mémoire.
Initialiser le thème :
mkdir -p ~/.config
echo macchiato > ~/.config/themePremier lancement Neovim
Prérequis : build-essential (gcc, make) pour treesitter, Node.js (via mise) pour Mason.
Au premier nvim, plusieurs choses s'installent automatiquement :
- lazy.nvim installe ~39 plugins
- Mason installe ~18 LSP/formatters
- treesitter compile ~31 parsers
Attendre que tout finisse, quitter, puis relancer une seconde fois pour vérifier que tout est propre.
Si des erreurs Mason rouges apparaissent → vérifier node --version et gcc --version.
WSL — stub WezTerm définitif côté Windows
mkdir -p /mnt/c/Users/<WIN-USER>/.config/wezterm
cat > /mnt/c/Users/<WIN-USER>/.config/wezterm/wezterm.lua << 'EOF'
return dofile("\\\\wsl$\\Ubuntu-24.04\\home\\<WSL-USER>\\.config\\wezterm\\wezterm.lua")
EOFRemplacer <WIN-USER> par le nom d'utilisateur Windows (echo $(/mnt/c/Windows/System32/cmd.exe /C "echo %USERNAME%" 2>/dev/null | tr -d '\r')) et <WSL-USER> par le nom d'utilisateur Linux (whoami).
macOS — rien de spécial, tout fonctionne directement après le clone.
dot status # voir les changements
dot add ~/.zshrc # stager un fichier modifié
dot commit -m "update zshrc" # commiter
dot push # pousser
dot pull # récupérer depuis l'autre machine
Ctrl+Shift+Pdans WezTerm bascule l'ensemble de la stack entre dark et light.
Catppuccin Macchiato (dark) / Latte (light), appliqué de manière cohérente sur tous les outils.
Le fichier ~/.config/theme (non traqué) contient le flavour actif et sert de source de vérité :
~/.config/theme ← "macchiato" ou "latte" (runtime, non traqué)
│
├── starship : config runtime régénérée dans ~/.cache/starship.toml (precmd)
├── wezterm : lit le fichier au chargement de la config
├── nvim : lit le fichier au démarrage + FocusGained
├── bat : BAT_THEME mis à jour à chaque prompt (precmd)
└── fzf : couleurs relues à chaque prompt (precmd)
theme-toggle écrit la nouvelle flaveur dans ~/.config/theme et touche le fichier WezTerm pour déclencher un reload. Les mises à jour de starship, bat et fzf sont gérées par les hooks precmd du shell — aucun fichier traqué n'est modifié.
| Fonctionnalité | Description |
|---|---|
| dot-status | Notification WezTerm au démarrage si des changements dotfiles sont en attente |
| Smart padding | Le padding WezTerm est retiré automatiquement pour les TUI fullscreen (nvim, htop, btop, tmux…) |
| docker-sync | Crée/met à jour les contextes Docker depuis les hosts marqués # docker dans ~/.ssh/config |
| hardtime.nvim | Hints pour améliorer les habitudes Vim (mode hint, seuil à 4 répétitions) |
| Claude Code statusline | Statusline custom theme-aware : répertoire, branche, modèle, barre de contexte, lignes +/−, durée |
.zshrc Shell config (cross-platform)
.config/
├── starship.toml Prompt template (palette par défaut : macchiato)
├── fzf/
│ ├── catppuccin-macchiato Couleurs fzf dark
│ └── catppuccin-latte Couleurs fzf light
├── wezterm/
│ └── wezterm.lua Terminal config (cross-platform)
└── nvim/ Neovim (LazyVim)
.local/bin/
├── theme-toggle Bascule de thème
└── dot-status État dotfiles (toast wezterm)
.claude/
├── settings.json Config Claude Code (statusline)
├── statusline.sh Statusline custom theme-aware
└── dotfiles-claude.md Instructions Claude Code (scopées au projet)
Fichiers runtime (non traqués)
| Fichier | Rôle |
|---|---|
~/.config/theme |
Flavour actif (macchiato ou latte) |
~/.cache/starship.toml |
Config starship générée avec la bonne palette |
| Aspect | WSL | macOS |
|---|---|---|
| Plugins zsh | /usr/share/ (apt) |
/opt/homebrew/share/ (brew) |
sed -i |
sed -i "..." |
sed -i '' "..." |
| WezTerm config | Stub Windows → dofile vers WSL | Directement ~/.config/wezterm/wezterm.lua |
WezTerm default_prog |
wsl.exe -d Ubuntu-24.04 |
Non nécessaire |
WezTerm front_end |
Software |
Default (WebGpu) |
Les conditions OS sont gérées dans les fichiers eux-mêmes (uname, wezterm.target_triple).
Distribué sous licence MIT.