1 unstable release
Uses new Rust 2024
| 0.1.0 | Mar 14, 2026 |
|---|
#1139 in Filesystem
460KB
12K
SLoC
Fileman
Fileman is a fast, responsive two-panel file manager built with Rust, egui, and blade-egui. Navigation stays snappy even in large directories by doing all I/O off the UI thread and streaming results into the view.

Features
- Dual-panel layout with independent navigation, history (Alt+Left/Right), and panel swap (Ctrl+U).
- Async directory loading with streaming batches and virtualized list rendering.
- Archive navigation for zip, tar, tar.gz, and tar.bz2 — browse like regular folders, copy files out, or open with system apps. Shared streaming index means only one decompression pass per archive.
- Preview (F3) for text files with syntax highlighting, images (including animated GIF), and archive content listings.
- Inline editor (F4) with syntax highlighting.
- File operations: copy (F5), move (F6), delete (F8), rename (Shift+F6), new file (Shift+F4), new directory (F7).
- Multi-file selection: Insert to mark/unmark, operations work on marked set.
- Search (Alt+F7) with results displayed as a virtual folder.
- Symlink display: shows link targets, broken symlinks highlighted in red.
- File properties (Alt+Enter): permissions, ownership, size, timestamps.
- Theming: external theme files in
themes/(JSON, YAML, or TOML), toggle with F9, pick with F10. - CLI: optional start directory argument,
--helpfor usage.
Keyboard Shortcuts
| Key | Action |
|---|---|
| Enter | Open |
| Shift+Enter | Open with system default app |
| Tab / Ctrl+I | Switch panels |
| Ctrl+U | Swap panels |
| Alt+Left / Alt+Right | Back / forward |
| Backspace / Ctrl+PgUp | Parent folder |
| Ctrl+PgDn | Open selected |
| Ctrl+Left / Ctrl+Right | Open selected dir in other panel |
| F1 | Help |
| F3 | Preview |
| F4 | Edit |
| Shift+F4 | New file |
| F7 | New directory |
| Insert | Mark / unmark |
| Shift+F6 | Rename |
| F5 | Copy |
| F6 | Move |
| F8 | Delete |
| Space | Compute folder size |
| Alt+F7 | Search |
| Alt+Enter | Properties |
| Ctrl+R | Refresh |
| F9 | Toggle theme |
| F10 | Theme picker |
Build and Run
cargo build --release
cargo run --release
Open in a specific directory:
cargo run --release -- /path/to/dir
Enable verbose logging:
RUST_LOG=info cargo run
GPU Backend Notes
If you see NoSupportedDeviceFound, blade-graphics couldn't find a supported GPU backend.
On Linux, this usually means Vulkan drivers aren't available. You can either install Vulkan
drivers or use the GLES fallback:
RUSTFLAGS="--cfg gles" cargo run
App Bundling
Install cargo-bundle from git (the crates.io release has a Windows bug):
cargo install cargo-bundle --git https://github.com/burtonageo/cargo-bundle
Then build the bundle:
cargo bundle --release
On macOS this produces a .app bundle, on Windows an .msi installer.
Icons are configured in Cargo.toml via package.metadata.bundle.icon.
Linux Desktop Integration
Copy the desktop entry and icon to the standard locations:
cp etc/fileman.desktop ~/.local/share/applications/
cp etc/fileman.svg ~/.local/share/icons/hicolor/scalable/apps/fileman.svg
Test Replays
Replay cases live in tests/cases/ and use the RON format. To run a case and emit a snapshot:
cargo run -- --replay tests/cases/preview.ron --snapshot /tmp/replay.png
To run all replay cases:
scripts/replay_runner.sh
To update the reference images:
cp target/test-artifacts/*.png etc/snapshots/tests/
Repository Layout
src/main.rs— app entry point, event loop, directory loadingsrc/archive.rs— container plugins (zip, tar, tar.gz, tar.bz2)src/core.rs— shared types and utilitiessrc/app_state.rs— application statesrc/input.rs— keyboard handlingsrc/ui/— UI components (panel, preview, help)src/image_decode.rs— image decoding (including animated GIF)themes/— external theme filesetc/— desktop entry, icon, test snapshots
Dependencies
~30–54MB
~765K SLoC