Aller au contenu principal
Terminal moderne 2026 : kitty + zsh + atuin + zellij
Retour au blog
Technique

Terminal moderne 2026 : kitty + zsh + atuin + zellij

Patrice Huetz11 avril 20266 min

J'ai passé 6 mois à migrer mon setup terminal de bash + tmux + gnome-terminal à kitty + zsh + atuin + zellij. Non pas parce que l'ancien était mauvais — il marchait bien. Mais parce que la combinaison moderne m'a fait gagner mesurablement du temps sur 5 frictions quotidiennes qui m'énervaient sans que je m'en rende compte. Voici le setup complet, les fichiers de config qui marchent, et les 3 outils que j'ai essayés et abandonnés.

Pourquoi je suis parti de bash + tmux

Mon ancien setup était solide : bash + tmux + gnome-terminal + fzf. Ça marchait. Mais j'avais 5 frictions récurrentes :

  1. 1.Chercher dans l'historique était lent — Ctrl+R trouve mal quand tu veux une commande d'il y a 3 mois
  2. 2.Les sessions tmux survivaient mal aux redémarrages système
  3. 3.gnome-terminal laggait sur les longs outputs (200+ lignes de logs)
  4. 4.bash n'a pas de vraiment bon auto-complétion pour git/docker/kubectl
  5. 5.Copier du texte sans souris était cauchemardesque

La migration vers le stack moderne résout chacun de ces points. Voici dans l'ordre.

kitty — le terminal GPU-accéléré

kitty utilise le GPU pour rendre le texte, ce qui élimine le lag sur les outputs massifs. Il supporte aussi les images inline (utile pour debug frontend + tests visuels).

Config essentielle (~/.config/kitty/kitty.conf) :

font_family      JetBrainsMono Nerd Font
font_size        12.0

# Scrollback énorme
scrollback_lines 100000

# Clipboard rapide
map ctrl+shift+c copy_to_clipboard
map ctrl+shift+v paste_from_clipboard

# Tabs
enable_audio_bell no
tab_bar_style powerline
tab_powerline_style slanted

# Theme Catppuccin Mocha
include themes/catppuccin-mocha.conf

# URL click
detect_urls yes
url_style single

# Integration tmux-like sans tmux
enabled_layouts splits,tall,fat
map ctrl+shift+enter launch --location=hsplit
map ctrl+shift+\\ launch --location=vsplit

Gain : zéro lag même sur un npm run build qui affiche 5 000 lignes.

zsh + zinit — un shell qui complète vraiment

zsh n'est pas nouveau, mais combiné avec zinit (plugin manager ultra-rapide), il donne des complétions contextuelles qui bash n'a jamais eues.

Config (~/.zshrc extrait) :

zsh
# Zinit
source ~/.local/share/zinit/zinit.git/zinit.zsh

# Plugins essentiels
zinit light zsh-users/zsh-autosuggestions
zinit light zsh-users/zsh-syntax-highlighting
zinit light zsh-users/zsh-completions
zinit light Aloxaf/fzf-tab

# Starship prompt
eval "$(starship init zsh)"

# Atuin
eval "$(atuin init zsh)"

# Zoxide (cd intelligent)
eval "$(zoxide init zsh)"
alias cd='z'

# Historique
HISTSIZE=100000
SAVEHIST=100000
HISTFILE=~/.zsh_history
setopt SHARE_HISTORY

Les 3 killers :

  • zsh-autosuggestions : pendant que tu tapes, il te suggère la commande (en gris) basée sur ton historique. Flèche droite = accepte.
  • fzf-tab : Tab lance un picker fzf au lieu d'une liste plate. Tu vois 10 options, tu filtres, tu choisis.
  • zoxide : cd docs depuis n'importe où va dans le dossier docs que tu fréquentes le plus. Plus jamais de cd ../../projects/foo/docs.

atuin — l'historique qui marche

atuin remplace l'historique bash/zsh par une base SQLite synchronisable. Avantages :

  • Recherche instantanée (avec Ctrl+R mappé sur atuin)
  • Contexte (tu vois où tu as lancé la commande, quelle durée, quel exit code)
  • Sync entre machines (chiffré end-to-end)
  • Stats (tu peux voir tes 100 commandes les plus utilisées)

