Hello everyone,
I’m sharing a custom button I created to launch Czkawka directly from Directory Opus with smart path handling. It’s been very useful to me.
What does this button do?
It launches Czkawka GUI and automatically determines which folders to scan based on your selection:
-
Normal Click (no Shift)
- If any folders are selected (in any panel) → scans only selected folders
- If nothing is selected → scans both Source and Destination folders
-
Shift + Click
- Always scans Source vs Destination, ignoring selection
Useful for quickly finding duplicates between two folders or within a specific selection. If anyone is interested, I’m sharing both the XML and the raw command for manual setup, if that's your preference.
How to Install
- Download and extract Czkawka GUI to your preferred folder.
- Fix the xml by changing every instance of "D:\Path\to\czkawka\czkawka_gui.exe" to the correct location of
czkawka_gui.exeon your system. - Follow Leo's guide on How to use buttons and scripts from this forum.
XML
<?xml version="1.0"?>
<button backcol="none" display="icon" textcol="none">
<label>Czkawka</label>
<tip>Sends selected folders (or both panel paths if nothing is selected) to Czkawka. Hold Shift to force panel comparison</tip>
<icon1>D:\Path\to\czkawka\czkawka_gui.exe,-1</icon1>
<function type="normal">
<instruction>@dirsonly</instruction>
<instruction>@nodeselect</instruction>
<instruction />
<instruction>@set prog="D:\Path\to\czkawka\czkawka_gui.exe"</instruction>
<instruction />
<instruction>// === No Shift: smart behavior ===</instruction>
<instruction>@keydown:none</instruction>
<instruction>@ifsel:any</instruction>
<instruction>@async:{$prog} {allfilepath|noterm} {allfilepathdest|noterm}</instruction>
<instruction>@ifsel:else</instruction>
<instruction>@async:{$prog} {sourcepath|noterm} {destpath|noterm}</instruction>
<instruction />
<instruction>// === With Shift: always compares the two panels ===</instruction>
<instruction>@keydown:shift</instruction>
<instruction>@async:{$prog} {sourcepath|noterm} {destpath|noterm}</instruction>
</function>
</button>
Directory Opus Command
@dirsonly
@nodeselect
@set prog="D:\Path\to\czkawka\czkawka_gui.exe"
// === No Shift: smart behavior ===
@keydown:none
@ifsel:any
@async:{$prog} {allfilepath|noterm} {allfilepathdest|noterm}
@ifsel:else
@async:{$prog} {sourcepath|noterm} {destpath|noterm}
// === With Shift: always compares the two panels ===
@keydown:shift
@async:{$prog} {sourcepath|noterm} {destpath|noterm}
That’s it. I hope you find it useful. ![]()
