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 zoxide
You can install yazi-bin
from AUR if you perfer pre-built binaries:
paru -S yazi-bin ffmpegthumbnailer unarchiver jq poppler fd ripgrep fzf zoxide
If 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 zoxide
Install 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-font
If you prefer to use the most recent code, use --HEAD
flag:
brew install yazi --HEAD
Or you can install Yazi via cargo:
cargo install --git https://github.com/sxyazi/yazi.git
The 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.yazi
Or 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 --release
Then, you can run:
./target/release/yazi
yazi
There 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.