Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BigMenu

A free, minimal Bartender alternative for the menu bar on notched MacBooks. Hides low-priority menu bar icons behind a chevron toggle; click to reveal them in the bar, and manage which icons are pinned vs hidden — with drag & drop — from a settings window.

Menu bar without BigMenu

Without BigMenu — every status icon competes for the strip beside the notch.

Menu bar with BigMenu

With BigMenu — the low-priority icons collapse behind the < chevron.

Reveal panel

Clicking the chevron drops the hidden icons into a panel below the bar, where the notch can't clip them.

Settings window

Settings — drag rows between Pinned and Hidden, then Apply.

Install

There is no notarized release yet — build it yourself, it takes a few seconds:

git clone https://github.com/roeezolantz/BigMenu.git
cd BigMenu
bash scripts/make_app.sh        # swift build + assembles build/BigMenu.app (ad-hoc signed)
open build/BigMenu.app

Move build/BigMenu.app to /Applications if you want to keep it, then grant Accessibility (see Permissions). Enable "Launch at login" in Settings to have it start with the Mac.

Requires macOS 14+ (developed and tested on macOS 26 "Tahoe", Apple Silicon). No Xcode project — plain SwiftPM. swift test runs the unit tests.

Usage

  • Chevron < in the menu bar — click to open a small panel below the menu bar listing every hidden icon. This is the notch-safe reveal: the panel is drawn under the bar, so nothing can be clipped by the notch. Click an icon in the panel to activate the real menu bar item (its own menu opens as usual). The panel closes on outside click, Esc, item click, or clicking the chevron again. It also has a gear button for Settings.
  • Option-click the chevron — the old behaviour: expand the hidden icons in the real menu bar; they auto-hide again after the configurable timeout (default 10 s). Handy, but with many icons some can land under the notch. The icon is the separator: icons left of it are the hidden set, icons between it and the chevron are pinned.
  • Right-click the chevron → Settings…, toggle, Expand in Menu Bar, quit.
  • Move the panel — drag the panel by its background (not by an icon) to put it wherever you like. The position is remembered across opens and re-clamped to the screen; right-click the panel → Reset Panel Position to snap it back under the chevron.
  • Settings window — two lists (Pinned / Hidden). Drag rows within and between lists, then Apply to enact it on the real menu bar. Rescan refreshes the lists (and re-captures the real icons, if that setting is on).
  • Show real menu bar icons (Settings, off by default) — instead of each app's application icon, show the actual glyph the app draws in the menu bar. BigMenu briefly expands the bar, takes one ScreenCaptureKit screenshot, slices it per icon, and collapses again; the cache refreshes on Rescan and when the panel opens with a cache older than 60 s. Needs Screen Recording; without it BigMenu silently keeps using app icons.
  • You can always arrange icons manually: hold ⌘ and drag any icon left of the separator to hide it, or right of it to pin it.

Permissions

Accessibility is required to list the menu bar icons (macOS 26 removed every other reliable way to enumerate them) and to move them automatically. Grant it via the button in Settings. Expand/collapse works without it.

Screen Recording is only needed for the optional "Show real menu bar icons" setting. macOS asks for it the first time you switch that setting on; deny it and the app just keeps showing application icons. Nothing else in BigMenu uses it.

Note: both grants are tied to the code signature, and the ad-hoc signature changes when you rebuild, so macOS may ask you to re-grant Accessibility (and Screen Recording) after a rebuild — remove + re-add BigMenu in System Settings → Privacy & Security → Accessibility / Screen & System Audio Recording.

During Apply BigMenu briefly drives the cursor itself (it replays the ⌘-drag you would do by hand), so leave the mouse alone for those few seconds — press Esc to cancel; it stops after the current icon and always releases the mouse button.

Automatic moving ("Move icons automatically") is on by default. macOS 26 sometimes fights programmatic reordering; if a move fails, the app tells you and you can ⌘-drag manually. You can turn it off in Settings to make Apply a no-op.

Known limitations

  • When option-click expanded in the bar, if you have very many icons some can still be clipped by the notch — keep the pinned set small; collapsing frees the width back. The drop-down panel (plain click) is not affected.
  • System items (Clock, Control Center, Siri) cannot be hidden or moved — macOS forbids it for all third-party apps.
  • Testing hooks: kill -USR1 <pid> toggles the drop-down reveal panel, kill -USR2 <pid> opens Settings. Distributed notifications drive the rest: dev.roee.bigmenu.test.apply, dev.roee.bigmenu.test.rescan, and dev.roee.bigmenu.test.state — the last one replies with dev.roee.bigmenu.test.stateReply whose notification object is a JSON string (accessibilityGranted, pinned, hidden, panelVisible, collapsed, moverEnabled, realIcons).

How it works

Two NSStatusItems: a chevron toggle and a separator. Collapsing sets the separator's length to 10,000 pt, pushing everything left of it off-screen (the Hidden Bar trick). Icons are enumerated per app via the Accessibility API (AXExtrasMenuBar), and automatic moves are synthesized ⌘-drags (CGEvent), verified by re-reading AX positions. On macOS 26, preferred positions are pre-seeded via NSStatusItem Preferred Position defaults, because freshly created items otherwise land in the notch dead zone and never render. See SPEC.md for the full design.

License

MIT — see LICENSE.

About

A free, minimal Bartender alternative for the macOS menu bar, built for notched MacBooks. SwiftPM, no dependencies.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages