Imperator MenuBarFolders
Each folder gets its own menu bar icon. Click it and a popover drops down with the apps inside.
README.md
// Overview
Group your apps into folders that live in the macOS menu bar. Each folder is its own menu bar icon; click it and a popover drops down with the apps inside.
A SwiftPM executable with no dependencies. LSUIElement is true, so there is no
Dock icon — the status items are the entire interface.
// Requirements
macOS 14 or later on Apple silicon. Built and tested on macOS 26 only; older versions are expected to work but have not been verified.
The app is not notarized and carries no Apple Developer signature, so macOS cannot vouch for it. Install at your own risk — provided as is, no warranty, under the MIT license.
// Install
Download the latest zip from the releases page, unzip, and move
Imperator MenuBarFolders.app to /Applications.
Gatekeeper blocks the first launch. Right-click the app and choose Open, or clear the quarantine flag:
xattr -dr com.apple.quarantine "/Applications/Imperator MenuBarFolders.app"There is no Dock icon. On first launch there are no folders yet, so the settings window opens on its own.
// Permissions
None. The app asks for no Accessibility, Input Monitoring or Automation grants,
and declares no NSUsage keys. It reads /Applications,
/System/Applications, ~/Applications and Xcode's bundled applications to
list what is installed, and launches through NSWorkspace.
The one system integration is Open at Login in the settings window, which calls
SMAppService.mainApp.register() to add the app to Login Items. Turning the
toggle off unregisters it.
// Use
Click a folder's icon and a popover drops down with its apps; click an app to launch it. The footer holds Settings and Quit.
Folders are built in the settings window. + in the sidebar creates one. The
icon button opens a picker with 138 searchable Lucide icons, or takes your own
SVG. The name doubles as the menu bar icon's tooltip. A stepper sets 2 to 6 apps
per row. Add Apps picks from everything installed, with menu bar apps marked as
such by their LSUIElement flag. Double-click an app for a custom label, and
drag to reorder folders or the apps inside them.
The popover sizes itself from the app count and the column setting, so a folder with three apps does not open a window built for twelve.
Deleting the last folder reopens the settings window. With no folders there are no menu bar icons, and with no Dock icon there would be no way back in.
Folders live in one JSON file at
~/Library/Application Support/MenuBarFolders/folders.json.
// Build
make installBuilds release, bundles, codesigns, installs to /Applications and launches.
make run and make clean are the other targets.
Signing has to use a stable identity rather than ad-hoc. The login item registration is keyed to the bundle's designated requirement, and ad-hoc signing mints a new hash on every build, so each update would look like a different app and drop the registration.
// Implementation notes
MenuBarManager keys each status item's click back to its folder UUID with
objc_setAssociatedObject, because NSStatusBarButton carries no user data of
its own.
SwiftPM does not compile asset catalogs, so menu bar icons cannot ship as image
assets. They are stored as SVG element strings, parsed at runtime, and rendered
into template NSImages so macOS tints them for light and dark menu bars.
AppDiscovery lists apps with the string-based contentsOfDirectory(atPath:)
and then resolves symlinks, because on macOS Sequoia and later some system apps
are Cryptex symlinks that the URL-based API skips.
// Third-party
Icon path data is derived from Lucide, used under the ISC license. Portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT); all other copyright is held by Lucide Contributors 2022.