Skip to main content
coefficiencies

menuDrop #

A macOS menu bar app for Raindrop.io. Browse, open, and save bookmarks without leaving what you’re doing.


Download #

Grab the latest .dmg from the dist/ folder, or build from source (see below).

First launch: macOS will warn you because the app isn’t notarized. Right-click menuDrop.appOpenOpen to allow it. You only need to do this once.


Setup #

  1. Open the app — it appears as a drop icon (􀊵) in your menu bar
  2. Click it and choose Settings…
  3. Paste your Raindrop API token and click Load
  4. Pin your favourite collections and tags, then click Save

Get your token from app.raindrop.io/settings/integrationsFor Developers → Create test token.

The token is stored at ~/.config/menudrop/config.json.


The menu #

Quick actions (top) #

Item What it does
📋 Add Clipboard URL Saves the URL on your clipboard to Raindrop. Greyed out if no URL is detected. Fetches the page title automatically.
🧭 Add Safari Tab Saves the active Safari tab (URL + title) to Raindrop. macOS will ask for automation permission once.
🕐 Recent Shows your 10 most recently added bookmarks.
🌐 Open Raindrop Web Opens app.raindrop.io in your browser.

Bookmarks #

Click any bookmark to open it. Hold a modifier key before clicking for more options:

Key Action
(none) Open in browser
⌥ Option Copy URL to clipboard
⌃ Control Copy as Markdown link [title](url)
⌘ Command Open in Raindrop web to edit

Hovering over a bookmark shows its full URL and a reminder of these shortcuts.

Sections #

Section Description
❤️ Favourites Your starred bookmarks, loaded on launch
📌 Pinned Collections and tags you’ve pinned in Settings
📁 Collections All other collections, grouped in a submenu
🏷 Tags All other tags (top 25 by count), grouped in a submenu

Submenus load lazily — bookmarks are only fetched when you hover over a collection or tag.


Keyboard shortcut #

The default shortcut to open the menu is ⇧⌘R.

To change it: Settings… → Shortcuts → click the field and press any modifier+key combination. Press Delete to clear, Escape to cancel.


Settings #

Open via the menu or ⌘, when the settings window is in focus.

General tab

  • Set your API token
  • Pin collections and tags to appear above the fold

Shortcuts tab

  • Customise the global keyboard shortcut for opening the menu

Auto-refresh #

The menu refreshes automatically every 5 minutes. You can also trigger a manual refresh at any time from the bottom of the menu.


Permissions #

macOS may ask for the following:

Permission Why
Automation Required to read the current Safari tab URL and title

No other permissions are requested. The keyboard shortcut uses Carbon’s hotkey API and works without Input Monitoring or Accessibility access.


Build from source #

Requirements

  • macOS 13+
  • Xcode Command Line Tools (xcode-select --install)
git clone https://github.com/tomrobertson/menuDrop.git
cd menuDrop
./build.sh

Produces:

  • dist/menuDrop.app — the app bundle
  • dist/menuDrop-1.0.0.dmg — distributable disk image

To run without packaging:

swift build
.build/debug/menuDrop

Project structure #

Sources/menuDrop/
├── main.swift                  Entry point, hides Dock icon
├── AppDelegate.swift           Status bar item, hotkey wiring
├── Config.swift                AppConfig + ShortcutConfig, persisted to ~/.config/menudrop/config.json
├── Models.swift                Codable structs for the Raindrop API
├── RaindropAPI.swift           Network layer with session caching
├── LazyMenuDelegate.swift      Loads bookmark submenus on demand
├── MenuManager.swift           Builds the menu, handles all actions
├── HotKeyManager.swift         Global keyboard shortcut via Carbon
├── ShortcutRecorderView.swift  Shortcut capture control for Settings
├── SettingsView.swift          Settings window (SwiftUI)
├── SettingsViewModel.swift     Settings state and persistence
├── SettingsWindowController.swift  NSWindow wrapper for Settings
└── Resources/
    └── Info.plist              App bundle metadata