Open-source macOS menu bar control

Hide menu bar clutter behind a tiny floating shelf.

BarShelf app icon

BarShelf is a native macOS menu bar manager with per-item visibility modes, a translucent floating shelf, Launch at Login, and an automation-friendly CLI.

Three visibility modes

Route detected menu bar items to Always shown, Floating shelf, or Always hidden.

Floating shelf

Click BarShelf’s persistent status item to reveal hidden icons in a compact shelf below the menu bar.

CLI for agents

Use barshelf commands and JSON output from scripts, power-user workflows, or AI agents.

Install

Homebrew

brew tap lvtd-llc/tap
brew install --cask barshelf

Manual download

  1. Download BarShelf.dmg from the latest release.
  2. Drag BarShelf.app into Applications.
  3. Launch BarShelf. Because builds are unsigned until Apple signing secrets are configured, macOS may require right-click → Open the first time.
  4. Use the first-run setup window to grant Accessibility permission and choose whether BarShelf should launch at login.

BarShelf is a menu bar app, so it does not stay in the Dock. First launch opens a setup window; after setup, use the BarShelf menu bar item or Command-comma while BarShelf is active to open Settings, check for updates, and configure visibility modes and permissions.

Usage

BarShelf’s own icon always remains visible in the macOS menu bar. Click it to show or hide the floating shelf. Use Settings → Check for Updates to fetch the latest GitHub release and run a Homebrew cask upgrade when applicable.

Visibility modes

Fallback separator mode

If macOS does not expose an item reliably, use the fallback separator mode: hold Command (⌘), drag menu bar icons left of BarShelf’s separator, then collapse/expand the shelf.

Permissions

Advanced routing depends on user-approved macOS permissions:

On first launch, BarShelf shows live permission status, buttons for the relevant macOS Privacy settings panes, and a Finish Setup button that unlocks after Accessibility is granted. You can reopen setup later from the BarShelf menu.

CLI

The native Swift CLI ships inside the app bundle:

/Applications/BarShelf.app/Contents/MacOS/barshelf status --json

Install into PATH

/Applications/BarShelf.app/Contents/MacOS/barshelf install-cli
barshelf status --json

If /usr/local/bin is not writable, install to a user-writable PATH location:

/Applications/BarShelf.app/Contents/MacOS/barshelf install-cli --path "$HOME/.local/bin/barshelf"

Common commands

barshelf status --json
barshelf list --json
barshelf show
barshelf hide
barshelf toggle
barshelf rescan
barshelf set <item-id> floating-shelf
barshelf launch-at-login status --json
barshelf launch-at-login enable
barshelf launch-at-login disable
barshelf open-settings
barshelf permissions

Development

BarShelf is built with SwiftPM and AppKit. The app, CLI, and tests live in this repository.

swift test --configuration debug --enable-code-coverage
swift build -c release
./Scripts/build_app.sh

GitHub Actions runs tests and builds on every pull request. Release tags build and attach BarShelf.dmg. If Apple Developer secrets are configured, release builds are signed, notarized, and stapled automatically. See Signing and notarization.