A macOS menu bar utility for drag-and-drop file collection shelves.
- Floating shelves — temporary collection panels that hover above other windows
- Shake-to-summon — shake your cursor while dragging to instantly open a preview shelf
- Global hotkey — press Option-Command-S to create a new shelf anytime
- Drag in, drag out — drop files, folders, text, and URLs onto a shelf, then drag them back out to any app
- Multiple shelves — open several shelves at once with cascade positioning
- Menu bar integration — lives in the menu bar, never clutters your dock
- Configurable dimensions — adjust shelf width and height to your preference
- Launch at login — start HoldIt automatically when you log in
- macOS 13 Ventura and later
HoldIt is currently distributed as source only. There is no prebuilt notarized DMG; download a GitHub source archive or clone the repository and build the app locally.
- macOS 13.0+
- Xcode 15+ (Swift 5)
git clone git@github.com:Anmolnoor/hold-it.git
cd hold-it
open HoldIt.xcodeprojSelect the HoldIt scheme in Xcode, then build and run (Cmd+R).
Note: HoldIt runs as a menu bar utility (no dock icon). After launching, look for the icon in the menu bar.
To keep HoldIt on your Mac, build the HoldIt scheme in Xcode, open the build products folder, and copy HoldIt.app to /Applications.
- Create a shelf — click the menu bar icon and select "New Shelf", or press Option-Command-S
- Shake gesture — while dragging a file, shake your mouse horizontally to summon a preview shelf
- Collect items — drop files, folders, text snippets, or URLs onto any shelf
- Export items — drag items from a shelf to another app
- Settings — accessible from the menu bar icon
HoldIt uses the internal module name ShelfKit. The codebase is organized as:
| Directory | Purpose |
|---|---|
App/ |
Application lifecycle, menu bar controller, settings window |
Domain/ |
Core models (Shelf, ShelfItem) |
DragDrop/ |
Global drag monitoring, drop handling, shake detection, hotkeys |
Storage/ |
UserDefaults-based preferences |
UI/ |
SwiftUI views, view model, presentation modes |
Windowing/ |
NSPanel management, screen positioning, window coordination |
Built with AppKit + SwiftUI, Combine for reactive state, and Carbon for global hotkey support.
Contributions are welcome! Please read the Contributing Guide before submitting a pull request.
If you find a bug or have a feature idea, please open an issue.
This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.