{"repo":"sxyazi/yazi","free":true,"listed":false,"github":"https://github.com/sxyazi/yazi","clone":"git clone https://github.com/sxyazi/yazi.git","description":"💥 Blazing fast terminal file manager written in Rust, based on async I/O.","language":"Rust","stars":41396,"topics":["android","asyncio","cli","command-line","concurrency","cross-platform","developer-tools","file-explorer","file-manager","filesystem","linux","macos","neovim","productivity","rust","terminal","tui","vim","windows"],"license":"MIT","category":"dev_tool","readme_excerpt":"<div align=\"center\">\n\t<sup>Special thanks to:</sup><br>\n\n| <a href=\"https://go.warp.dev/yazi\" target=\"_blank\"><img alt=\"Warp sponsorship\" width=350 src=\"https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-02.png\"><br><b>Warp, built for coding with multiple AI agents</b><br><sup>Available for macOS, Linux and Windows</sup></a> |\n| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n\n</div>\n\n## Yazi - ⚡️ Blazing Fast Terminal File Manager\n\nYazi (means \"duck\") 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.\n\n💡 A new article explaining its internal workings: [Why is Yazi Fast?](https://yazi-rs.github.io/blog/why-is-yazi-fast)\n\n- 🚀 **Full Asynchronous Support**: All I/O operations are asynchronous, CPU tasks are spread across multiple threads, making the most of available resources.\n- 💪 **Powerful Async Task Scheduling and Management**: Provides real-time progress updates, task cancellation, and internal task priority assignment.\n- 🖼️ **Built-in Support for Multiple Image Protocols**: Also integrated with Überzug++ and Chafa, covering almost all terminals.\n- 🌟 **Built-in Code Highlighting and Image Decoding**: Combined with the pre-loading mechanism, greatly accelerates image and normal file loading.\n- 🔌 **Concurrent Plugin System**: UI plugins (rewriting most of the UI), functional plugins, custom previewer/preloader/spotter/fetcher; Just some pieces of Lua.\n- ☁️ **Virtual Filesystem**: Remote file management, custom VFS provider, custom search engines.\n- 📡 **Data Distribution Service**: Built on a client-server architecture (no additional server process required), integrated with a Lua-based publish-subscribe model, achieving cross-instance communication and state persistence.\n- 📦 **Package Manager**: Install plugins and themes with one command, keeping them up-to-date, or pin them to a specific version.\n- 🧰 Integration with ripgrep, fd, fzf, zoxide\n- 💫 Vim-like input/pick/confirm/which/notify component, auto-completion for cd paths\n- 🏷️ Multi-Tab Support, Cross-directory selection, Scrollable Preview (for videos, PDFs, archives, code, directories, etc.)\n- 🔄 Bulk Rename/Create, Archive Extraction, Visual Mode, File Chooser, [Git Integration](https://github.com/yazi-rs/plugins/tree/main/git.yazi), [Mount Manager](https://github.com/yazi-rs/plugins/tree/main/mount.yazi)\n- 🎨 Theme System, Mouse Support, [Drag and Drop](https://yazi-rs.github.io/docs/dnd), Trash Bin, Custom Layouts, CSI u, OSC 52, CSI 2031\n- ... and more!\n\nhttps://github.com/sxyazi/yazi/assets/17523360/92ff23fa-0cd5-4f04-b387-894c12265cc7\n\n## Project status\n\nPublic beta, can be used as a daily driver.\n\nYazi is currently in heavy development, expect breaking changes.\n\n## Documentation\n\n- Usage: https://yazi-rs.github.io/docs/installation\n- Features: https://yazi-rs.github.io/features\n\n## Discussion\n\n- Discord Server (English mainly): https://discord.gg/qfADduSdJu\n- Telegram Group (Chinese mainly): https://t.me/yazi_rs\n\n## Image Preview\n\n| Platform                                                                     | Protocol                               | Support                                |\n| ---------------------------------------------------------------------------- | -------------------------------------- | -------------------------------------- |\n| [kitty](https://github.com/kovidgoyal/kitty) (>= 0.28.0)                     | [Kitty unicode placeholders][kgp]      | ✅ Built-in                            |\n| [iTerm2](https://iterm2.com)                                                 | [Inline images protocol][iip]          | ✅ Built-in                            |\n| [WezTerm](https://github.com/wez/wezterm)                                    | [Inline images protocol][iip]          | ✅ Built-in                            |\n| [Konsole](https://invent.kde.org/utilities/konsole)                          | [Kitty old protocol][kgp-old]          | ✅ Built-in                            |\n| [foot](https://codeberg.org/dnkl/foot)                                       | [Sixel graphics format][sixel]         | ✅ Built-in                            |\n| [Ghostty](https://github.com/ghostty-org/ghostty)                            | [Kitty unicode placeholders][kgp]      | ✅ Built-in                            |\n| [Windows Terminal](https://github.com/microsoft/terminal) (>= v1.22.10352.0) | [Sixel graphics format][sixel]         | ✅ Built-in                            |\n| [st with Sixel patch](https://github.com/bakkeby/st-flexipatch)              | [Sixel graphics format][sixel]         | ✅ Built-in                            |\n| [Warp](https://www.warp.dev) (macOS/Linux only)                              | [Inline images protocol][iip]          | ✅ Built-in                            |\n| [Tabby](https://github.com/Eugeny/tabby)                                     | [Inline images protocol][iip]          | ✅ Built-in                            |\n| [VSCode](https://github.com/microsoft/vscode)                                | [Inline images protocol][iip]          | ✅ Built-in                            |\n| [Rio](https://github.com/raphamorim/rio) (>= 0.3.9)                          | [Kitty unicode placeholders][kgp]      | ✅ Built-in                            |\n| [Black Box](https://gitlab.gnome.org/raggesilver/blackbox)                   | [Sixel graphics format][sixel]         | ✅ Built-in                            |\n| [Bobcat](https://github.com/ismail-yilmaz/Bobcat)                            | [Inline images protocol][iip]          | ✅ Built-in                            |\n| X11 / Wayland                                                                | Window system protocol                 | ☑️ [Überzug++][ueberzug] required      |\n| Fallback                                                                     | [ASCII art (Unicode block)][ascii-art] | ☑️ [Chafa][chafa] required (>= 1.16.0) |\n\nSee https://yazi-rs.github.io/docs/image-preview for details.\n\n<!-- Protocols -->\n\n[kgp]: https://sw.kovidgoyal.net/kitty/graphics-protocol/#unicode-placeholders\n[kgp-old]: https://github.com/sxyazi/yazi/blob/main/yazi-adapter/src/drivers/kgp_old.rs\n[iip]: https://iterm2.com/documentation-images.html\n[sixel]: https://www.vt100.net/docs/vt3xx-gp/chapter14.html\n[ascii-art]: https://en.wikipedia.org/wiki/ASCII_art\n\n<!-- Dependencies -->\n\n[ueberzug]: https://github.com/jstkdng/ueberzugpp\n[chafa]: https://hpjansson.org/chafa/\n\n## Special Thanks\n\n<img alt=\"RustRover logo\" align=\"right\" width=\"200\" src=\"https://resources.jetbrains.com/storage/products/company/brand/logos/RustRover.svg\">\n\nThanks to RustRover team for providing open-source licenses to support the maintenance of Yazi.\n\nActive code contributors can contact @sxyazi to get a license (if any are still available).\n\n## License\n\nYazi is MIT-licensed. For more information check the [LICENSE](LICENSE) file.\n","default_branch":"main","files":1399,"tree":[".cargo/config.toml",".cargo/release.toml",".envrc",".github/DISCUSSION_TEMPLATE/1-q-a.yml",".github/ISSUE_TEMPLATE/bug.yml",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/feature.yml",".github/dependabot.yml",".github/pull_request_template.md",".github/workflows/cachix.yml",".github/workflows/check.yml",".github/workflows/draft.yml",".github/workflows/lock.yml",".github/workflows/moderate.yml",".github/workflows/no-response.yml",".github/workflows/publish.yml",".github/workflows/test.yml",".github/workflows/validate-issue.yml",".github/workflows/validate-pr.yml",".gitignore",".luarc.json","AGENTS.md","CHANGELOG.md","CLAUDE.md","CODE_OF_CONDUCT.md","CONTRIBUTING.md","Cargo.lock","Cargo.toml","LICENSE","LICENSE-ICONS","README.md","assets/logo.png","assets/yazi.desktop","cspell.json","flake.lock","flake.nix","nix/shell.nix","nix/yazi-unwrapped.nix","nix/yazi.nix","rustfmt.toml","scripts/build.sh","scripts/bump.sh","scripts/icons/generate.lua","scripts/moderate/main.js","scripts/validate-form/main.js","scripts/validate-form/package-lock.json","scripts/validate-form/package.json","snap/snapcraft.yaml","stylua.toml","yazi-actor/Cargo.toml","yazi-actor/README.md","yazi-actor/src/actor.rs","yazi-actor/src/app/accept_payload.rs","yazi-actor/src/app/bootstrap.rs","yazi-actor/src/app/clipboard.rs","yazi-actor/src/app/deprecate.rs","yazi-actor/src/app/dnd.rs","yazi-actor/src/app/focus.rs","yazi-actor/src/app/lua.rs","yazi-actor/src/app/mod.rs","yazi-actor/src/app/mouse.rs","yazi-actor/src/app/passthrough.rs","yazi-actor/src/app/plugin.rs","yazi-actor/src/app/plugin_do.rs","yazi-actor/src/app/quit.rs","yazi-actor/src/app/reflow.rs","yazi-actor/src/app/report.rs","yazi-actor/src/app/resize.rs","yazi-actor/src/app/resume.rs","yazi-actor/src/app/stop.rs","yazi-actor/src/app/theme.rs","yazi-actor/src/app/title.rs","yazi-actor/src/app/update_progress.rs","yazi-actor/src/cmp/arrow.rs","yazi-actor/src/cmp/close.rs","yazi-actor/src/cmp/mod.rs","yazi-actor/src/cmp/show.rs","yazi-actor/src/cmp/trigger.rs","yazi-actor/src/confirm/arrow.rs","yazi-actor/src/confirm/close.rs","yazi-actor/src/confirm/mod.rs","yazi-actor/src/confirm/show.rs","yazi-actor/src/context.rs","yazi-actor/src/core/mod.rs","yazi-actor/src/core/preflight.rs","yazi-actor/src/help/arrow.rs","yazi-actor/src/help/close.rs","yazi-actor/src/help/escape.rs","yazi-actor/src/help/mod.rs","yazi-actor/src/help/toggle.rs","yazi-actor/src/input/close.rs","yazi-actor/src/input/complete.rs","yazi-actor/src/input/escape.rs","yazi-actor/src/input/mod.rs","yazi-actor/src/input/recall.rs","yazi-actor/src/input/remember.rs","yazi-actor/src/input/show.rs","yazi-actor/src/lib.rs","yazi-actor/src/lives/behavior.rs","yazi-actor/src/lives/core.rs","yazi-actor/src/lives/entries.rs","yazi-actor/src/lives/file.rs","yazi-actor/src/lives/filter.rs","yazi-actor/src/lives/finder.rs","yazi-actor/src/lives/folder.rs","yazi-actor/src/lives/input.rs","yazi-actor/src/lives/input_alt.rs","yazi-actor/src/lives/lives.rs","yazi-actor/src/lives/mod.rs","yazi-actor/src/lives/mode.rs","yazi-actor/src/lives/mut_cell.rs","yazi-actor/src/lives/preference.rs","yazi-actor/src/lives/preview.rs","yazi-actor/src/lives/ptr.rs","yazi-actor/src/lives/selected.rs","yazi-actor/src/lives/tab.rs","yazi-actor/src/lives/tabs.rs","yazi-actor/src/lives/task.rs","yazi-actor/src/lives/tasks.rs","yazi-actor/src/lives/which.rs","yazi-actor/src/lives/yanked.rs","yazi-actor/src/mgr/arrow.rs","yazi-actor/src/mgr/back.rs","yazi-actor/src/mgr/bulk_create.rs","yazi-actor/src/mgr/bulk_exit.rs","yazi-actor/src/mgr/bulk_rename.rs","yazi-actor/src/mgr/cd.rs","yazi-actor/src/mgr/close.rs","yazi-actor/src/mgr/copy.rs","yazi-actor/src/mgr/create.rs","yazi-actor/src/mgr/displace.rs","yazi-actor/src/mgr/displace_do.rs","yazi-actor/src/mgr/download.rs","yazi-actor/src/mgr/enter.rs","yazi-actor/src/mgr/escape.rs","yazi-actor/src/mgr/filter.rs","yazi-actor/src/mgr/filter_do.rs","yazi-actor/src/mgr/find.rs","yazi-actor/src/mgr/find_arrow.rs","yazi-actor/src/mgr/find_do.rs","yazi-actor/src/mgr/follow.rs","yazi-actor/src/mgr/forward.rs","yazi-actor/src/mgr/hardlink.rs","yazi-actor/src/mgr/hidden.rs","yazi-actor/src/mgr/hover.rs","yazi-actor/src/mgr/leave.rs","yazi-actor/src/mgr/linemode.rs","yazi-actor/src/mgr/link.rs","yazi-actor/src/mgr/mod.rs","yazi-actor/src/mgr/open.rs","yazi-actor/src/mgr/open_do.rs","yazi-actor/src/mgr/paste.rs","yazi-actor/src/mgr/peek.rs","yazi-actor/src/mgr/quit.rs","yazi-actor/src/mgr/refresh.rs","yazi-actor/src/mgr/remove.rs","yazi-actor/src/mgr/remove_do.rs","yazi-actor/src/mgr/rename.rs","yazi-actor/src/mgr/reveal.rs","yazi-actor/src/mgr/search.rs","yazi-actor/src/mgr/seek.rs","yazi-actor/src/mgr/shell.rs","yazi-actor/src/mgr/sort.rs","yazi-actor/src/mgr/spot.rs","yazi-actor/src/mgr/stash.rs","yazi-actor/src/mgr/suspend.rs","yazi-actor/src/mgr/tab_close.rs","yazi-actor/src/mgr/tab_create.rs","yazi-actor/src/mgr/tab_rename.rs","yazi-actor/src/mgr/tab_swap.rs","yazi-actor/src/mgr/tab_switch.rs","yazi-actor/src/mgr/toggle.rs","yazi-actor/src/mgr/toggle_all.rs","yazi-actor/src/mgr/unyank.rs","yazi-actor/src/mgr/update_files.rs","yazi-actor/src/mgr/update_mimes.rs","yazi-actor/src/mgr/update_paged.rs","yazi-actor/src/mgr/update_peeked.rs","yazi-actor/src/mgr/update_spotted.rs","yazi-actor/src/mgr/update_yanked.rs","yazi-actor/src/mgr/upload.rs","yazi-actor/src/mgr/visual_mode.rs","yazi-actor/src/mgr/watch.rs","yazi-actor/src/mgr/yank.rs","yazi-actor/src/notify/mod.rs","yazi-actor/src/notify/push.rs","yazi-actor/src/notify/tick.rs","yazi-actor/src/pick/arrow.rs","yazi-actor/src/pick/close.rs","yazi-actor/src/pick/mod.rs","yazi-actor/src/pick/show.rs","yazi-actor/src/spot/arrow.rs","yazi-actor/src/spot/close.rs","yazi-actor/src/spot/copy.rs","yazi-actor/src/spot/mod.rs","yazi-actor/src/spot/swipe.rs","yazi-actor/src/tasks/arrow.rs","yazi-actor/src/tasks/cancel.rs","yazi-actor/src/tasks/close.rs","yazi-actor/src/tasks/inspect.rs","yazi-actor/src/tasks/mod.rs","yazi-actor/src/tasks/output.rs","yazi-actor/src/tasks/process_open.rs","yazi-actor/src/tasks/show.rs","yazi-actor/src/tasks/spawn.rs","yazi-actor/src/tasks/update_succeed.rs","yazi-actor/src/which/activate.rs","yazi-actor/src/which/dismiss.rs","yazi-actor/src/which/mod.rs","yazi-adapter/Cargo.toml","yazi-adapter/README.md","yazi-adapter/src/adapter.rs","yazi-adapter/src/drivers/chafa.rs","yazi-adapter/src/drivers/driver.rs","yazi-adapter/src/drivers/drivers.rs","yazi-adapter/src/drivers/iip.rs","yazi-adapter/src/drivers/kgp.rs","yazi-adapter/src/drivers/kgp_old.rs","yazi-adapter/src/drivers/mod.rs","yazi-adapter/src/drivers/sixel.rs","yazi-adapter/src/drivers/ueberzug.rs","yazi-adapter/src/icc.rs","yazi-adapter/src/image.rs","yazi-adapter/src/lib.rs","yazi-binding/Cargo.toml","yazi-binding/README.md","yazi-binding/src/chan.rs","yazi-binding/src/composer.rs","yazi-binding/src/elements/align.rs","yazi-binding/src/elements/area.rs","yazi-binding/src/elements/bar.rs","yazi-binding/src/elements/border.rs","yazi-binding/src/elements/cell.rs","yazi-binding/src/elements/color.rs","yazi-binding/src/elements/constraint.rs","yazi-binding/src/elements/edge.rs","yazi-binding/src/elements/fill.rs","yazi-binding/src/elements/gauge.rs","yazi-binding/src/elements/layout.rs","yazi-binding/src/elements/line.rs","yazi-binding/src/elements/list.rs","yazi-binding/src/elements/mod.rs","yazi-binding/src/elements/pad.rs","yazi-binding/src/elements/rect.rs","yazi-binding/src/elements/row.rs","yazi-binding/src/elements/span.rs","yazi-binding/src/elements/spatial.rs","yazi-binding/src/elements/table.rs","yazi-binding/src/elements/text.rs","yazi-binding/src/elements/wrap.rs","yazi-binding/src/handle.rs","yazi-binding/src/http/http.rs","yazi-binding/src/http/inventory.rs","yazi-binding/src/http/mod.rs","yazi-binding/src/image.rs","yazi-binding/src/iter.rs","yazi-binding/src/lib.rs","yazi-binding/src/macros.rs","yazi-binding/src/permit.rs","yazi-binding/src/position/lua.rs","yazi-binding/src/position/mod.rs","yazi-binding/src/position/offset.rs","yazi-binding/src/position/origin.rs","yazi-binding/src/position/position.rs","yazi-binding/src/process/child.rs","yazi-binding/src/process/command.rs","yazi-binding/src/process/mod.rs","yazi-binding/src/process/output.rs","yazi-binding/src/process/process.rs","yazi-binding/src/process/status.rs","yazi-binding/src/range.rs","yazi-binding/src/runtime.rs","yazi-binding/src/scope.rs","yazi-binding/src/style/mod.rs","yazi-binding/src/style/style.rs","yazi-binding/src/style/style_flat.rs","yazi-boot/Cargo.toml","yazi-boot/README.md","yazi-boot/build.rs","yazi-boot/src/actions/actions.rs","yazi-boot/src/actions/mod.rs","yazi-boot/src/args.rs","yazi-boot/src/boot.rs","yazi-boot/src/lib.rs","yazi-build/Cargo.toml","yazi-build/README.md","yazi-build/build.rs","yazi-build/src/args.rs","yazi-build/src/build.rs","yazi-build/src/common.rs","yazi-build/src/dest.rs","yazi-build/src/help.rs","yazi-build/src/install.rs","yazi-build/src/main.rs","yazi-cli/Cargo.toml","yazi-cli/README.md","yazi-cli/build.rs","yazi-cli/src/args.rs","yazi-cli/src/cache/clear.rs","yazi-cli/src/cache/mod.rs","yazi-cli/src/dds/draw.rs","yazi-cli/src/dds/exec.rs","yazi-cli/src/dds/mod.rs","yazi-cli/src/dds/shot.rs","yazi-cli/src/env/env.rs","yazi-cli/src/env/mod.rs","yazi-cli/src/main.rs","yazi-cli/src/package/add.rs","yazi-cli/src/package/delete.rs","yazi-cli/src/package/dependency.rs","yazi-cli/src/package/deploy.rs","yazi-cli/src/package/git.rs","yazi-cli/src/package/hash.rs","yazi-cli/src/package/install.rs","yazi-cli/src/package/mod.rs","yazi-cli/src/package/package.rs","yazi-cli/src/package/upgrade.rs","yazi-cli/src/shared/mod.rs","yazi-cli/src/shared/shared.rs","yazi-codegen/Cargo.toml","yazi-codegen/README.md","yazi-codegen/src/helper.rs","yazi-codegen/src/lib.rs","yazi-config/Cargo.toml","yazi-config/README.md","yazi-config/preset/README.md","yazi-config/preset/keymap-default.toml","yazi-config/preset/theme-dark.toml","yazi-config/preset/theme-light.toml","yazi-config/preset/vfs-default.toml","yazi-config/preset/yazi-default.toml","yazi-config/src/icon.rs","yazi-config/src/inject.rs","yazi-config/src/keymap/chord.rs","yazi-config/src/keymap/chord_arc.rs","yazi-config/src/keymap/chords.rs","yazi-config/src/keymap/ids.rs","yazi-config/src/keymap/key.rs","yazi-config/src/keymap/keymap.rs","yazi-config/src/keymap/mod.rs","yazi-config/src/keymap/section.rs","yazi-config/src/layout.rs","yazi-config/src/lib.rs","yazi-config/src/mgr/mgr.rs","yazi-config/src/mgr/mod.rs","yazi-config/src/mgr/mouse.rs","yazi-config/src/mgr/ratio.rs","yazi-config/src/mixing.rs","yazi-config/src/open/mod.rs","yazi-config/src/open/open.rs","yazi-config/src/open/open_rule.rs","yazi-config/src/open/open_rule_arc.rs","yazi-config/src/open/open_rule_matcher.rs","yazi-config/src/open/open_rules.rs","yazi-config/src/opener/mod.rs","yazi-config/src/opener/opener.rs","yazi-config/src/opener/opener_rule.rs","yazi-config/src/opener/opener_rule_arc.rs","yazi-config/src/opener/opener_rule_matcher.rs","yazi-config/src/opener/opener_rules.rs","yazi-config/src/opener/opener_rules_arc.rs","yazi-config/src/opener/opener_rules_matcher.rs","yazi-config/src/pattern.rs","yazi-config/src/platform.rs","yazi-config/src/plugin/fetcher.rs","yazi-config/src/plugin/fetcher_arc.rs","yazi-config/src/plugin/fetchers.rs","yazi-config/src/plugin/ids.rs","yazi-config/src/plugin/mod.rs","yazi-config/src/plugin/plugin.rs","yazi-config/src/plugin/preloader.rs","yazi-config/src/plugin/preloader_arc.rs","yazi-config/src/plugin/preloaders.rs","yazi-config/src/plugin/previewer.rs","yazi-config/src/plugin/previewer_arc.rs","yazi-config/src/plugin/previewers.rs","yazi-config/src/plugin/spotter.rs","yazi-config/src/plugin/spotter_arc.rs","yazi-config/src/plugin/spotters.rs","yazi-config/src/popup/confirm.rs","yazi-config/src/popup/help.rs","yazi-config/src/popup/input.rs","yazi-config/src/popup/mod.rs","yazi-config/src/popup/options.rs","yazi-config/src/popup/pick.rs","yazi-config/src/preset.rs","yazi-config/src/preview/mod.rs","yazi-config/src/preview/preview.rs","yazi-config/src/preview/wrap.rs","yazi-config/src/priority.rs","yazi-config/src/selectable.rs","yazi-config/src/selector.rs","yazi-config/src/tasks/mod.rs","yazi-config/src/tasks/tasks.rs","yazi-config/src/tests.rs","yazi-config/src/theme/custom.rs","yazi-config/src/theme/custom_field.rs","yazi-config/src/theme/custom_section.rs","yazi-config/src/theme/custom_section_arc.rs","yazi-config/src/theme/filetype.rs"],"storefront":"/r/sxyazi","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/sxyazi/yazi/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}