Skip to main content

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 fd and content searching with ripgrep run 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.

tip

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:

ShortcutAction
tCreate a new tab
1-9Switch to tab by number
[ / ]Previous / next tab
{ / }Swap tabs left / right
Ctrl-cRename current tab
Ctrl-wClose 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 c to cancel a running task
  • Concurrent execution — tasks run in parallel where possible

Tasks are organized into three categories:

CategoryDescription
File tasksAsync copy, move, and delete operations
Plugin tasksLua plugin workloads running in background
Shell tasksShell 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.

info

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:

ProtocolTerminals
kittykitty, WezTerm (built-in), Konsole
iTerm2iTerm2 on macOS
sixelfoot, WezTerm (sixel), xterm, mlterm, Yaft
Überzug++X11 terminals (urxvt, st, alacritty via X11)
ChafaAny 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 dark field in flavor.toml
  • Install flavors from the community or create your own
  • Manage flavors through ya pack or manual directory placement
  • The active flavor is set in theme.toml

See the Flavors section for a full guide.