Key Features
Async I/O with Tokio
Yazi uses tokio, Rust's asynchronous runtime, to perform all file I/O operations in a non-blocking manner. This means:
- Copying, moving, and deleting large files never freeze the UI
- Archive previews (via 7-Zip) are extracted in the background
- File searching with
fdand content searching withripgreprun as async tasks - The UI remains fully interactive during all operations
The built-in task manager (accessible via T or click the task counter) shows progress for every running async operation.
Heavy file operations (like rsync or custom scripts) can also be offloaded to the task manager using the plugin and shell task types.
Multi-Tab Support
Yazi supports multiple tabs with full session management:
| Shortcut | Action |
|---|---|
t | Create a new tab |
1-9 | Switch to tab by number |
[ / ] | Previous / next tab |
{ / } | Swap tabs left / right |
Ctrl-c | Rename current tab |
Ctrl-w | Close current tab |
Tabs persist their directory paths and can survive restarts when configured in yazi.toml.
Built-in Task Manager
Press T (or click the task counter in the status bar) to open the task manager. It shows all running and queued tasks with:
- Progress bars for copy/move/delete operations
- Status labels for plugin and shell tasks
- Cancellation — press
cto cancel a running task - Concurrent execution — tasks run in parallel where possible
Tasks are organized into three categories:
| Category | Description |
|---|---|
| File tasks | Async copy, move, and delete operations |
| Plugin tasks | Lua plugin workloads running in background |
| Shell tasks | Shell commands spawned by plugins or user actions |
DDS — Data Distribution Service
DDS is a pub-sub messaging system that lets multiple Yazi instances communicate over Unix sockets (or TCP on Windows). When enabled, DDS allows:
- Yanking and pasting files between different Yazi instances
- Bulletin board messages — one instance can broadcast to all others
- Custom events for plugin developers to create multi-instance workflows
Configuration lives in yazi.toml under the [dds] section.
DDS is off by default. Enable it by setting dds.enabled = true in your yazi.toml.
Shell Wrapper (y Function)
Yazi ships with a shell wrapper function (named y) that tracks the working directory when Yazi exits. When you quit Yazi, it writes the last-visited directory to --cwd-file, and the shell wrapper reads that file and changes into it.
This is the single most impactful quality-of-life feature — install the shell wrapper and you'll never manually cd back to where you were.
See the shell wrapper setup guide for installation on Bash, Zsh, Fish, Nushell, PowerShell, and Windows CMD.
Image Preview Protocols
Yazi supports multiple terminal image preview protocols, selected automatically based on the $TERM environment variable:
| Protocol | Terminals |
|---|---|
| kitty | kitty, WezTerm (built-in), Konsole |
| iTerm2 | iTerm2 on macOS |
| sixel | foot, WezTerm (sixel), xterm, mlterm, Yaft |
| Überzug++ | X11 terminals (urxvt, st, alacritty via X11) |
| Chafa | Any terminal (fallback, uses block characters) |
Yazi detects the protocol automatically. You can override it with --image-protocol or configure it in yazi.toml.
Flavor System
Yazi flavors are pre-made theme packages that control colors, icons, and UI styling. Key properties:
- Flavors support dark/light mode auto-detection via the
darkfield inflavor.toml - Install flavors from the community or create your own
- Manage flavors through
ya packor manual directory placement - The active flavor is set in
theme.toml
See the Flavors section for a full guide.