💥 Blazing fast terminal file manager written in Rust, based on async I/O.
Go to file
2023-07-30 12:34:31 +08:00
config feat: make folder openable 2023-07-27 08:08:09 +08:00
docs feat: switch sorting by key; precalculate and cache directory size when sorting by size; use BTreeMap to improve performance 2023-07-25 11:31:34 +08:00
src feat: use std::io::stdout() 2023-07-30 12:34:31 +08:00
.gitignore first commit 2023-07-08 19:46:43 +08:00
build.sh fix: build error on linux 2023-07-19 09:08:36 +08:00
Cargo.lock feat: support for Überzug++ for image previews with X11/wayland environment (#12) 2023-07-30 11:53:40 +08:00
Cargo.toml feat: switch sorting by key; precalculate and cache directory size when sorting by size; use BTreeMap to improve performance 2023-07-25 11:31:34 +08:00
cspell.json feat: support for Überzug++ for image previews with X11/wayland environment (#12) 2023-07-30 11:53:40 +08:00
LICENCE first commit 2023-07-08 19:46:43 +08:00
README.md feat: support for Überzug++ for image previews with X11/wayland environment (#12) 2023-07-30 11:53:40 +08:00

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 configurable 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)
  • jq (optional, for JSON preview)
  • unar (optional, for archive preview)
  • ffmpegthumbnailer (optional, for video thumbnails)
  • 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 jq unarchiver ffmpegthumbnailer fd ripgrep fzf zoxide

macOS

Install the dependencies with Homebrew:

brew install jq unar ffmpegthumbnailer 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

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 ☑️ Überzug++ required
foot Sixel ☑️ Überzug++ required
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.

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.