PrimoDev/ apps

ShakeDrop

Shake your mouse while dragging a file to AirDrop it

  • macOS
  • Free
  • Open source · MIT
  • v1.0.0

What is ShakeDrop?

ShakeDrop is a free macOS menu bar app that opens AirDrop with a gesture. Hold a file in Finder, shake the mouse, drop the file on the small window that appears next to the cursor, and the AirDrop share sheet opens with it selected.

It is free and open source (MIT license). To install, download ShakeDrop-1.0.0.app.zip from GitHub Releases, unzip it and move it to Applications; the build is not signed or notarized, so macOS asks you to approve it on first launch.

What it does

  1. 01Shake gesture detected system-wide while you drag a file
  2. 02Small semi-transparent drop window with a dashed border appears next to the cursor
  3. 03Dropping the file opens the AirDrop share sheet with it selected
  4. 04The window dismisses itself if nothing is dropped within 4 seconds
  5. 05Lives in the menu bar only, with a hand icon
  6. 06Needs only Input Monitoring, no Accessibility or Full Disk Access
  7. 07uninstall.sh script removes the app, preferences, caches and permission entries
  8. 08No third-party dependencies

FAQ

Is ShakeDrop free?
Yes. It is free and open source under the MIT license, with the code on GitHub.
Which macOS version does it need?
macOS 13 Ventura or later.
How do I install it and get past Gatekeeper?
Download the .app.zip from Releases, unzip it and move it to Applications. The build is unsigned, so the first time right-click the app, choose Open and confirm, or run: xattr -dr com.apple.quarantine /path/to/ShakeDrop.app. It is a one-time approval per machine.
What permissions does it need?
Only Input Monitoring (System Settings > Privacy & Security > Input Monitoring), because the shake is detected system-wide. It does not ask for Accessibility, Full Disk Access or Automation.
How is it different from the usual way to use AirDrop?
On macOS you open AirDrop from the Share menu or the Finder sidebar. ShakeDrop shortens that: with the file in hand, one shake of the mouse opens AirDrop with the file selected.
How do I uninstall it?
Run ./uninstall.sh from the repo root. It removes the app, old release zips, preferences, caches and the permission entries. If macOS blocks the write to the permissions database, the script prints the System Settings path so you can turn it off by hand.

Documentation

README from the lucianodiisouza/shakedrop repository, refreshed on every deploy.

A tiny free/open-source macOS menu-bar app. Click and hold a file in Finder, shake your mouse, and a small drop-target window appears near the cursor. Release the file on it and AirDrop opens.

Built with SwiftUI + AppKit + a global CGEventTap for the shake gesture. No third-party dependencies. macOS 13+.

How it works

  1. Click the hand icon in the menu bar the first time — the app asks for Input Monitoring permission. (Required because the shake is detected system-wide, not just inside our window.)
  2. In Finder, click and hold a file (without releasing).
  3. Shake your mouse. A small square, semi-transparent window with a dashed border appears next to the cursor.
  4. Drop the file on it. The AirDrop share sheet opens with that file selected.

If you don't drop anything within 4 seconds, the window dismisses itself.

Permissions

ShakeDrop needs Input Monitoring (System Settings ▸ Privacy & Security ▸ Input Monitoring) to detect the shake globally. The app does not require Accessibility, Full Disk Access, or Automation.

If you deny the permission, you can re-grant it later by opening System Settings, finding ShakeDrop under Input Monitoring, and toggling it on. The app picks up the new state on the next shake attempt.

Status bar

Icon: SF Symbol hand.draw (closed hand with extended index finger inside a circle). The menu has:

  • Open ShakeDrop — verifies Input Monitoring permission and starts the global shake monitor if it isn't already running.
  • About ShakeDrop
  • Quit ShakeDrop (⌘Q)

Running an unsigned build on macOS

Gatekeeper blocks unsigned apps on first launch. Two clean ways around it.

xcodebuild -project ShakeDrop.xcodeproj -scheme ShakeDrop \
           -configuration Debug build \
           CODE_SIGN_IDENTITY="-" CODE_SIGNING_REQUIRED=NO

Find the output and open it:

DD=$(xcodebuild -project ShakeDrop.xcodeproj -scheme ShakeDrop \
              -showBuildSettings -configuration Debug 2>/dev/null \
              | awk -F' = ' '/^[[:space:]]+BUILT_PRODUCTS_DIR /{print $2; exit}')
open "$DD/ShakeDrop.app"

Run from Xcode

Open the project, select the ShakeDrop scheme, press ⌘R.

If macOS still blocks it

xattr -dr com.apple.quarantine /path/to/ShakeDrop.app

Or right-click the app in Finder → Open → Open in the dialog. One-time approval per machine.

Uninstalling

To completely remove ShakeDrop from your Mac — the .app, leftover release zips, LaunchServices registration, per-user preferences and caches, and the Input Monitoring / Accessibility TCC entries — run:

./uninstall.sh

From the repo root. Safe to re-run. Refuses to run as root so it can't trash system databases by accident. If macOS denies the script's write to TCC.db (it requires Full Disk Access for non-Apple processes), the script prints the exact System Settings path you need to toggle off manually.

Releasing

Push a vX.Y.Z tag to trigger the GitHub Actions release workflow (.github/workflows/release.yml). It builds a Release .app, zips it with ditto, and attaches it to a GitHub Release with install instructions.

Project layout

ShakeDrop/
├── ShakeDrop.xcodeproj/
├── .github/workflows/release.yml    # CI: build + tag-based release
└── ShakeDrop/
    ├── Resources/
    │   ├── Assets.xcassets/
    │   ├── Info.plist
    │   └── ShakeDrop.entitlements  # sandbox + Input Monitoring
    └── Sources/
        ├── ShakeDropApp.swift     # @main, AppDelegate
        ├── AppCoordinator.swift   # wires monitor -> window -> AirDrop
        ├── ShakeMonitor.swift     # CGEventTap global shake detector
        ├── DropTargetWindow.swift # floating drop target (NSPanel)
        └── AirDropSender.swift    # NSSharingService AirDrop wrapper

License

MIT — see LICENSE.