A macOS utility accessory that reveals a expanding tray behind the notch when you hover or drag files over it. The tray displays files and folders in a grid, supports drag-and-drop, context menus, batch removal, and keeps its energy impact at Apple’s designated “Low” level.
- Expanding tray behind the notch on hover or file drag
- Dynamic grid layout of file and folder icons
- Duplicate prevention, drag-out removal, and multi-select
- Context menus for quick actions
- Automatic removal of items whose files no longer exist
- Smooth SwiftUI animations with AppKit tracking for minimal energy use
- See the releases section.
- Clone this repository:
git clone https://github.com/yourusername/holdit.git cd holdit - Build & run:
swift run
- Hover over the notch area or drag files onto it to expand the tray.
- Drag items into the tray to add them, or drag them out to remove.
- Right-click an item for context actions.
- Use the status-bar menu to clear the tray or quit the app.
- main.swift / AppDelegate: Sets up a transparent
TriggerPanelfor hover/drag detection and aTrayPanelfor the expanded UI. - LOGIC/TriggerHandler.swift & LOGIC/TrayHandler.swift: Manages
NSTrackingAreafor hover and collapse logic. - LOGIC/TrayModel.swift:
@MainActormodel storingFileItems with O(1) duplicate checks and a backgroundsanityCheckon.utilityQoS. - LOGIC/FileItem.swift: Represents a file/folder item, caches icons with
NSCacheand supports Swift concurrency. - GUI: SwiftUI
Trayview displaying items in a grid with smooth animations.
All event monitoring uses local NSTrackingArea and one-time offloaded .utility work queues, ensuring “Low” energy impact.
