PrimoDev/ apps

ShakeDrop

Sacuda o mouse com um arquivo e mande por AirDrop

  • macOS
  • Grátis
  • Open source · MIT
  • v1.0.0

O que é o ShakeDrop?

O ShakeDrop é um app gratuito de barra de menus pro macOS que abre o AirDrop com um gesto. Você segura um arquivo no Finder, sacode o mouse, solta o arquivo na janelinha que aparece perto do cursor e a janela de compartilhamento do AirDrop abre com ele selecionado.

É grátis e open source (licença MIT). Pra instalar, baixe o ShakeDrop-1.0.0.app.zip nos Releases do GitHub, descompacte e mova pra Aplicativos; como o build não é assinado nem notarizado, o macOS pede uma liberação na primeira vez.

O que ele faz

  1. 01Gesto de sacudir o mouse detectado no sistema todo enquanto você arrasta um arquivo
  2. 02Janela de soltar pequena e semitransparente, com borda tracejada, aparece perto do cursor
  3. 03Ao soltar o arquivo, abre a folha de compartilhamento do AirDrop com ele já selecionado
  4. 04Se você não soltar nada em 4 segundos, a janela some sozinha
  5. 05Fica só na barra de menus, com ícone de mão
  6. 06Só precisa de Monitoramento de Entrada, sem Acessibilidade nem Acesso Total ao Disco
  7. 07Script uninstall.sh que remove o app, preferências, caches e permissões
  8. 08Sem dependências de terceiros

Perguntas frequentes

O ShakeDrop é grátis?
Sim. É gratuito e open source, com licença MIT, e o código está no GitHub.
Qual versão do macOS ele precisa?
macOS 13 Ventura ou mais novo.
Como instalo e passo pelo Gatekeeper?
Baixe o .app.zip nos Releases, descompacte e mova pra Aplicativos. O build não é assinado, então na primeira vez clique com o botão direito no app, escolha Abrir e confirme, ou rode no Terminal: xattr -dr com.apple.quarantine /caminho/para/ShakeDrop.app. É uma liberação só por máquina.
Que permissões ele pede?
Só Monitoramento de Entrada (Ajustes do Sistema > Privacidade e Segurança > Monitoramento de Entrada), porque o gesto de sacudir é detectado no sistema todo. Ele não pede Acessibilidade, Acesso Total ao Disco nem Automação.
Qual a diferença pro jeito normal de usar o AirDrop?
No macOS você abre o AirDrop pelo menu Compartilhar ou pela barra lateral do Finder. O ShakeDrop encurta isso: com o arquivo na mão, uma sacudida no mouse já abre o AirDrop com ele selecionado.
Como desinstalo?
Rode ./uninstall.sh na raiz do repositório. Ele remove o app, zips antigos, preferências, caches e as entradas de permissão. Se o macOS bloquear a escrita no banco de permissões, o script mostra o caminho em Ajustes pra você desligar na mão.

Documentação

README do repositório lucianodiisouza/shakedrop, atualizado a cada deploy. O texto original é em inglês.

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.