Yazi : le gestionnaire de fichiers en terminal avec aperçus asynchrones
Naviguer dans une arborescence de fichiers depuis le terminal se fait souvent avec cd et ls enchaînés à l’aveugle, ou avec ranger, dont les aperçus Python peuvent geler l’interface sur un gros fichier. Yazi résout ce problème avec une architecture entièrement asynchrone : les aperçus se chargent en arrière-plan, sans jamais bloquer la navigation.
Ce que fait Yazi
Yazi (« duck » en chinois) est un gestionnaire de fichiers pour terminal (TUI) écrit en Rust, basé sur des I/O non bloquantes. Toutes les opérations d’entrée/sortie sont asynchrones et les tâches CPU sont réparties sur plusieurs threads, avec ordonnancement des tâches en temps réel (progression, annulation, priorités).
Il propose une navigation façon vim (hjkl), un panneau d’aperçu scrollable pour de nombreux types de fichiers, un système de plugins concurrent en Lua, un gestionnaire de paquets intégré pour installer plugins et thèmes, et un support natif de plusieurs protocoles d’image de terminal (Kitty, iTerm2, Sixel, avec fallback via Überzug++ ou Chafa). Le projet est en beta publique mais annoncé comme utilisable en quotidien ; des changements cassants sont encore possibles.
Installation
# Arch Linux
sudo pacman -S yazi ffmpeg 7zip jq poppler fd ripgrep fzf zoxide resvg imagemagick
# Debian / Ubuntu — dépôt APT officiel
curl -fsSL https://yazi-rs.github.io/builds/yazi-keyring.gpg | sudo tee /usr/share/keyrings/yazi-keyring.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/yazi-keyring.gpg] https://yazi-rs.github.io/builds/ stable main' | sudo tee /etc/apt/sources.list.d/yazi.list >/dev/null
sudo apt update && sudo apt install yazi
# Fedora / CentOS Stream 9+ / RHEL 9+ (dépôt COPR non officiel)
dnf copr enable lihaohong/yazi
dnf install yazi
# macOS (Homebrew)
brew install yazi ffmpeg-full sevenzip jq poppler fd ripgrep fzf zoxide resvg imagemagick-full font-symbols-only-nerd-font
brew link ffmpeg-full imagemagick-full -f --overwrite
# Windows (Scoop)
scoop install yazi
scoop install ffmpeg 7zip jq poppler fd ripgrep fzf zoxide resvg imagemagick
# Windows (WinGet)
winget install sxyazi.yazi
winget install Gyan.FFmpeg 7zip.7zip jqlang.jq oschwartz10612.Poppler sharkdp.fd BurntSushi.ripgrep.MSVC junegunn.fzf ajeetdsouza.zoxide ImageMagick.ImageMagick
# Cargo (toutes plateformes, nécessite make et gcc)
cargo install --force yazi-build
Sur Windows, la documentation officielle déconseille explicitement d’installer la dépendance file via Scoop ou Chocolatey : ces gestionnaires ne gèrent pas correctement les noms de fichiers Unicode. La méthode recommandée est d’installer Git for Windows et de pointer la variable d’environnement YAZI_FILE_ONE vers le file.exe fourni avec Git.
Une fois installé, lancez simplement :
yazi
q pour quitter, F1 ou ~ pour l’aide contextuelle.
Wrapper shell recommandé
Yazi ne change pas le répertoire de votre shell à la fermeture par défaut. Le projet fournit un wrapper y (bash/zsh/fish/nushell/PowerShell…) qui lit le CWD final via un fichier temporaire :
function y() {
local tmp cwd; tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
command yazi "$@" --cwd-file="$tmp"
IFS= read -r -d '' cwd < "$tmp"
[ "$cwd" != "$PWD" ] && [ -d "$cwd" ] && builtin cd -- "$cwd" || builtin true
command rm -f -- "$tmp"
}
Utilisez ensuite y pour lancer Yazi : en quittant avec q, votre shell se retrouve dans le dossier où vous étiez. Q quitte sans changer de répertoire.
Raccourcis essentiels
| Touche | Action |
|---|---|
h j k l | Naviguer (parent / bas / haut / entrer dans le dossier) |
g puis g | Aller en haut de la liste |
G | Aller en bas de la liste |
z | Changer de dossier via fzf |
Z | Changer de dossier via zoxide |
Space | Sélectionner / désélectionner |
v / V | Mode visuel (sélection / désélection) |
y / x | Copier (yank) / couper |
p / P | Coller / coller en écrasant |
d / D | Mettre à la corbeille / supprimer définitivement |
a | Créer un fichier (terminer par / pour un dossier) |
r | Renommer |
s / S | Chercher par nom (fd) / par contenu (ripgrep) |
t puis t | Nouvel onglet |
[ / ] | Onglet précédent / suivant |
w | Ouvrir le gestionnaire de tâches en arrière-plan |
La liste complète des raccourcis (tri, liens symboliques, hardlinks, copie de chemins…) est dans le fichier de configuration par défaut keymap-default.toml.
Aperçus asynchrones
Le panneau de droite affiche un aperçu scrollable selon le type de fichier :
- Images — décodage intégré, affiché nativement dans les terminaux compatibles (Kitty, iTerm2, WezTerm, Ghostty, Konsole, foot, Windows Terminal ≥ v1.22, VSCode…), avec repli sur Überzug++ (X11/Wayland) ou Chafa (ASCII art) ailleurs
- Vidéos — miniature extraite via
ffmpeg - PDF — rendu des pages via
poppler - Archives (zip, 7z, rar…) — contenu listé sans extraction, via
7-Zip - JSON — aperçu formaté via
jq - SVG — rendu via
resvg - Code source avec coloration syntaxique intégrée, et polices/HEIC/JPEG XL via ImageMagick
Chaque aperçu tourne en tâche asynchrone : naviguer rapidement dans une arborescence pleine de vidéos ou d’archives volumineuses ne fige jamais l’interface, contrairement à des outils qui lancent leurs prévisualisations de façon bloquante.
Intégrations
Yazi s’appuie sur des outils CLI externes plutôt que de réinventer chaque brique :
- fzf — navigation rapide dans les sous-dossiers (
z), nécessite fzf ≥ 0.53.0 - zoxide — saut vers un répertoire visité récemment (
Z), nécessite fzf en complément - fd — recherche de fichiers par nom (
s) - ripgrep — recherche de fichiers par contenu (
S) - Neovim — pas d’intégration officielle, mais des plugins communautaires comme yazi.nvim (mikavilpas) ouvrent Yazi dans une fenêtre flottante avec synchronisation bidirectionnelle (fichier survolé dans Yazi = buffer mis en évidence dans Neovim)
Gestionnaire de paquets et plugins
Yazi embarque son propre gestionnaire de paquets pour installer plugins et thèmes (« flavors ») directement depuis GitHub :
# Installer un plugin
ya pkg add yazi-rs/plugins:git
# Installer un thème
ya pkg add yazi-rs/flavors:catppuccin-mocha
Des plugins officiels existent pour l’intégration git dans le panneau (git.yazi) ou la gestion des points de montage (mount.yazi).
Configuration
Trois fichiers TOML, à placer dans ~/.config/yazi/ (Unix) ou %AppData%\yazi\config\ (Windows) :
yazi.toml— configuration généralekeymap.toml— raccourcis claviertheme.toml— thème de couleurs
# ~/.config/yazi/yazi.toml
[mgr]
show_hidden = true
Pour ajouter un raccourci sans écraser les valeurs par défaut, utilisez prepend_keymap ou append_keymap plutôt que keymap :
# ~/.config/yazi/keymap.toml
[mgr]
prepend_keymap = [
{ on = "T", run = "plugin toggle-pane max-preview", desc = "Agrandir/réduire l'aperçu" },
]
+ Les points forts
- Aperçus non bloquants — la navigation reste fluide même avec des vidéos, PDF ou archives volumineuses en aperçu
- Support image natif étendu — protocoles Kitty, iTerm2, Sixel gérés directement, sans dépendance systématique à Überzug++
- Navigation vim-like —
hjkl, mode visuel, recherche//?, sorts en,+ touche — familier pour qui utilise déjà Vim/Neovim - Intégrations natives — fzf, zoxide, fd, ripgrep branchés directement sur des touches dédiées, pas besoin de les scripter soi-même
- Gestionnaire de paquets intégré — installer un plugin ou un thème en une commande (
ya pkg add), sans copier-coller de fichiers manuellement - Multi-plateforme — Linux, macOS, Windows, avec des paquets officiels et communautaires larges
- Les points faibles
- Beta active — le projet prévient lui-même que des changements cassants peuvent survenir entre versions
- Dépendances optionnelles nombreuses — pour profiter de tous les aperçus (vidéo, PDF, JSON, SVG, archives), il faut installer ffmpeg, poppler, jq, resvg, 7-Zip et ImageMagick séparément
- Installation Windows plus délicate — la détection MIME correcte impose de passer par le
file.exede Git for Windows, pas par un simplescoop install file - Pas d’intégration Neovim officielle — il faut passer par un plugin tiers (yazi.nvim), avec le niveau de maintenance que cela implique
- Documentation en anglais uniquement, avec un vocabulaire de configuration (Lua, TOML, concepts de « flavors ») qui demande un temps d’adaptation
Comparaison avec les alternatives
| Yazi | ranger | lf | |
|---|---|---|---|
| Langage | Rust | Python | Go |
| Aperçus | Asynchrones, natifs (images/vidéo/PDF/archives) | Synchrones, via scripts externes | Basiques, via scripts externes |
| Performance sur gros dossiers | Élevée | Peut ralentir (Python) | Élevée |
| Plugins | Lua, gestionnaire de paquets intégré | Python, sans gestionnaire dédié | Aucun système de plugin natif |
| Maturité | Beta active | Très mature, peu maintenu récemment | Mature |
| Protocoles image natifs | Kitty, iTerm2, Sixel | Via w3mimgdisplay / ueberzug | Via ueberzug |
En résumé
Yazi cible les utilisateurs qui naviguent beaucoup en terminal et veulent des aperçus riches sans les blocages typiques de ranger. L’architecture Rust/async le rend nettement plus réactif sur de gros dossiers ou des fichiers volumineux, au prix d’un projet encore en beta et d’une série de dépendances optionnelles à installer pour en tirer tout le potentiel.
Voir aussi :