id = "yazi" name = "Yazi" homepage = "https://yazi-rs.github.io" description = "A terminal file manager written in Rust, based on non-blocking async I/O." # The project's own logo, assets/logo.png in its repository. icon = "https://raw.githubusercontent.com/sxyazi/yazi/main/assets/logo.png" # Two binaries: the file manager and `ya`, its CLI companion (package manager, # `ya emit`, `ya pkg`). Both are installed by every package of Yazi — this # machine's Homebrew keg has bin/yazi and bin/ya side by side. executables = ["yazi", "ya"] [dotfiles] # https://yazi-rs.github.io/docs/configuration/overview — the config directory # is "~/.config/yazi/" on Unix-like systems and "%AppData%\yazi\config\" on # Windows, holding yazi.toml, keymap.toml, theme.toml and init.lua; # $YAZI_CONFIG_HOME overrides it. yazi-fs/src/xdg.rs is the code behind that: # `load_config_dir()` takes $YAZI_CONFIG_HOME when it is absolute, else on Unix # `$XDG_CONFIG_HOME/yazi` falling back to `~/.config/yazi`, and on Windows # `dirs::config_dir()/yazi/config`. # # The Unix half reads $XDG_CONFIG_HOME, so it is [configHome]. Windows nests # one level deeper than any named root can express, hence the second line. On # Windows [configHome] resolves to `%APPDATA%\yazi`, one level above the real # config directory — its only other child is `state`, carved out below. paths = [ "[configHome]/yazi/", "%APPDATA%/yazi/config/", ] # plugins/ and flavors/ are checkouts, not config: the plugin docs put each # plugin in "the `plugins` subdirectory of Yazi's configuration directory" and # the flavor docs put each flavor in `flavors/`, and `ya pkg` installs and # upgrades both from the package.toml manifest that stays behind in the config # directory. Reinstalling from that manifest is the supported way to get them # onto another machine. # # The rest is the state and cache directories from the same xdg.rs: # `load_state_dir()` is `$XDG_STATE_HOME/yazi` or `~/.local/state/yazi` on Unix # and `dirs::data_dir()/yazi/state` — i.e. `%APPDATA%\yazi\state` — on Windows; # `load_cache_dir()` is `$XDG_CACHE_HOME/yazi` or `~/.cache/yazi` on Unix and # `dirs::cache_dir()/yazi`, `%LOCALAPPDATA%\yazi`, on Windows. There is no # named root for the state home, so that one is spelled literally. exclude = [ "[configHome]/yazi/plugins/", "[configHome]/yazi/flavors/", "%APPDATA%/yazi/config/plugins/", "%APPDATA%/yazi/config/flavors/", "~/.local/state/yazi/", "%APPDATA%/yazi/state/", "[xdgCache]/yazi/", "%LOCALAPPDATA%/yazi/", ] # A file manager with no accounts: yazi.toml is openers, previewers and # layout, keymap.toml is bindings, theme.toml is colours. Yazi writes no # credential file. secret = [] # No machine_lines. The openers and previewers in yazi.toml name commands # rather than machine paths, and the ratios, bindings and colours are the point # of carrying the directory at all. [commands] format = 1 label = "Open Yazi" description = "Start the Yazi file manager in a directory. Event reporting and client-id options are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "help" kind = "help" revision = "yazi --help (local)" evidence = """ Usage: yazi [OPTIONS] [ENTRIES]... [ENTRIES]... Set the current working entry --cwd-file Write the cwd on exit to this file --chooser-file Write the selected files to this file on open fired --clear-cache Clear the cache directory --debug Print debug information """ [[commands.field]] id = "entry" label = "Start location" type = "path" path = { kind = "any", role = "input" } position = 0 multiple = true sources = ["help"] [[commands.field]] id = "cwd_file" label = "Write cwd on exit to" type = "path" path = { kind = "file", role = "output" } option = ["--cwd-file"] effect = "overwrite" sources = ["help"] [[commands.field]] id = "chooser_file" label = "Write chosen files to" type = "path" path = { kind = "file", role = "output" } option = ["--chooser-file"] effect = "overwrite" sources = ["help"] [[commands.field]] id = "clear_cache" label = "Clear cache directory" type = "boolean" option = ["--clear-cache"] effect = "delete" sources = ["help"] [[commands.field]] id = "debug" label = "Print debug information" type = "boolean" option = ["--debug"] sources = ["help"] [[commands.task]] id = "open" label = "Open in a directory" fields = ["entry"] [[commands.task]] id = "chooser" label = "Pick files to a list" fields = ["chooser_file", "entry"] required = ["chooser_file"] [[commands.group]] id = "basic" label = "Basic" fields = ["entry", "cwd_file", "chooser_file"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["clear_cache", "debug"]