Yazi: Difference between revisions
m link added |
Mention where to find yazi plugins. |
||
(6 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
[https://yazi-rs.github.io | <strong>[https://yazi-rs.github.io Yazi]</strong> is a blazing-fast terminal file manager developed in Rust, using non-blocking async I/O for an efficient, user-friendly, and highly customizable file management experience. It features full asynchronous support, distributing CPU tasks across multiple threads to maximize resource use and improve performance. | ||
It offers powerful async task scheduling with real-time progress updates, task cancellation, and internal prioritization. It supports multiple image protocols natively and integrates with [https://github.com/jstkdng/ueberzugpp Überzug++] for broad terminal compatibility. Additionally, Yazi includes built-in code highlighting and image decoding functionalities, along with a pre-loading mechanism to speed up file loading processes. | |||
== Installation == | == Installation == | ||
==== | ==== Using nix-shell ==== | ||
<syntaxhighlight lang="bash" start="3"> | <syntaxhighlight lang="bash" start="3"> | ||
nix-shell -p yazi | nix-shell -p yazi | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== | ==== Using global configuration ==== | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="nix">programs.yazi = { | ||
enable = true; | |||
# There are more options available: | |||
# https://search.nixos.org/options?channel=unstable&type=packages&query=programs.yazi | |||
</syntaxhighlight>After modifying your configuration, apply the changes by running:<syntaxhighlight lang="bash"> | };</syntaxhighlight>After modifying your configuration, apply the changes by running:<syntaxhighlight lang="bash">sudo nixos-rebuild switch</syntaxhighlight> | ||
sudo nixos-rebuild switch | |||
</syntaxhighlight> | |||
==== | ==== Using home configuration ==== | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="nix">programs.yazi = { | ||
enable = true; | |||
# There are more options available: | |||
# https://nix-community.github.io/home-manager/options.xhtml#opt-programs.yazi.enable | |||
</syntaxhighlight>After updating your configuration, apply the changes by running:<syntaxhighlight lang="bash"> | };</syntaxhighlight>After updating your configuration, apply the changes by running:<syntaxhighlight lang="bash"> | ||
home-manager switch | home-manager switch | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Configuration == | == Configuration == | ||
As mentioned above, there are both [https://search.nixos.org/options?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=programs.yazi NixOS options] and [https://nix-community.github.io/home-manager/options.xhtml#opt-programs.yazi.enable home-manager options] for configuring Yazi. | |||
==== | ==== Advanced Example ==== | ||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
programs.yazi = { | programs.yazi = { | ||
enable = true; | enable = true; | ||
settings = { | settings = { | ||
manager = { | manager = { | ||
ratio = [ | |||
1 | |||
4 | |||
3 | |||
]; | |||
sort_by = "natural"; | sort_by = "natural"; | ||
sort_sensitive = true; | |||
sort_reverse = false; | |||
sort_dir_first = true; | |||
linemode = "none"; | |||
show_hidden = true; | show_hidden = true; | ||
show_symlink = true; | show_symlink = true; | ||
Line 50: | Line 51: | ||
preview = { | preview = { | ||
image_filter = "lanczos3"; | image_filter = "lanczos3"; | ||
image_quality = | image_quality = 90; | ||
tab_size = 1; | |||
max_width = 600; | max_width = 600; | ||
max_height = 900; | max_height = 900; | ||
cache_dir = ""; | |||
ueberzug_scale = 1; | ueberzug_scale = 1; | ||
ueberzug_offset = [0 0 0 0]; | ueberzug_offset = [ | ||
0 | |||
0 | |||
0 | |||
0 | |||
]; | |||
}; | }; | ||
Line 62: | Line 70: | ||
bizarre_retry = 5; | bizarre_retry = 5; | ||
}; | }; | ||
}; | |||
} | |||
</syntaxhighlight> | |||
== Tips and Tricks == | |||
==== Location of options ==== | |||
The home manager options are defined in the following [https://nix-community.github.io/home-manager/options.xhtml#opt-programs.yazi.enable Home Manager Options Manual]. | |||
The system-wide options are listed on {{nixos:option|programs.yazi.*}}. | |||
==== Installing Plugins ==== | |||
Many yazi plugins are [https://search.nixos.org/packages?channel=unstable&from=0&size=50&buckets=%7B%22package_attr_set%22%3A%5B%22yaziPlugins%22%5D%2C%22package_license_set%22%3A%5B%5D%2C%22package_maintainers_set%22%3A%5B%5D%2C%22package_platforms%22%3A%5B%5D%7D&sort=relevance&type=packages&query=yaziPlugins packaged in nixpkgs]. | |||
There are some additional yazi plugins packaged in the [https://github.com/lordkekz/nix-yazi-plugins nix-yazi-plugins] flake. It also provides home-manager modules for configuring the plugins' options. | |||
==== Bleeding edge ==== | |||
The upstream repository provides a flake so that Nix users can easily keep up with the bleeding edge.<ref>https://yazi-rs.github.io/docs/installation/#nix-flakes</ref><syntaxhighlight lang="nix"> | |||
inputs = { | |||
yazi.url = "github:sxyazi/yazi"; | |||
}; | |||
</syntaxhighlight>Afterwards, you can use the new package.<syntaxhighlight lang="nix"> | |||
# Global | |||
environment.systemPackages = [ yazi.packages.${pkgs.system}.default ]; | |||
# or, if you use the module | |||
programs.yazi.package = yazi.packages.${pkgs.system}.default; | |||
# Home Manager | |||
home.packages = [ yazi.packages.${pkgs.system}.default ]; | |||
# or, if you use the module | |||
programs.yazi.package = yazi.packages.${pkgs.system}.default; | |||
</syntaxhighlight>Pre-built artifacts are served at https://yazi.cachix.org, so that Nix users don't have to build Yazi on their machine.<ref>https://yazi-rs.github.io/docs/installation/#cache</ref><syntaxhighlight lang="nix"> | |||
nix = { | |||
settings = { | |||
substitute = true; | |||
substituters = [ | |||
"https://yazi.cachix.org" | |||
]; | ]; | ||
trusted-public-keys = [ | |||
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k=" | |||
]; | ]; | ||
}; | }; | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | ==== Stylix integration ==== | ||
<syntaxhighlight lang="nix"> | |||
theme = with config.stylix.base16Scheme; { | theme = with config.stylix.base16Scheme; { | ||
filetype = { | filetype = { | ||
Line 254: | Line 140: | ||
}; | }; | ||
}; | }; | ||
</syntaxhighlight>Stylix can | </syntaxhighlight>Stylix can do it automatically for you if the following option is set:<syntaxhighlight lang="nix"> | ||
stylix.targets.yazi.enable = true; | stylix.targets.yazi.enable = true; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== | ==== Key mapping ==== | ||
<syntaxhighlight lang="nix"> | |||
# Hyprland | |||
bind = [ | bind = [ | ||
"$mod, E, exec, kitty -e yazi" | "$mod, E, exec, kitty -e yazi" | ||
Line 268: | Line 155: | ||
== References == | == References == | ||
[[Category:Applications]] | [[Category:Applications]] | ||
[[Category:File Manager]] | [[Category:File Manager]] |