I wanted to share a small milestone from my current project: RCommander, a Norton Commander / Total Commander inspired file manager written in Rust.
What started as a small experiment has now become a real cross-platform desktop application. It currently runs on:
Windows Linux / Ubuntu macOS
The goal is not to reinvent every file manager feature at once, but to build a fast, clean and practical commander-style file manager with a modern Rust foundation.
Current features include:
dual-pane commander-style layout
file navigation
basic file operations
archive support with unzip and unrar
installer builds
GTK4-based desktop UI
very low memory usage compared to many modern desktop apps
For me, the most exciting part is that Rust feels like a really strong foundation for this kind of native desktop tool. The app already feels lightweight and responsive, and I’m slowly moving it from “cool prototype” toward something I can actually use every day.
There is still a lot to do: better archive integration, a large-file viewer, settings, polished platform-specific packaging, and probably many small UX details that only become visible through real use.
I would be happy to hear feedback from other Rust / desktop app developers:
What would you expect from a modern commander-style file manager?
Are there any Rust crates or architectural patterns you would recommend for this kind of app?
Has anyone here shipped GTK4 apps professionally across Windows, Linux and macOS?
This project has been a lot of fun so far. It is no longer just a demo — it is starting to become a real tool.
It's absolutely awesome. I am a long time fan of Norton Commander and couldn't use Windows without it. Later, I migrated to FAR. I worked on Linux the last decade and implemented some kind of NC using web interface. Now, I'm on Windows again and your tool is available just in time. Thanks again for the nice tool.
Regarding your questions, I do not feel confident in Rust programming, but I believe my fellows will help you.
Congrats on getting it running across Windows, Linux, and macOS. GTK4 across all three platforms is not a small milestone, especially for a first Rust project.
On the directory-watching question that came up, notify is a good default choice. The main thing I would watch for is that the platform backends do not all behave the same way once users point the app at real, busy directories.
On Linux, inotify is per-watch and can run into max_user_watches if you ever move toward recursive watching. On macOS, FSEvents is path-based and a bit coarser. On Windows, ReadDirectoryChangesW can overflow its event buffer on a busy directory and drop events.
For a dual-pane commander UI, if you are mostly watching the two visible directories, you avoid a lot of the recursive-watch pain. The Windows overflow case is still worth handling explicitly though. If the watcher reports an overflow or error, I would treat that as “rescan this pane” instead of assuming every individual event was seen.
Debouncing is also useful. A single save can emit several events, so using notify-debouncer-full or a small coalescing layer can keep the UI from refreshing too aggressively.
One other robustness detail for a file manager: be careful with filenames that are not valid UTF-8. Keeping paths as Path / OsStr internally, and only doing lossy conversion at the display boundary, will save you from some weird edge cases later. File managers are exactly the kind of tool people open when they need to deal with odd files.
Really cool project. Happy to go deeper on any of these if it helps.