Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,454 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Open Yasa - Yazi With A Machine Layer

Open Yasa is Hasna's public fork of Yazi. It keeps Yazi's async terminal file manager core and adds an Open Machines-aware entry layer for browsing across local and remote machines.

This fork intentionally stays close to upstream Yazi. The Hasna Open Yasa distribution is licensed under Apache-2.0; the upstream Yazi MIT license text is preserved in LICENSE-MIT, and upstream authorship remains credited in this repository's history and package metadata.

Open Machines Integration

When Open Yasa starts without an explicit path, it opens a top-level machine chooser before normal file browsing. Each entry shows the Open Machines slug, friendly/display name when available, route kind, status, and platform.

  • Local machine entries enter the current working directory through the real local filesystem, so local browsing remains the normal Yazi fast path.
  • Remote machine entries enter sftp://<machine-id>/...; the SFTP service is resolved dynamically through the machines route command from @hasna/machines when it is installed and configured.
  • Remote file operations use Yazi's existing SFTP provider. Listing, reading, writing, copy, move, rename, delete, and symlink behavior are available only when the resolved SSH/SFTP route authenticates successfully.
  • Remote SFTP host keys are checked against the user's ~/.ssh/known_hosts by default. Add or verify host keys through your normal SSH/Open Machines trust flow before browsing a new remote machine; no_cert_verify = true remains an explicit opt-out for trusted private environments.
  • If Open Machines is unavailable, Open Yasa falls back to a local machine entry and still works as a local terminal file manager.
  • Unreachable or unauthenticated machines surface through Yazi's existing folder error state. Open Machines-generated SFTP services use a shorter connection timeout than static vfs.toml services.
  • Adding and connecting machines is handled by the Open Machines CLI, for example machines manifest add, machines setup --apply, and machines sync --apply. The Open Yasa chooser re-reads topology on refresh, so newly connected machines appear without fork-specific private state.

Configuration default:

[open_yasa]
machines_layer = true

Run yazi /some/path to bypass the machine chooser and start directly in a local or supported VFS path.

Hidden Files

Open Yasa shows dotfiles by default. Press . to toggle their visibility for the current session. To hide dotfiles by default instead, use the supported manager setting:

[mgr]
show_hidden = false

On Unix, Open Yasa uses the first applicable config path in this order:

  1. An absolute $YAZI_CONFIG_HOME/yazi.toml.
  2. An absolute $XDG_CONFIG_HOME/yazi/yazi.toml.
  3. ~/.config/yazi/yazi.toml.

[general] show_hidden is obsolete and ignored; configure this setting only under [mgr].

Build And Install

cargo build --release --locked --bin yazi --bin ya
install -Dm755 target/release/yazi ~/.local/bin/open-yasa
install -Dm755 target/release/ya ~/.local/bin/open-yasa-ya
ln -sf ~/.local/bin/open-yasa ~/.local/bin/yasa
ln -sf ~/.local/bin/open-yasa-ya ~/.local/bin/yasa-ya

The upstream-compatible yazi and ya binaries are still built. Hasna installs the fork under open-yasa/open-yasa-ya plus the short yasa/yasa-ya aliases to avoid replacing upstream Yazi unless that is intentional.

GitHub release automation builds open-yasa-* draft/nightly artifacts. Store publishing to Winget or Snap is disabled until Open Yasa has dedicated package identities and release credentials.

Upstream Sync

This repository tracks upstream Yazi through the read-only upstream remote:

git fetch upstream
git merge upstream/main

Keep fork-specific Open Yasa work in feature branches and PRs against hasna/yasa; do not push to upstream.

Yazi - ⚡️ Blazing Fast Terminal File Manager

Yazi (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.

💡 A new article explaining its internal workings: Why is Yazi Fast?

  • 🚀 Full Asynchronous Support: All I/O operations are asynchronous, CPU tasks are spread across multiple threads, making the most of available resources.
  • 💪 Powerful Async Task Scheduling and Management: Provides real-time progress updates, task cancellation, and internal task priority assignment.
  • 🖼️ Built-in Support for Multiple Image Protocols: Also integrated with Überzug++ and Chafa, covering almost all terminals.
  • 🌟 Built-in Code Highlighting and Image Decoding: Combined with the pre-loading mechanism, greatly accelerates image and normal file loading.
  • 🔌 Concurrent Plugin System: UI plugins (rewriting most of the UI), functional plugins, custom previewer/preloader/spotter/fetcher; Just some pieces of Lua.
  • ☁️ Virtual Filesystem: Remote file management, custom search engines.
  • 📡 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.
  • 📦 Package Manager: Install plugins and themes with one command, keeping them up-to-date, or pin them to a specific version.
  • 🧰 Integration with ripgrep, fd, fzf, zoxide
  • 💫 Vim-like input/pick/confirm/which/notify component, auto-completion for cd paths
  • 🏷️ Multi-Tab Support, Cross-directory selection, Scrollable Preview (for videos, PDFs, archives, code, directories, etc.)
  • 🔄 Bulk Rename/Create, Archive Extraction, Visual Mode, File Chooser, Git Integration, Mount Manager
  • 🎨 Theme System, Mouse Support, Drag and Drop, Trash Bin, Custom Layouts, CSI u, OSC 52
  • ... and more!
example.mp4

Project status

Public beta, can be used as a daily driver.

Yazi is currently in heavy development, expect breaking changes.

Documentation

Discussion

Image Preview

Platform Protocol Support
kitty (>= 0.28.0) Kitty unicode placeholders ✅ Built-in
iTerm2 Inline images protocol ✅ Built-in
WezTerm Inline images protocol ✅ Built-in
Konsole Kitty old protocol ✅ Built-in
foot Sixel graphics format ✅ Built-in
Ghostty Kitty unicode placeholders ✅ Built-in
Windows Terminal (>= v1.22.10352.0) Sixel graphics format ✅ Built-in
st with Sixel patch Sixel graphics format ✅ Built-in
Warp (macOS/Linux only) Inline images protocol ✅ Built-in
Tabby Inline images protocol ✅ Built-in
VSCode Inline images protocol ✅ Built-in
Rio (>= 0.3.9) Kitty unicode placeholders ✅ Built-in
Black Box Sixel graphics format ✅ Built-in
Bobcat Inline images protocol ✅ Built-in
X11 / Wayland Window system protocol ☑️ Überzug++ required
Fallback ASCII art (Unicode block) ☑️ Chafa required (>= 1.16.0)

See https://yazi-rs.github.io/docs/image-preview for details.

Special Thanks

RustRover logo

Thanks to RustRover team for providing open-source licenses to support the maintenance of Yazi.

Active code contributors can contact @sxyazi to get a license (if any are still available).

License

Yazi is MIT-licensed. For the upstream license text, see LICENSE-MIT.

About

Hasna OSS machine-aware Yazi fork with Open Machines integration.

Topics

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages