Terminal moderne 2026 : kitty + zsh + atuin + zellij
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.Chercher dans l'historique était lent —
Ctrl+Rtrouve mal quand tu veux une commande d'il y a 3 mois - 2.Les sessions tmux survivaient mal aux redémarrages système
- 3.gnome-terminal laggait sur les longs outputs (200+ lignes de logs)
- 4.bash n'a pas de vraiment bon auto-complétion pour git/docker/kubectl
- 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=vsplitGain : 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) :
# 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_HISTORYLes 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 :
Tablance un picker fzf au lieu d'une liste plate. Tu vois 10 options, tu filtres, tu choisis. - •zoxide :
cd docsdepuis n'importe où va dans le dossierdocsque tu fréquentes le plus. Plus jamais decd ../../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+Rmappé 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 <(curl https://raw.githubusercontent.com/atuinsh/atuin/main/install.sh)
atuin register -u patrice -e ... # optionnel pour syncKiller 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) :
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.warp — Terminal « IA-first » bling-bling. Joli mais lent, fermé, et le AI-completion est inférieur à ce que zsh-autosuggestions fait gratuit.
- 2.xonsh — Shell en Python. Séduisant sur le papier, un cauchemar en pratique (compatibilité scripts bash existants, vitesse).
- 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é
Sur 1 mois après migration, voici les métriques :
| Métrique | Avant | Après |
|---|---|---|
| Temps moyen pour retrouver une commande ancienne | 15 s | 2 s |
| Sessions tmux/zellij perdues après reboot | 3-4 | 0 |
| Lag sur long output (5k lignes) | Visible | Invisible |
| Commandes tapées à la main | 180/j | 95/j (autosuggestions + fzf-tab) |
| Temps total en terminal | 4h10 | 3h22 |
48 minutes économisées par jour, surtout grâce à atuin + zsh-autosuggestions qui évitent de retaper les commandes que tu as déjà faites.
Mon script d'install complet
#!/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.kitty + zsh + atuin + zellij remplacent
bash + tmux + gnome-terminalavec un gain mesurable de 48 min/jour. - 2.atuin seul apporte déjà 60% du gain — priorité absolue.
- 3.Les complétions contextuelles (zsh-autosuggestions + fzf-tab) transforment l'expérience.
- 4.Évite warp, xonsh, nushell pour l'instant — trop jeunes ou fermés.
- 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é :
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