# SimpleTopBar A native macOS menu bar app: a **hamburger menu** in the menu bar whose panel collects every other app's menu bar (tray) icons, plus every app running on your Mac, into three sections: - **Menu Bar** — a tray of all other apps' menu bar items, discovered through the Accessibility API. Click one to open its real menu. Optionally **hide the items from the menu bar** so they only live inside this panel (best-effort; see below). - **Apps** — regular apps that live in the Dock. - **Background Apps** — accessory/agent apps without a Dock icon. This section is a **dropdown**: it stays collapsed to a single header, and when you expand it only the first few apps are shown. The rest are hidden behind a **Show N more** row so the list never overflows the panel. Click any row to activate the app, or right-click for Activate / Hide / Quit. ## Accessibility permission Collecting and opening other apps' menu bar items needs **Accessibility** permission (System Settings → Privacy & Security → Accessibility). The panel prompts for it; without it the Menu Bar section is empty and everything else still works. ## Hiding menu bar items macOS has no public API to move another app's status item. Instead of moving them, the **Hide items from the menu bar** toggle (on by default, remembered) draws a frosted **cover** window over the other apps' icons. They keep their real positions, so tapping a tile in the panel opens that app's menu in the right place with **no flicker**, and the cover leaves a gap for the hamburger so it is never hidden. What it does and does not cover: - Covers **other third-party apps' icons** (cmux, Kapture, WireGuard, input source, Now Playing, …). - Keeps **Wi-Fi, Spotlight, Clock, Battery and Control Center** visible — macOS reserves that far-right area, so those icons stay put. - The cover matches the menu bar's frosted look only approximately; over an unusual wallpaper the covered strip may be slightly visible. - Turning the toggle off removes the cover immediately; quitting does too. ## Install with Homebrew ```bash brew tap TZGyn/tap https://gitea.tzgyn.dev/TZGyn/homebrew-tap.git brew trust TZGyn/tap brew install --cask simpletopbar ``` The tap is hosted on Gitea, so the full URL is required. Homebrew may print an "Unsupported tap" warning — it's harmless. ## Upgrade ```bash brew update brew upgrade --cask simpletopbar ``` If Gatekeeper still blocks the app after upgrading (it is not notarized yet): ```bash xattr -dr com.apple.quarantine /Applications/SimpleTopBar.app ``` ## Build from source ```bash swift build # debug build swift run SimpleTopBar # run from terminal (app appears in the menu bar) swift run SimpleTopBar --self-test # headless check of the dropdown logic ./build-app.sh 0.2.0 # release build + SimpleTopBar.app bundle + icon + codesign ./release.sh 0.2.0 # build-app.sh + dist/SimpleTopBar.zip + sha256 ``` ## Around the Background dropdown The background section is collapsed by default. Expanding it reveals `AppListModel.backgroundPageSize` (5) apps at a time; when more are running a **Show N more** button reveals the next page. Collapsing resets the page. ## Releases `./release.sh ` builds and zips the app to `dist/SimpleTopBar.zip` and prints its sha256. Tag `v`, attach the zip to a release on the Gitea repo, and bump `version`/`sha256` in the cask in [TZGyn/homebrew-tap](https://gitea.tzgyn.dev/TZGyn/homebrew-tap).