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.app→ Open → Open to allow it. You only need to do this once.
Setup #
- Open the app — it appears as a drop icon () in your menu bar
- Click it and choose Settings…
- Paste your Raindrop API token and click Load
- Pin your favourite collections and tags, then click Save
Get your token from app.raindrop.io/settings/integrations → For 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 bundledist/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