A lightweight CLI drag-and-drop utility for Windows.
100% Native Win32 / OLE • Single Standalone Binary • Peak Working Set < 3MB • Zero Background Bloat / Zero Services
windrop.mp4
Note
Demo video on version v2.0.0
windrop lets you initiate native Windows drag-and-drop operations directly from your terminal or scripts without running background daemons or heavy electron wrappers.
PS C:\Stuff> windrop report.pdf
# Move cursor over Discord, Chrome, VS Code, Explorer, Slack, etc.
# Press [F8] to drag -> press [F8] or left-click to drop!
Drop completed (Copy).windrop <files...>
windrop --verbose <files...>
windrop --version | -v
windrop --help | -h# Check version
windrop --version
# View help
windrop --help
# Verbose output with control instructions
windrop --verbose photo.png
# Single file
windrop photo.png
# Multiple files
windrop report.pdf notes.txt data.csv
# Wildcards & spaces
windrop *.jpg "C:\My Documents\report.xlsx"| Action | How to Trigger |
|---|---|
| Keyboard Drag & Drop | Hover cursor over target window and press F8 to drag → press F8 or left-click to drop |
| Mouse Drag & Drop | Grab and drag the floating card widget directly into any window |
| Dismiss / Cancel | Press Escape or Right-Click the card anytime |
- True Standalone Binary: Pure C++17 compiled against native Windows APIs (
ole32,shell32,user32). Starts instantly, exits immediately after drop, uses 0 background resources. - No internet access, not even sockets/network libs anywhere in
CMakeLists.txtor source. - 2-Step Keyboard Drag (
F8): Hover over any destination window, pressF8to engage drag (target lights up with visual drop cues), and pressF8or left-click to drop. - Floating Acrylic Card: Sleek dark card with 32x32 native shell file icon and thumbnail preview for direct mouse drags.
- Multi-Widget Staging: Run
windropmultiple times from your CLI — cards automatically cascade (+30pxoffset) across your desktop. - Multi-Format Shell Payload:
CF_HDROP: Native shell file lists for File Explorer, 7-Zip, Discord, Slack.CFSTR_PREFERREDDROPEFFECT: Explicit copy / move negotiation.CF_UNICODETEXT&CF_TEXT: Newline-separated file paths for text editors, IDEs, and terminals.CFSTR_SHELLURL:file:///URLs for web browsers and Electron web applications.
- Safe Global Hotkey Handling (F8):: Uses standard Win32
RegisterHotKeyon an isolated worker message loop instead of low-level keyboard hooks (WH_KEYBOARD_LL), eliminating false-positive antivirus / Defender flags. - Byte-for-Byte Reproducible Builds: Configured with deterministic compiler and linker flags (
/experimental:deterministic,/Brepro,/PDBALTPATH:%_PDB%), ensuring bit-identical binaries across builds. - Per-Monitor V2 DPI Aware: Crisp, sharp rendering on 4K and high-DPI displays.
| Application | Supported Drops | Status |
|---|---|---|
| Discord / Slack / Teams | File uploads, channel attachment sharing | Full Support |
| Chrome / Edge / Firefox / Brave | File upload inputs, Gmail, web applications | Full Support |
| VS Code / Cursor / Visual Studio | Editor split view, file explorer drop | Full Support |
| Windows File Explorer | File copy and move operations | Full Support |
| Notepad / Sublime / Text Editors | File paths pasting | Full Support |
| Photoshop / Illustrator / GIMP | Direct image canvas drop | Full Support |
- Windows 10 / 11 (x64)
- Visual Studio 2019 or 2022 (C++ Desktop workload)
- CMake 3.16+
cmake -B build -S . -G "Visual Studio 17 2022" -A x64
cmake --build build --config ReleaseThe compiled binary will be located at:
build/Release/windrop.exe
For internal architecture, COM data object implementation, and state machine diagrams, see Architecture.md.
MIT License. Copyright © 2026 Dastageer Siddiqui.