A cross-platform file manager with dual-pane navigation, tabs, and network drives. Built on Flutter with a native Rust core.
Native Rust core β’ Flutter UI β’ Keyboard-first
Keyboard-driven navigation
|
Dual-pane copy
|
Quick Look preview
|
Live recursive search
|
Browse remote files over SFTP
|
Archiving and browsing archives
|
Built-in terminal per pane
|
Tabs per pane
|
| Listing, recursive search and trash run in a native Rust library, off the UI thread. 100k-file directories open without freezing. | Every operation has a shortcut. Dual panes, tabs, navigation, copy, move, search - all without leaving the keyboard. |
| SMB and SFTP appear in the sidebar as drives. Browse, search, copy and Quick Look remote files like they're local. | Side-by-side panes with independent tabs and pinned locations. Built for moving files between places. |
Three layers, each doing what it's good at:
- Flutter UI for rendering and input. Reactive state via the
signalspackage. - Dart isolates for long-running operations: copy, move, delete, network transfers.
- Rust core (
waydir_core, loaded via FFI) for the heavy filesystem work: directory listing, recursive search, trash.
Persistence sits on drift + sqlite3. The UI thread does no I/O.
Grab the latest build from the Releases page.
Available as .deb, .rpm, .AppImage, and .tar.gz.
# Debian / Ubuntu
sudo dpkg -i waydir-*.deb
# Fedora / RHEL
sudo rpm -i waydir-*.rpm
# AppImage (portable, no install)
chmod +x waydir-*.AppImage && ./waydir-*.AppImage
# Portable tarball
tar -xzf waydir-*-linux-x64.tar.gz && ./waydir.exe installer or portable .zip. Run the installer, or unpack the archive and launch waydir.exe.
.dmg package - drag Waydir to your Applications folder.
β οΈ 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.
- Dual-pane mode with independent tabs in each pane
- Sidebar with favorites, devices, and pinned bookmarks
- A keyboard shortcut for every action
- Copy, move and delete with conflict resolution and live progress
- Trash-safe delete, cancellable mid-flight
- Clipboard integration; ZIP and TAR archives browsable in place
- SMB and SFTP from the sidebar: mount, unmount, reconnect
- Remote files act like local ones: search, copy, preview, "Open with"
- Pooled connections, off-thread transfers, fine-grained progress
- Recursive search that streams results as it scans (substring, regex, glob)
- Quick Look on
Spacefor images, text and code - Per-type default apps and "Open with" picker
- Embedded terminal per pane, opening in the current directory
- Toggle with `Ctrl+`` without leaving the keyboard
- Real PTY backed by Rust, runs your usual shell
- Light, Dark and Nord themes; custom themes via JSON
- Configurable density, sort, hidden files and date format
- Git status bar with branch switching and stash management
Requirements: Flutter 3.35+, Dart 3.10+, Rust stable (rustup).
waydir_core (Rust) handles directory listing, search and delete - there is no Dart fallback.
git clone https://github.com/Waydir/Waydir.git
cd waydir
flutter pub get
cargo build --release --manifest-path rust/waydir_core/Cargo.toml
flutter run -d linuxThe Rust build must be
--releaseand commands run from the repo root. Rebuild and restart the app after editingrust/waydir_core(no hot reload). For packaged builds usescripts/build_waydir_core.sh(Windows:scripts/build_waydir_core_windows.ps1).
flutter build linux # or: windows / macosPRs are welcome. Before opening one:
dart format .flutter analyze- must be clean.flutter test- must be green.
CI runs the same three on every PR (see .github/workflows/). Keep commits focused; small PRs land faster than big ones.
If you're picking up something non-trivial, open an issue first so we can sync on the approach.








