sxyazi / yazi
- понедельник, 18 сентября 2023 г. в 00:00:09
⚡️ Blazing fast terminal file manager written in Rust, based on async I/O.
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.
💫 A new article explaining its internal workings: Why Yazi Fast?
Install Yazi from AUR or Arch Linux CN:
paru -S yazi ffmpegthumbnailer unarchiver jq poppler fd ripgrep fzf zoxideYou can install yazi-bin from AUR if you perfer pre-built binaries:
paru -S yazi-bin ffmpegthumbnailer unarchiver jq poppler fd ripgrep fzf zoxideIf you want to use the latest git version, you can install with the following command:
paru -S yazi-git ffmpegthumbnailer unarchiver jq poppler fd ripgrep fzf zoxideInstall Yazi and its dependencies with Homebrew:
brew install yazi ffmpegthumbnailer unar jq poppler fd ripgrep fzf zoxide
brew tap homebrew/cask-fonts && brew install --cask font-symbols-only-nerd-fontIf you prefer to use the most recent code, use --HEAD flag:
brew install yazi --HEADOr you can install Yazi via cargo:
cargo install --git https://github.com/sxyazi/yazi.gitThe Nix package of Yazi is available. Nix users can install Yazi via:
# On NixOS:
nix-env -iA nixos.yazi
# On Non NixOS:
nix-env -iA nixpkgs.yaziOr add the following to your configuration:
# configuration.nix
environment.systemPackages = with pkgs; [
yazi
];You can also manage Yazi's configuration using the home-manager.
Execute the following commands to clone the project and build Yazi:
git clone https://github.com/sxyazi/yazi.git
cd yazi
cargo build --releaseThen, you can run:
./target/release/yaziyaziThere is a wrapper of yazi, that provides the ability to change the current working directory when yazi exiting, feel free to use it:
function ya() {
tmp="$(mktemp -t "yazi-cwd.XXXXX")"
yazi --cwd-file="$tmp"
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
cd -- "$cwd"
fi
rm -f -- "$tmp"
}If you want to use your own config, copy the config folder to ~/.config/yazi, and modify it as you like.
The documentation of all available options
| 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 |
| Mintty (Git Bash) | Inline images protocol | ✅ Built-in |
| Hyper | Sixel graphics format | ✅ Built-in |
| foot | Sixel graphics format | ✅ Built-in |
| Black Box | 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.
Here is a guide for tmux users: Image preview within tmux
See Feature requests for more details.
Yazi is MIT licensed.