Double Commander: a two-panel file manager built in Pascal, reviewed for adopters
Double Commander is a free cross platform open source file manager with two panels side by side.
At a glance
- What is it?
- Double Commander is a GPL-2.0, cross-platform file manager with two panels side by side, inspired by Total Commander. This review covers what it does, how the repository is laid out, how to get a build, and where it stops being the right tool.
- Who is it for?
- Adopt Double Commander if you want a GPL-2.0, two-panel file manager on Windows, Linux or macOS and you accept that builds come from SourceForge or from build.sh rather than a signed store package. Skip it if you need a file manager embedded in an IDE workflow, or if you want a single-pane, keyboard-light interface.
- Can I use it commercially?
- Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Pascal, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Double Commander solves, and for whom
Single-pane file managers make you move a file by opening two windows or by copying to a clipboard. Double Commander puts two panels side by side, or one above the other, so a copy is a keystroke between two visible directory listings. The README states the project is inspired by Total Commander and adds "some innovative new ideas" on top of that model. That lineage matters: Total Commander users already know the muscle memory, and Double Commander is aimed at people who want that interaction model without being tied to one operating system.
The audience is narrow but real. It is for engineers and administrators who live in a terminal but still want a graphical tree for bulk file operations, and for people moving between Windows, Linux and macOS who do not want to relearn a file manager on each one. The README says it supports 32-bit and 64-bit processors and points to a Supported platforms wiki page for the complete list, so the exact matrix is not in the repository root. It is not for someone who wants a file manager tightly integrated with an editor or a version control client; nothing in the README claims that.
How the two-panel model is actually put together
The repository layout tells you more about the architecture than the README does. There is a src/ directory for the application code, a components/ directory, a plugins/ directory, an sdk/ directory, and a libraries/ directory. The presence of both components/ and plugins/ suggests the file manager core is separable from the pieces that add behaviour, which is consistent with a file manager that has to reach into archives, remote filesystems and platform-specific shells. The language is Pascal, and the root contains fpmake.pp, which ties the build to Free Pascal's package tooling rather than to a C or Rust toolchain.
The platform split is visible in the top-level entries too. There is doublecmd.app/, which is the macOS application bundle layout, and doublecmd.sh, a shell entry point. There are build.bat and build.sh plus clean.bat and clean.sh, so the project ships parallel Windows and Unix build scripts rather than one cross-platform build driver. The default/ directory and doublecmd.help, doublecmd.lpg and doublecmd.png sit alongside language/ and pixmaps/, which is what you would expect from an application that carries its own UI resources and translations. The practical consequence is that a build is not a single command on all systems; the script you run depends on which side you are on.
Installing Double Commander and opening your first two panels
The README does not give build instructions in the repository root. It says to go to the Double Commander download page to download the latest release, and points to a Versions wiki page for the current version. So the first step is a download, not a package manager command, unless your distribution packages it separately.
If you want to build from the repository instead, the root contains build.sh and clean.sh for Unix-like systems and build.bat and clean.bat for Windows. The README does not document the flags these scripts accept, so run them from the repository root and read the script if you need options.
./clean.sh
./build.shOn Windows the equivalent pair is build.bat and clean.bat, run from the same root directory. After a successful Unix build, doublecmd.sh is the shell entry point in the repository root; the README does not document its arguments. The macOS bundle lives under doublecmd.app/.
Once the application starts, the two-panel layout is the default interaction: the README describes it as two panels side by side, or one above the other. The README does not document the keyboard shortcuts for switching panels or copying between them, so treat the in-application help (doublecmd.help) as the reference rather than this article.
Where Double Commander is the wrong tool
The repository ships no installer metadata in its root beyond the install/ directory, and the README routes you to an external download page rather than to a package registry. That means updates are a manual act: you check the Versions page, download, and replace. If your environment requires signed packages from a managed repository, this project does not present itself that way in the repository root.
The two-panel model is also a cost, not just a feature. It assumes a screen wide enough for two directory trees and a user willing to learn a keyboard-driven workflow. On a small laptop display, or for someone who mainly drags files between a browser and a folder, the second panel is dead space. And the platform matrix is not something the README settles: it explicitly defers to a Supported platforms wiki page, so you cannot confirm from the repository root alone that your exact distribution and architecture are covered. Verify that page before you plan a rollout.
Finally, the release naming is worth reading carefully. The recent releases include v1.2.8 labelled "Double Commander 1.2.8 gamma" and v1.2.6 labelled "Double Commander 1.2.6 beta". If you need a stable channel, check the Versions page rather than assuming the newest tag is the one you want.
Double Commander versus Total Commander
The comparison is unavoidable because the README makes it: Double Commander is "inspired by Total Commander and features some innovative new ideas." The difference in approach is licensing and reach. Double Commander is GPL-2.0 and the repository is public, with source, build scripts and language files all present at the top level. Total Commander is the original that defined the two-panel interaction, and the README positions Double Commander as a cross-platform alternative to it rather than a reimplementation with identical behaviour.
That distinction has practical weight. If you need the source available for auditing, patching or repackaging, the GPL-2.0 licence and the visible src/, components/ and plugins/ directories are the reason to pick Double Commander. If you need the exact behaviour and plugin ecosystem of the original, the inspiration note is a warning that the two are not interchangeable. The README does not claim plugin compatibility with Total Commander, and it does not claim feature parity. Treat "inspired by" as the boundary it is.
Maintenance, releases and the GPL-2.0 licence
The repository is not archived, and the last push was on 2026-09-22. Releases are frequent: v1.2.6 in May 2026, v1.2.7 in July 2026, v1.2.8 in August 2026. The cadence is real, but the labels are not uniform: v1.2.6 is marked beta and the two later ones are marked gamma. Anyone planning an upgrade should read the release labels rather than assuming a monotonically improving stable line.
Upgrade cost is mostly operational. Because the README directs users to the download page and the Versions page, there is no package-manager upgrade path described in the repository root. You download, you replace, you keep your configuration. The repository does not document a rollback procedure, so if a gamma build misbehaves, the fallback is to reinstall the previous release from the download page.
The licence is GPL-2.0, and LICENSE.md sits in the repository root. That is a copyleft licence: if you distribute modified binaries, the source obligations follow. This is a summary of the licence identifier, not legal advice. If you intend to bundle Double Commander inside a commercial product, read LICENSE.md and get your own counsel; the repository root gives you the file, not an interpretation.
Editorial conclusion
Adopt Double Commander if you want a GPL-2.0, two-panel file manager on Windows, Linux or macOS and you accept that builds come from SourceForge or from build.sh rather than a signed store package. Skip it if you need a file manager embedded in an IDE workflow, or if you want a single-pane, keyboard-light interface. Before committing, check the Supported platforms wiki page for your exact target, pick the Qt or GTK build deliberately, and open the download page to confirm which release channel (stable or gamma) you are installing.
Frequently asked questions
Is Double Commander free?
Yes. The README describes it as a free cross-platform open source file manager, and the repository is licensed GPL-2.0 with LICENSE.md at the root.
What is Double Commander used for?
It is a file manager with two panels side by side, or one above the other. The README states it is inspired by Total Commander, so it is used for the kind of two-panel file operations that model implies.
What is doublecmd exe?
The repository root contains doublecmd.sh for Unix-like systems and doublecmd.app/ for the macOS bundle. The README does not name a doublecmd.exe file, so the Windows executable name is not confirmed by the repository root.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/doublecmd-doublecmd)