Install :

bash
bash <(curl https://raw.githubusercontent.com/atuinsh/atuin/main/install.sh)
atuin register -u patrice -e ... # optionnel pour sync

Killer feature : atuin stats me dit que ma commande la plus fréquente est g (mon alias pour git status) avec 1 847 usages. C'est cette donnée qui m'a permis d'optimiser mes alias (voir mon autre article).

zellij — le multiplexer moderne

tmux est une légende. zellij est son successeur en Rust, avec une UX plus moderne : barre en bas qui affiche les raccourcis courants, sessions persistantes natives, layouts déclaratifs en YAML.

Config layout (~/.config/zellij/layouts/dev.kdl) :

kdl
layout {
    default_tab_template {
        pane size=1 borderless=true {
            plugin location="zellij:tab-bar"
        }
        children
        pane size=2 borderless=true {
            plugin location="zellij:status-bar"
        }
    }

    tab name="edit" {
        pane split_direction="vertical" {
            pane
            pane size="30%"
        }
    }
    tab name="git" {
        pane command="lazygit"
    }
    tab name="test" {
        pane command="npm" args="run" "test:watch"
    }
}

Je lance zellij --layout dev et j'ai instantanément 3 tabs (edit, git, test) avec les bonnes commandes dans chacun.

Les 3 outils essayés et abandonnés

  1. 1.warp — Terminal « IA-first » bling-bling. Joli mais lent, fermé, et le AI-completion est inférieur à ce que zsh-autosuggestions fait gratuit.
  2. 2.xonsh — Shell en Python. Séduisant sur le papier, un cauchemar en pratique (compatibilité scripts bash existants, vitesse).
  3. 3.nushell — Prometteur mais trop jeune, j'ai rencontré 4 bugs en 2 jours sur des commandes simples. Je retesterai en 2027.

Le gain total mesuré

Setup terminal moderne — flux
Setup terminal moderne — flux

Sur 1 mois après migration, voici les métriques :

MétriqueAvantAprès
Temps moyen pour retrouver une commande ancienne15 s2 s
Sessions tmux/zellij perdues après reboot3-40
Lag sur long output (5k lignes)VisibleInvisible
Commandes tapées à la main180/j95/j (autosuggestions + fzf-tab)
Temps total en terminal4h103h22

48 minutes économisées par jour, surtout grâce à atuin + zsh-autosuggestions qui évitent de retaper les commandes que tu as déjà faites.

💡
Commence par **atuin seulement**. C'est le gain le plus important et c'est 10 minutes d'install. Les autres outils peuvent venir progressivement.

Mon script d'install complet

bash
#!/bin/bash
# install-terminal-2026.sh
set -e

# kitty
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin

# zsh + zinit
sudo apt install zsh -y
chsh -s $(which zsh)
bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/zdharma-continuum/zinit/HEAD/scripts/install.sh)"

# atuin
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh

# zellij
cargo install --locked zellij

# starship
curl -sS https://starship.rs/install.sh | sh

# zoxide
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh

echo "Reload shell and run 'atuin import zsh' to migrate old history."

Ce qu'il faut retenir

  1. 1.kitty + zsh + atuin + zellij remplacent bash + tmux + gnome-terminal avec un gain mesurable de 48 min/jour.
  2. 2.atuin seul apporte déjà 60% du gain — priorité absolue.
  3. 3.Les complétions contextuelles (zsh-autosuggestions + fzf-tab) transforment l'expérience.
  4. 4.Évite warp, xonsh, nushell pour l'instant — trop jeunes ou fermés.
  5. 5.Script d'install fourni ci-dessus, 10 minutes pour tout mettre en place.

Pour aller plus loin sur les workflows de dev optimisés autour de Claude Code dans un terminal moderne, j'ai écrit un livre dédié :

La Boucle Ralph
La Boucle Ralph

Guide Pratique du Coding Autonome par IA.

Découvrir →
🔒

Soutenez mon travail sur Patreon

Accès anticipé aux articles, contenu exclusif, et la satisfaction de soutenir un auteur indépendant.

Rejoindre — à partir de 3€/mois

Commentaires

Chargement des commentaires...

Laisser un commentaire