{"id":49952691,"url":"https://github.com/waydir/waydir","last_synced_at":"2026-06-11T23:00:39.339Z","repository":{"id":356740312,"uuid":"1233864815","full_name":"Waydir/Waydir","owner":"Waydir","description":"📂 Modern, Keyboard-driven dual-pane file manager, built with Rust and Flutter.","archived":false,"fork":false,"pushed_at":"2026-06-08T22:09:19.000Z","size":25514,"stargazers_count":12,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-08T22:09:55.740Z","etag":null,"topics":["desktop","dual-pane","file-manager","flutter","keyboard-driven","linux","macos","windows"],"latest_commit_sha":null,"homepage":"https://waydir.dev","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Waydir.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-09T13:03:39.000Z","updated_at":"2026-06-08T22:09:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Waydir/Waydir","commit_stats":null,"previous_names":["mikolajbadyl/waydir","waydir/waydir"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/Waydir/Waydir","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waydir%2FWaydir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waydir%2FWaydir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waydir%2FWaydir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waydir%2FWaydir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Waydir","download_url":"https://codeload.github.com/Waydir/Waydir/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Waydir%2FWaydir/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34221150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop","dual-pane","file-manager","flutter","keyboard-driven","linux","macos","windows"],"created_at":"2026-05-17T20:13:20.875Z","updated_at":"2026-06-11T23:00:39.334Z","avatar_url":"https://github.com/Waydir.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Waydir\n\nA cross-platform file manager with dual-pane navigation, tabs, and network drives. Built on Flutter with a native Rust core.\n\nNative Rust core • Flutter UI • Keyboard-first\n\n[![Flutter](https://img.shields.io/badge/Flutter-3.35+-02569B?logo=flutter\u0026logoColor=white\u0026style=flat-square)](https://flutter.dev)\n[![Dart](https://img.shields.io/badge/Dart-3.10+-0175C2?logo=dart\u0026logoColor=white\u0026style=flat-square)](https://dart.dev)\n[![Platform](https://img.shields.io/badge/Linux%20%7C%20Windows%20%7C%20macOS-informational?style=flat-square)]()\n\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/hero.png\" alt=\"Waydir\" width=\"820\"\u003e\n\u003c/p\u003e\n\n## See it in action\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cb\u003eKeyboard-driven navigation\u003c/b\u003e\u003cbr\u003e\n      \u003cimg src=\"docs/gifs/navigating.gif\" alt=\"Navigating\"\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cb\u003eDual-pane copy\u003c/b\u003e\u003cbr\u003e\n      \u003cimg src=\"docs/gifs/dual_pane_copy.gif\" alt=\"Dual-pane copy\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cb\u003eQuick Look preview\u003c/b\u003e\u003cbr\u003e\n      \u003cimg src=\"docs/gifs/quick_look_images.gif\" alt=\"Quick Look\"\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cb\u003eLive recursive search\u003c/b\u003e\u003cbr\u003e\n      \u003cimg src=\"docs/gifs/search.gif\" alt=\"Search\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cb\u003eBrowse remote files over SFTP\u003c/b\u003e\u003cbr\u003e\n      \u003cimg src=\"docs/gifs/sftp.gif\" alt=\"SFTP\"\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cb\u003eArchiving and browsing archives\u003c/b\u003e\u003cbr\u003e\n      \u003cimg src=\"docs/gifs/archive_browsing.gif\" alt=\"Archiving and browsing archives\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cb\u003eBuilt-in terminal per pane\u003c/b\u003e\u003cbr\u003e\n      \u003cimg src=\"docs/gifs/terminal.gif\" alt=\"Built-in terminal\"\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" align=\"center\"\u003e\n      \u003cb\u003eTabs per pane\u003c/b\u003e\u003cbr\u003e\n      \u003cimg src=\"docs/gifs/tabs.gif\" alt=\"Tabs\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## ✨ Highlights\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003eNative Rust core\u003c/h3\u003e\n      Listing, recursive search and trash run in a native Rust library,\n      off the UI thread. 100k-file directories open without freezing.\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003eKeyboard-first\u003c/h3\u003e\n      Every operation has a shortcut. Dual panes, tabs, navigation,\n      copy, move, search - all without leaving the keyboard.\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003eNetwork-native\u003c/h3\u003e\n      SMB and SFTP appear in the sidebar as drives. Browse, search,\n      copy and Quick Look remote files like they're local.\n    \u003c/td\u003e\n    \u003ctd width=\"50%\" valign=\"top\"\u003e\n      \u003ch3\u003eDual panes, tabs, bookmarks\u003c/h3\u003e\n      Side-by-side panes with independent tabs and pinned locations.\n      Built for moving files between places.\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## 🦀 How it works\n\nThree layers, each doing what it's good at:\n\n- **Flutter UI** for rendering and input. Reactive state via the `signals` package.\n- **Dart isolates** for long-running operations: copy, move, delete, network transfers.\n- **Rust core** (`waydir_core`, loaded via FFI) for the heavy filesystem work: directory listing, recursive search, trash.\n\nPersistence sits on `drift` + `sqlite3`. The UI thread does no I/O.\n\n## 📦 Install\n\nGrab the latest build from the [Releases](https://github.com/Waydir/Waydir/releases) page.\nWaydir is distributed as native desktop packages and portable archives; pick the\nasset that matches your OS and CPU architecture.\n\n#### Ubuntu / Debian\n\n**Recommended - package repository (auto-updates via `apt upgrade`):**\n\n```bash\ncurl -1sLf 'https://dl.cloudsmith.io/public/waydir/waydir-project/setup.deb.sh' | sudo -E bash\nsudo apt install waydir\n```\n\n**Or grab a single `.deb` from [Releases](https://github.com/Waydir/Waydir/releases):**\n\n```bash\nsudo dpkg -i waydir-*.deb\n```\n\n#### Fedora / RHEL\n\n**Recommended - package repository (auto-updates via `dnf upgrade`):**\n\n```bash\ncurl -1sLf 'https://dl.cloudsmith.io/public/waydir/waydir-project/setup.rpm.sh' | sudo -E bash\nsudo dnf install waydir\n```\n\n**Or grab a single `.rpm` from [Releases](https://github.com/Waydir/Waydir/releases):**\n\n```bash\nsudo rpm -i waydir-*.rpm\n```\n\n#### openSUSE\n\n**Recommended - package repository (auto-updates via `zypper update`):**\n\n```bash\ncurl -1sLf 'https://dl.cloudsmith.io/public/waydir/waydir-project/setup.rpm.sh' | sudo -E bash\nsudo zypper install waydir\n```\n\n**Or grab a single `.rpm` from [Releases](https://github.com/Waydir/Waydir/releases):**\n\n```bash\nsudo rpm -i waydir-*.rpm\n```\n\n#### Other Linux\n\nPortable builds from [Releases](https://github.com/Waydir/Waydir/releases) run on any\ndistro:\n\n```bash\n# AppImage (portable, no install)\nchmod +x waydir-*.AppImage \u0026\u0026 ./waydir-*.AppImage\n\n# Portable tarball\ntar -xzf waydir-*-linux-x64.tar.gz \u0026\u0026 ./waydir\n```\n\nPackage builds integrate with your desktop launcher. AppImage and tarball builds\nare portable and can be launched from any folder.\n\nPackage repository hosting is graciously provided by [Cloudsmith](https://cloudsmith.com),\nthe only fully hosted, cloud-native, universal package management solution.\n\n#### Windows\n\n`.exe` installer or portable `.zip`. Run the installer, or unpack the archive\nand launch `waydir.exe`.\n\n#### macOS\n\n`.dmg` package - drag Waydir to your Applications folder.\n\n\u003e ⚠️ **macOS is not regularly tested.** Linux and Windows are the primary development and testing targets. macOS builds come from the same codebase but expect rough edges - please report any issues.\n\n## 🎯 Features\n\n#### Navigation \u0026 layout\n- Dual-pane mode with independent tabs in each pane\n- Sidebar with favorites, devices, and pinned bookmarks\n- A keyboard shortcut for every action\n\n#### File operations\n- Copy, move and delete with conflict resolution and live progress\n- Trash-safe delete, cancellable mid-flight\n- Clipboard integration; ZIP and TAR archives browsable in place\n\n#### Network drives\n- SMB and SFTP from the sidebar: mount, unmount, reconnect\n- Remote files act like local ones: search, copy, preview, \"Open with\"\n- Pooled connections, off-thread transfers, fine-grained progress\n\n#### Search \u0026 preview\n- Recursive search that streams results as it scans (substring, regex, glob)\n- Quick Look on `Space` for images, text and code\n- Per-type default apps and \"Open with\" picker\n\n#### Terminal\n- Embedded terminal per pane, opening in the current directory\n- Toggle with `Ctrl+\\`` without leaving the keyboard\n- Real PTY backed by Rust, runs your usual shell\n\n#### Customization \u0026 integrations\n- Light, Dark and Nord themes; custom themes via JSON\n- Configurable density, sort, hidden files and date format\n- Lua plugins for context actions, toolbar buttons, status bars, the top Plugins menu and shortcuts\n- Git status bar with branch switching and stash management\n\n## 🔌 Plugins\n\nPlugins let you add small workflow actions without rebuilding Waydir. They are\nplain Lua folders with a `manifest.json` and an `init.lua`; drop one into the\nplugins folder, then reload from **Preferences -\u003e Plugins**.\n\nPlugin actions can appear in the selection context menu, background context\nmenu, top **Plugins** menu, location toolbar, keybindings, and compact global or\nper-pane status bars. They run in a sandbox and request explicit permissions for\nexternal commands (`exec`) or file operations (`fs`).\n\nStart with [docs/plugins.md](docs/plugins.md) or the working examples in\n[docs/examples/plugins/](docs/examples/plugins/). Fuller plugin documentation is\navailable at [waydir.dev/docs/plugins](https://waydir.dev/docs/plugins/).\n\n## 🔧 Build from source\n\n**Requirements:** Flutter 3.35+, Dart 3.10+, Rust stable ([rustup](https://rustup.rs)).\n`waydir_core` (Rust) handles directory listing, search and delete - there is no Dart fallback.\n\n```bash\ngit clone https://github.com/Waydir/Waydir.git\ncd waydir\nflutter pub get\ncargo build --release --manifest-path rust/waydir_core/Cargo.toml\nflutter run -d linux\n```\n\n\u003e The Rust build must be `--release` and commands run from the repo root.\n\u003e Rebuild and restart the app after editing `rust/waydir_core` (no hot reload).\n\u003e For packaged builds use `scripts/build_waydir_core.sh` (Windows: `scripts/build_waydir_core_windows.ps1`).\n\n#### Release binary\n\n```bash\nflutter build linux    # or: windows / macos\n```\n\n## 🤝 Contributing\n\nPRs are welcome. Before opening one:\n\n1. `dart format .`\n2. `flutter analyze` - must be clean.\n3. `flutter test` - must be green.\n\nCI runs the same three on every PR (see `.github/workflows/`). Keep commits focused; small PRs land faster than big ones.\n\nIf you're picking up something non-trivial, open an issue first so we can sync on the approach.\n\n## 📄 License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaydir%2Fwaydir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaydir%2Fwaydir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaydir%2Fwaydir/lists"}