Reclaim your menubar from the MacBook notch.
A lightweight macOS utility that reaches menubar items hidden behind the MacBook notch — clicking through when possible, and automatically dragging them into view when it can't.
⬇ Download MenuDown.dmg · Website · Changelog
MacBook models with a notch cut into the menubar. When you run enough apps, their menubar items get pushed behind the notch — invisible, unreachable, and impossible to click. macOS silently swallows click events in the notch zone, so even if you know an item is there, you can't interact with it.
MenuDown adds a single icon to your menubar. Click it (or press ⌃⌥⌘M) to open a vertical panel showing every third-party menubar item — including the ones hidden behind the notch.
When you click a hidden item, MenuDown first attempts to click straight through the notch — which often succeeds. If macOS swallows the event, MenuDown falls back to physically dragging the item out from behind the notch into visible space, then clicking it there. Either way, the menu opens exactly as if you'd clicked the real icon. This all happens automatically in a fraction of a second.
- Click-to-Reveal — Click any item in the panel, even one hidden behind the notch. MenuDown first tries to click through directly — if that fails, it automatically drags the item into view and clicks it there. The footer shows "Revealing…" while working
- Smart reordering — Drag items to rearrange your menubar. MenuDown physically moves the real icons to match, intelligently exposing notch-blocked items first so every icon reaches its target
- Auto-discovery — Finds all third-party menubar items automatically via the macOS Accessibility API
- App menu clearance — When a foreground app's text menus (File, Edit, View…) overlap your status icons, MenuDown temporarily clears them so clicks and drags land on the right target
- Vertical layout — All your menubar items in a clean dropdown panel — no more guessing what's hiding behind the notch
- Global hotkey — Toggle the panel with ⌃⌥⌘M (Control + Option + Command + M)
- Auto-updates — Built-in Sparkle updater checks for new versions automatically
- Privacy first — No network access, no analytics, no telemetry. Runs entirely on-device
- Lightweight — Native Swift, scans in under 0.5 seconds, minimal memory footprint
- Download MenuDown.dmg
- Open the DMG and drag MenuDown to Applications
- Launch MenuDown — it appears as an arrow icon (↓) in your menubar
- Grant Accessibility permission when prompted
Signed and notarized by Apple. Requires macOS 13 Ventura or later.
MenuDown uses XcodeGen to generate the Xcode project.
# Clone the repo
git clone https://github.com/Jmartinns/MenuDown.git
cd MenuDown
# Install XcodeGen if you don't have it
brew install xcodegen
# Generate the Xcode project and resolve dependencies
xcodegen generate
xcodebuild -resolvePackageDependencies
# Open in Xcode
open MenuDown.xcodeproj- Xcode 15+
- macOS 13 Ventura SDK or later
- XcodeGen
MenuDown uses the macOS Accessibility API (AXUIElement) to discover third-party menubar extras across all running applications. It queries each app's kAXExtrasMenuBarAttribute concurrently to build the item list in under 0.5 seconds — including items hidden behind the notch that you can't see.
Clicking a visible item is straightforward: MenuDown warps the cursor to the real icon position and synthesizes a click.
Clicking a hidden item is harder. macOS often discards click events that land in the notch exclusion zone — but not always. MenuDown uses two strategies in sequence:
- Speculative click — MenuDown first sends a click directly at the hidden item's reported position along with an Accessibility API action. In many cases macOS still delivers the event and the menu opens immediately.
- Drag-to-expose — If the speculative click fails and a visible neighbor item exists, MenuDown synthesizes a ⌘-drag to pull it past the blocked items, pushing the target into visible space, then clicks it there. The panel shows "Revealing [app name]…" in the footer while this happens.
Both strategies are fully automatic — you just click the item in the panel. A one-time tooltip explains that items behind the notch may shift position when revealed. If a foreground app's text menus are overlapping the status-item area, MenuDown temporarily switches to Finder to clear them, then restores the original app.
When you rearrange items in the panel and apply changes, MenuDown physically moves the real menubar icons via synthetic ⌘-drag events. The reorder algorithm:
- Pre-expose — Sweeps all notch-blocked items into visible space so every icon is reachable
- Greedy placement — Each iteration picks the most-displaced reachable item and drags it directly to its target in one move
- On-demand expose — If an item can't be reached (still behind the notch), it's dragged out individually before the next pass
- Loop detection — Tracks previous states to prevent infinite cycling if items shift unpredictably
MenuDown/
├── App/
│ └── AppDelegate.swift # App lifecycle, hotkey, settings
├── MenuBar/
│ ├── MenuBarScanner.swift # AX-based menubar item discovery
│ ├── SpacerManager.swift # Hides/reveals original items
│ └── IconCapturer.swift # Screenshots menubar for item icons
├── Panel/
│ ├── VerticalPanelController.swift # NSPanel management
│ ├── VerticalPanelView.swift # SwiftUI panel content
│ └── WelcomeView.swift # First-launch welcome window
├── Interaction/
│ ├── ClickForwarder.swift # Click forwarding with notch-bypass drag-to-expose
│ ├── MenuBarReorderer.swift # Greedy reorder with pre-expose & loop detection
│ └── ChangeMonitor.swift # App launch/quit detection
└── Utilities/
├── Preferences.swift # UserDefaults wrapper
└── AccessibilityHelper.swift # Permission checking
- Search / filter items by name
- Appearance customization (icon size, panel width, theme)
- Launch at login toggle in settings
- Exclude specific apps from the panel
- Hover previews for item tooltips
- Keyboard navigation within the panel
- Multi-display support
Contributions are welcome. See CONTRIBUTING.md for guidelines.
MIT — free for personal and commercial use.
Made by Joey Martin

