I built a cross-platform file commander in Rust — RCommander now runs on Windows, Linux and macOS

Hi everyone,

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.

https://github.com/anjunar/rust-commander

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.

Thank you so much, that is exactly the kind of feedback that keeps me going.

I also come from the Norton Commander / Total Commander world, so the goal is to build something practical, fast and useful for real daily work.

This is my first Rust project, so I’m still learning, but feedback and help from experienced Rust people is very welcome. :slight_smile:

Does it watch for directory changes (from outside the explorer)?

Yes it watches with notify 8.2.0 for file changes. :slight_smile:

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.