BarPin is a macOS menu bar utility that provides app-hosting “bubble” controls.
It turns frequently used apps into menu-bar-associated bubble entries: click to show/hide quickly, keep size preferences, and maintain a consistent visual link to the menu bar.
Chinese version: README.md
- Multiple independent pins (one menu bar icon per app)
- Per-pin optional hotkeys
- Hotkey conflict detection (conflicts are blocked)
- Smart toggle behavior:
- If app is frontmost: hide
- If app is in background: bring to front
- If no visible window: reopen and position
- Per-app window size memory
- Icon modes (App icon / Pin icon, Gray / Color)
- Chinese/English language switch
- Debug log toggle
- Built-in management panel for all pins (add/remove/hotkey/icon settings)
BarPin is currently distributed without Apple Developer ID signing and notarization. On first launch, macOS may show warnings like “damaged” or “cannot verify developer”. This is expected behavior from macOS security policy.
To allow launch manually:
- In Finder, right-click (or Control-click)
BarPin.app, then choose “Open”. - Click “Open” again in the confirmation dialog.
- If still blocked, go to “System Settings > Privacy & Security” and click “Open Anyway”.
After one successful manual approval, future launches are usually normal.
Update note: for unsigned/unnotarized builds, replacing
BarPin.appmay be treated as a new app identity by macOS. You may need to re-approve launch and Accessibility access. If an old BarPin entry exists under Accessibility, remove it first and add the new one again.
BarPin uses Accessibility APIs to move/resize/focus external app windows. Grant permission in:
- System Settings > Privacy & Security > Accessibility
This project is a SwiftPM executable. Run from Xcode or:
swift runswift run BarPinCoreChecksAPP_PATH=dist/BarPin.app scripts/e2e_barpin.shNotes:
- The script requires macOS Accessibility/Automation permissions for System Events.
- It validates that reopening BarPin while running reliably brings up the management window.
Package.swift: SwiftPM configSources/BarPin/main.swift: main application logic
