adaptor | ||
app | ||
config | ||
core | ||
shared | ||
.gitignore | ||
build.sh | ||
Cargo.lock | ||
Cargo.toml | ||
cspell.json | ||
LICENCE | ||
README.md | ||
rustfmt.toml |
Yazi - ⚡️ Blazing Fast Terminal File Manager
Yazi ("duck" in Chinese) is a terminal file manager written in Rust, based on non-blocking async I/O. It aims to provide an efficient, user-friendly, and customizable file management experience.
https://github.com/sxyazi/yazi/assets/17523360/740a41f4-3d24-4287-952c-3aec51520a32
⚠️ Note: Yazi is currently in active development and may be unstable. The API is subject to change without prior notice.
Installation
Before getting started, ensure that the following dependencies are installed on your system:
- nerd-fonts (required, for icons)
- ffmpegthumbnailer (optional, for video thumbnails)
- unar (optional, for archive preview)
- jq (optional, for JSON preview)
- poppler (optional, for PDF preview)
- fd (optional, for file searching)
- rg (optional, for file content searching)
- fzf (optional, for directory jumping)
- zoxide (optional, for directory jumping)
Arch Linux
Install with paru or your favorite AUR helper:
paru -S yazi ffmpegthumbnailer unarchiver jq poppler fd ripgrep fzf zoxide
Or, you can replace yazi
with yazi-bin
package if you want pre-built binary instead of compiling by yourself.
macOS
Install the dependencies with Homebrew:
brew install ffmpegthumbnailer unar jq poppler fd ripgrep fzf zoxide
brew tap homebrew/cask-fonts && brew install --cask font-symbols-only-nerd-font
And download the latest release from here. Or you can install Yazi via cargo:
cargo install --git https://github.com/sxyazi/yazi.git
Nix
Nix users can install Yazi from the NUR:
nix-env -iA nur.repos.xyenon.yazi
Or add the following to your configuration:
# configuration.nix
environment.systemPackages = with pkgs; [
nur.repos.xyenon.yazi
];
If you prefer to use the most recent code, use nur.repos.xyenon.yazi-unstable
instead.
Build from source
Execute the following commands to clone the project and build Yazi:
git clone https://github.com/sxyazi/yazi.git
cd yazi
cargo build --release
Then, you can run:
./target/release/yazi
Usage
yazi
If you want to use your own config, copy the config folder to ~/.config/yazi
, and modify it as you like.
Image Preview
Platform | Protocol | Support |
---|---|---|
Kitty | Terminal graphics protocol | ✅ Built-in |
WezTerm | Terminal graphics protocol | ✅ Built-in |
Konsole | Terminal graphics protocol | ✅ Built-in |
iTerm2 | Inline images protocol | ✅ Built-in |
Hyper | Sixel graphics format | ✅ Built-in |
foot | Sixel graphics format | ✅ Built-in |
X11 / Wayland | Window system protocol | ☑️ Überzug++ required |
Fallback | Chafa | ☑️ Überzug++ required |
Yazi automatically selects the appropriate preview method for you, based on the priority from top to bottom.
That's relying on the $TERM
, $TERM_PROGRAM
, and $XDG_SESSION_TYPE
variables, make sure you don't overwrite them by mistake!
For instance, if your terminal is Alacritty, which doesn't support displaying images itself, but you are running on an X11/Wayland environment, it will automatically use the "Window system protocol" to display images -- this requires you to have Überzug++ installed.
Discussion
- Discord Server (English mainly): https://discord.gg/qfADduSdJu
- Telegram Group (Chinese mainly): https://t.me/yazi_rs
TODO
- Add example config for general usage, currently please see my another repo instead
- Integration with fzf, zoxide for fast directory navigation
- Integration with fd, rg for fuzzy file searching
- Documentation of commands and options
- Support for Überzug++ for image previews with X11/wayland environment
- Batch renaming support
License
Yazi is MIT licensed.