A ~350 line menu bar tidier. Bartender / Ice / Hidden Bar in miniature.
I built it for myself because I wanted three features, not thirty. If you found it and it does what you need, help yourself. Just read the unsigned app section first, because you'll be building it yourself.
No Apple Developer account, no notarisation, no Accessibility permission, no private APIs, no network access. It only ever touches its own status items.
macOS packs menu bar status items right to left. Tuck adds three of its own:
[ … system items ] [ ⌃ toggle ] [ marker ] … hidden icons … [ marker₂ ] … always-hidden icons …
Collapsing sets the marker's width to 10,000pt, which shoves every item to its left past the edge of the screen. That's the entire mechanism.
- macOS 14 or later (developed and tested on macOS 26)
- Xcode, or just the command line tools:
xcode-select --install - Swift 5.9 or later, which those give you
There are no downloads. Clone it and build it:
git clone https://github.com/lordkerwin/tuck.git
cd tuck
./build.sh
cp -R build/Tuck.app /Applications/
open /Applications/Tuck.appCopy it to /Applications (or anywhere permanent) before turning on launch at
login. SMAppService registers the bundle at whatever path it's sitting in, so
if you move the app afterwards you'll need to toggle the setting off and on
again.
I have no paid Apple Developer account, so Tuck has no Developer ID signature
and isn't notarised. build.sh ad-hoc signs it instead (codesign --sign -),
which is a signature with no identity behind it.
If you build it yourself, as above, nothing gets in your way. Gatekeeper only challenges apps that arrive with a quarantine flag, and files you compiled locally don't have one. That's the whole reason I'd rather you built it than downloaded it.
If you get a prebuilt copy from anyone, including a zip somebody attached to an issue, macOS will quarantine it and refuse to launch it. Two ways past that:
# strip the quarantine flag
xattr -dr com.apple.quarantine /Applications/Tuck.appor launch it once, let it get blocked, then go to System Settings → Privacy & Security, scroll to the message about Tuck, and click Open Anyway. Note that Control-click → Open, the old trick, no longer works for unnotarised apps on macOS 15 and later.
Being unsigned costs Tuck nothing functionally. It requests no entitlements, isn't sandboxed, and asks for no privacy permissions, so there's nothing an absent signature can gate.
Obvious but worth saying: only do any of the above for code you've read. It's 350 lines, so reading it is genuinely quick.
- Launch it. A
‹chevron and a thin vertical marker appear in the menu bar. - Hold ⌘ and drag menu bar icons to the left of the marker. Those are now the hidden ones.
- ⌘-drag the marker itself if you want it somewhere else. macOS remembers the positions.
| Action | Result |
|---|---|
| Click chevron or marker | Show / hide the hidden section |
| ⌥-click chevron | Show everything, including the always-hidden section |
| Right-click either | Menu: Show All, Hide, Settings…, Quit |
Expanded, it re-collapses on its own after the configured delay. With "keep open while pointer is in the menu bar" on, the countdown only starts once the pointer leaves the menu bar, so it won't snap shut mid-click.
Right-click the chevron → Settings…
- Collapse automatically plus a delay slider (1 to 120 seconds)
- Keep open while pointer is in the menu bar
- Marker width: invisible, thin, normal, wide
- Second marker for an always-hidden section, a section that stays hidden unless you ⌥-click
- Start collapsed
- Launch at login (
SMAppService)
Package.swift
Resources/Info.plist LSUIElement, so no dock icon and no app menu
build.sh compile, assemble .app bundle, ad-hoc sign
Sources/Tuck/
main.swift NSApplication bootstrap, .accessory policy
AppDelegate.swift owns the controller and settings window
StatusBarController.swift the three status items and all the state
Prefs.swift UserDefaults keys, defaults, read accessors
SettingsView.swift SwiftUI settings form
Preferences are written by @AppStorage and read back by the controller via
UserDefaults.didChangeNotification, so changes apply live with no plumbing
between the two.
- Some Control Center items (Bluetooth, battery, display) sit left of the marker by default and therefore hide too. ⌘-drag them right of the marker if you'd rather keep them.
- On multiple displays macOS draws status items on every menu bar, so hiding applies to all of them at once.
- The marker is invisible while collapsed, on purpose. It's 10,000pt wide at that point and would otherwise paint a smear across the bar.
- Auto-collapse polls the pointer every 0.25s while expanded rather than installing a global event monitor, which is what keeps it clear of the Input Monitoring permission prompt. The timer only exists while something is expanded.
osascript -e 'tell application "Tuck" to quit'
rm -rf /Applications/Tuck.app
defaults delete dev.seankerwin.tuck # settings and saved marker positionsTurn off launch at login in Settings before you delete the app, or the login item registration will linger.
MIT. See LICENSE. Do what you like with it, no warranty.
