RoyiFileManager is a portable, keyboard workflow focused, dual pane file manager inspired by SublimeText.
It began as a fork of fman by Michael Herrmann.
The File Manager focuses on:
- Minimalistic and focused UI.
- High performance to generate reactive experience.
- Commands through Command Center, grouped by category (
File: Copy,View: Toggle hidden files). - Keyboard oriented workflow.
- Advanced search tools with known syntax (
fzf/fd/ripgrep/Everything). - Easy integration of 3rd party tools (Text Editor, File Comparison, Grep Tool, File Find Tool, etc...).
- Developed and verified on Windows OS.
Development prioritizes correctness and performance.
Each release is validated by hundreds of correctness tests and accompanied by a detailed performance report.
- Open the latest release.
- Download
RoyiFileManager-<version>-windows-x86_64.zip. - Extract the ZIP file to a folder of your choice.
- Run
RoyiFileManager.exefrom the extracted folder.
Tip
RoyiFileManager is portable. Keep the extracted files together and move the folder whenever needed.
Significant additions compared with fman:
- Data Safety: Safeguards protect data integrity during file copies and moves, archive operations and work with file system links.
- Performance: A file system abstraction with an order of magnitude faster performance to deliver reactive experience. The system utilizes bulk
NTFS/ReFSlisting for a snapshot model, virtual rows and background filter/find projections. See measured gains and remaining limits. - Fuzzy Find Files: Open the Quicksearch dialog with Ctrl+F or search recursively with Ctrl+Shift+F. Supports
fzfstyle exact terms, anchors, negation,AND/ORand match highlights, separately from the substring/glob Filter Bar. Using Toggle find result metadata adds metadata to results. See Usage, Syntax and Performance. - Search Files: Press Alt+F7 for
ripgrepbased filename and content search in Glob, Literal or RegEx mode. Extended mode adds Size and Date Modified columns with header filters. See Search Files Usage. - Find Files with
fd: Press Shift+F7 forfdbased filename search with date, size, type and traversal filters. See Find Files Usage. - Search Files with Everything: Built in Everything search engine for an instant file and content search based on pre built database. Add indexed folders with Add folder to Everything database, then press Ctrl+E to search them with Everything syntax, highlights and metadata. Use Manage Everything database folders for a fully featured bookmarks manager. See Everything Usage.
- Pane Filter / Files Filter: Type to filter file names with globs, anchors and negation with
fzfinspired syntax. See Pane Filter Usage. - Selection Tools: Use + / - to add / remove items from selection with live preview. See selection usage.
- Hidden Files: Windows panes reuse entry attributes to reduce repeated visibility checks. Press Ctrl+R after external hidden-attribute changes. See Hidden Files.
- QuickView Layer: Press Ctrl+Q to preview the cursor file over the other pane: images, PDFs, CSV/TSV tables, plain text, MarkDown and highlighted source code. See QuickView Usage.
- UI Components: New building blocks that expand what plug-ins can do. Plug-in UI guide.
- Batch File Renamer: Fully featured batch file renamer with option for filtering and sorting and renaming using Python's
f stringlike syntax. Use{UUID},{HASHID}or{SQIDS}for an eight-character random ID, stable throughout the rename session. See usage and syntax. - File Attributes Editor: Edit Read-only, Hidden, System and other attributes of the chosen items from the keyboard. See usage.
- Copy / Move Files with Robocopy: Utilizing Windows'
robocopyfor multi threaded copy or move of files. Optimized for large transfers. See installation and native behavior. - Live Refresh During File Operations: Run Toggle live refresh during file operations to refresh panes once when Copy, Move or Delete ends instead of continuously. Copying 10,000 small files took 10 s instead of 64-71 s. See Configuration.
- Docked Panel: Controlling states and operations. Exposed to be used by Plug-In's.
- Favorites: Press Ctrl+B for a fully featured Favorites Manager, built entirely with the plug-in APIs.
- Recent Commands: Ctrl+Shift+P pins the last three commands run from the palette.
- Process Pane: Run Show OS' processes for a flat Name/PID list of the system running processes. Press F8 to force terminate it. Right-click a file or folder and choose Find blocking processes to see possible users, not necessarily blockers, with regular user rights. See Process Pane Usage.
- Extended Status Bar: Press Ctrl+S to toggle file statistics of the active pane in the status bar.
- Sync Panes: Select Sync pane location in Command Center to sync the inactive pane to the active pane's path.
- Checksum Files: Generate checksum files for selected files or folders, including subfolders and verify file integrity against existing checksum files. Compatible with Total Commander and Double Commander. See algorithms and TC/DC compatibility status.
- File Hash: Press Ctrl+H for centered checksum output; use Calculate File Hash By to pick an algorithm in QuickSearch, then view the result. See File Hash Calculation Usage.
- Directory Size: Press Ctrl+Shift+D to toggle progressive directory size calculation in both panes, or Ctrl+Shift+Enter for a one time total of selected directories. See Directory Size Usage.
- New File: Press Ctrl+N to create an empty file without opening an editor.
- Text Editor / Viewer: Set external programs on F4 / F3, configured through Set text editor / Set text viewer in the Command Center. Presets include CudaText, Ecode, EmEditor, Notepad++, Notepad 4, Royi Text Editor. See Text Editor and Viewer Usage.
- File / Folder Comparators: Configure independent external tools with Set file comparator / Set folder comparator, then run Compare files / Compare folders. Presets include Beyond Compare, Meld, WinMerge, SmartSynchronize. See Comparator Usage.
- Archive Transfers: Extraction progress and cancellation, with verified output before source deletion when moving out of an archive or between archives of the same format. See Archive Transfers Usage.
- Unpack Archive: Works like
Extract Herein7-Zip/WinRar. See Unpack Archive Usage.
Tip
Open an issue for new feature requests.
Feedback is highly appreciated.
Important
We take performance seriously. We aim to minimize Time to render a pane (TTRP), Time to apply a filter (TTAF) and Time to apply a fuzzy find (TTAFF).
Results of the performance test suite per version. Run time in [ms], lower is better.
| Test | 0.9.0 | 0.9.3 | 0.10.3 | 0.13.0 | 0.13.1 |
|---|---|---|---|---|---|
| Pane Load - Small Folder | 42.23 | 35.20 | 33.93 | 37.52 | 37.02 |
| Pane Load - Large Folder | 1001.54 | 964.31 | 958.23 | 758.64 | 266.27 |
| Filter Bar - Small Folder | 8.96 | 8.69 | 8.79 | 10.88 | 9.77 |
| Filter Bar - Large Folder | 332.17 | 331.28 | 338.27 | 364.34 | 289.53 |
| Fuzzy Find - Small Folder | 4.57 | 4.55 | 7.17 | 5.28 | 4.86 |
| Fuzzy Find - Large Folder | 408.47 | 407.95 | 441.02 | 357.29 | 354.73 |
| Fuzzy Find (Recursive) | 91.68 | 91.05 | 91.91 | 92.54 | 91.28 |
| QuickView Images - Small Folder | 122.09 | 122.61 | 122.04 | 121.09 | 116.37 |
| QuickView Images - Large Folder | 123.29 | 121.14 | 135.86 | 119.46 | 120.62 |
| QuickView Text - Small Folder | - | - | 133.03 | 129.55 | 132.58 |
| QuickView Text - Large Folder | - | - | 129.47 | 132.35 | 131.50 |
| Selections - Small Folder | 15.67 | 15.24 | 15.35 | 16.18 | 15.79 |
| Selections - Large Folder | 88.18 | 87.85 | 88.36 | 89.65 | 87.64 |
| Selections Readback | 1994.44 | 1974.51 | 73.78 | 69.86 | 65.65 |
| Navigation | 7.17 | 7.36 | 7.17 | 7.05 | 6.97 |
| Refresh / Selection | 581.97 | 592.84 | 585.17 | 355.99 | 67.59 |
Comparisons with previous versions:
CelebA folder with about 200,000 entries. Lower is better.
| Measurement | Ver. 0.8.0 | Ver. 0.8.1 | Ver. 0.9.0 | Ver. 0.9.2 | Ver. 0.13.0 | Ver. 0.13.1 |
|---|---|---|---|---|---|---|
| First Populated Pane Paint | 8.949 [s] | 5.663 [s] | 0.583 [s] | 0.506 [s] | 0.257 [s] | 0.112 [s] |
| Metadata Loading Complete | 17.786 [s] | 11.498 [s] | 0.571 [s] | 0.494 [s] | 0.244 [s] | 0.100 [s] |
| Post Paint Qt Commit Work | 2.765 [s] | 1.282 [s] | 0 [s] | 0 [s] | 0 [s] | 0 [s] |
| Settled Working Memory | 771.1 [MiB] | 771.3 [MiB] | 165.6 [MiB] | 167.4 [MiB] | 160.3 [MiB] | 145.5 [MiB] |
Note
- Version
0.13.1added nativeCnatural sort keys and skips re-sorting and table resets when a refreshed folder is unchanged. - Version
0.13.0added a nativeCdirectory parser and a fast path forNTFS/ReFSfolders. - Versions
0.10.xoptimized the existing code and remove the slower legacy paths. - Version
0.9.xis the 1st version with the new architecture (Snapshot Architecture) which is an order of magnitude faster than0.8.1. - Version
0.8.1had an improved version of thefmanarchitecture (About 30% faster than0.8.0). - Version
0.8.0and earlier versions use thefmanarchitecture and performance.
Tip
Development uses micromamba.
Micromamba is largely compatible with conda. See the Mamba documentation.
The examples below use conda and micromamba interchangeably.
The development workflow is based on architecture design by the developer and implementation by an AI Agent.
Each feature is first defined by its tests and success criteria.
The design is reviewed by at least 2 different agents.
Implementation is verified by tests and 2 agent reviewers.
Install a conda compatible package manager then create the environment:
conda create -f environment.yml
conda activate RoyiFileManager
python build.py runAfter updating an existing checkout, refresh its runtime dependencies with
conda env update -f environment.yml before running it.
The lock can also be generated manually:
conda-lock lock -f environment.yml -p win-64See DEVELOPMENT.md for more details.
python build.py package checks the frozen PDF helper's binary pipes and rendered
page pixels before creating the ZIP. A failed or timed-out check stops packaging.
Build the documentation:
python build.py docStart the local documentation server from the repository root:
micromamba run mkdocs serve --dev-addr 127.0.0.1:8000