A drag & drop shelf for macOS and Windows.
Start dragging, drop it on the shelf, take your time, drag it out wherever it belongs.
English · Русский
The shelf |
Space to preview |
⌘F to search |
| 🪄 Shows up when you drag | When a drag starts, at the screen edge, under the pointer, or when you shake the pointer mid-drag. On macOS it reacts only to real drag sessions, not text selection or window moves. |
| 📦 Takes anything | Files and folders (kept as references; Keep a Copy stores a copy so an item survives the original moving), text → .txt, links → .webloc / .url, images straight from the browser. |
| 🎯 Precise drag-out | A native addon asks the OS whether the target app accepted the files. Cancelled or refused drops leave items where they are. |
| 🗂️ Stacks | Merge items into one stack, drag it out in one go, split it back, or drag single files out of the stack preview. |
| 👀 Preview | Space opens a popover next to the shelf: images, PDF, text, video, audio, Quick Look thumbnails, folders, stacks. |
| 🔍 Search | ⌘F / Ctrl+F filters by name and path. |
| 🗑️ Clean up | Compress to ZIP puts an archive of the selection on the shelf. Move to Trash deletes the files behind selected items; the menu-bar icon shows how many items are waiting. |
| 🔒 Lock & undo | Locked items stay after drag-out. Restore Removed Items brings back the last removal. |
| 🙈 Ignored apps | No shelf for drags from apps you choose, with one-click buttons for recent drag sources. |
| 📐 Your size and place | Shelf width, height and icon size, applied live. Move the shelf and it reopens there on that display. |
| 📸 Screenshots | Optional. New screenshots land on the shelf as soon as they are saved. |
| 📋 Clipboard history | Optional. Text, links, images and files with pins, search and filters. |
| 🔗 Automation | droper:// links for Shortcuts, Alfred, Raycast or scripts. |
| ⚙️ Fits in | Menu bar / tray (drop files or text on the menu-bar icon on macOS), global shortcut, launch at login, Explorer Send to → Droper. |
| Key | Action |
|---|---|
| Space | Preview the selected item (again to close) |
| ↑ ↓ | Move through items; the preview follows |
| ⌘F / Ctrl+F | Search the shelf |
| Enter | Open |
| ⌫ / Delete | Remove from the shelf |
| ⌘A / Ctrl+A | Select all |
| Esc | Close preview → search → shelf |
| ⌘⇧Y / Ctrl+Shift+Y | Show or hide the shelf from anywhere |
Text preview |
Stack preview |
Settings |
Clipboard history |
Grab the latest build from Releases.
| Platform | File | First launch |
|---|---|---|
| 🍎 macOS (Apple Silicon) | Droper-<version>-arm64.dmg |
Unsigned: see below, then allow Accessibility when asked |
| 🪟 Windows (Intel / AMD) | Droper-Setup-<version>-x64.exe |
Unsigned: SmartScreen → More info → Run anyway |
| 🪟 Windows (ARM) | Droper-Setup-<version>-arm64.exe |
Same as above |
Note
Accessibility lets Droper see global mouse drags. Without it the shelf still works, but only through the shortcut or menu.
Droper isn't signed by Apple yet, so macOS blocks it the first time. Either:
-
System Settings: open Droper once, then go to System Settings → Privacy & Security and click Open Anyway next to the Droper message.
-
Terminal: after copying Droper to Applications, clear the download quarantine flag:
xattr -dr com.apple.quarantine /Applications/Droper.app
Only do this for builds downloaded from this repository's Releases, after checking them against SHA256SUMS.txt.
Once a day Droper asks GitHub for the latest release (a single request to api.github.com, nothing else is sent). When there is a newer version you get one notification and an Update Available item in the menu-bar menu that opens the release page; download and install it like the first time. Check for Updates… in the same menu checks right away, and Settings → Check for updates turns it off. Droper doesn't update itself: that needs a signed build.
-
macOS: menu-bar icon → Uninstall Droper…. It removes the Accessibility permission, the login item and Droper's data (settings, shelf, clipboard history, kept copies), then moves the app to the Trash. Files you put on the shelf stay where they are.
If you already dragged Droper to the Trash, the permission entry stays in System Settings. Put the app back in Applications, run the commands below, then delete it:
/usr/bin/tccutil reset All com.droper.app rm -rf ~/Library/Application\ Support/Droper
-
Windows: Settings → Apps → Droper → Uninstall. It also removes the Send to → Droper shortcut. Settings and shelf data stay in
%APPDATA%\Droper; delete that folder for a clean slate.
| Link | Does |
|---|---|
droper://show · hide · toggle |
Show, hide or toggle the shelf |
droper://add?path=/Users/me/a.pdf&path=/Users/me/b.png |
Add files (repeat path) |
droper://add-text?text=Hello |
Add a text snippet |
droper://add-url?url=https://example.com&title=Example |
Add a link |
droper://clear · restore |
Clear the shelf / bring back the last removal |
open "droper://add?path=$PWD/report.pdf" # macOS
start "" "droper://add-text?text=Call%20Anna" # Windows🛠️ Development
npm install # also builds the native drag addon
npm test # core unit tests (vitest)
npm start # build + run
npm run dist:mac # release/Droper-<ver>-arm64.dmg
npm run dist:win # release/Droper-Setup-<ver>-x64.exe and -arm64.exePushing a v* tag makes GitHub Actions build both platforms and attach them to a draft release.
🏗️ Architecture
src/core/ pure logic without Electron, covered by tests
shelfStore items, stacks, lock, remove/restore, prune
dragDetector mouse down/move/up → "show the shelf"
dragOut whether a drag-out should remove items
ingest dropped text/links/images → files
clipboardHistory clipboard history
settings validated settings
preview preview kind and popover placement
urlScheme droper:// parsing
ignoredApps ignore-list matching
src/main/ Electron main: panels, tray, IPC, mouse hook, clipboard
src/preload/ contextBridge APIs
src/renderer/ shelf, preview, settings and clipboard UI (vanilla TS)
native/ N-API addon: native drag-out and app-under-pointer
Telling a real drag from a text selection or window move. On macOS a background JXA process watches the system drag pasteboard; the shelf appears only when an app actually starts a drag session. Windows has no equivalent, so it defaults to "drag to the screen edge", and an empty shelf hides itself again.
Precise drag-out. macOS uses NSDraggingSession and reads the operation from draggingSession:endedAtPoint:operation:. Windows uses SHDoDragDrop with CF_HDROP and honours CFSTR_PERFORMEDDROPEFFECT for Explorer's optimized moves. Without the addon Droper falls back to judging by where the mouse was released.
- 🧪 The Windows build passes CI but hasn't been hand-tested yet.
- ☁️ No Handoff / iCloud, Services menu or widgets.
- 📄 On Windows, Copy puts file paths on the clipboard as text.
- 🖼️ The preview is Droper's own popover, so formats without a thumbnail generator show their icon.