The bar's center zone splits into two sections, separated by a vertical pill divider:
- Pinned apps (left of the divider) — apps you've explicitly pinned. Always visible whether they're running or not.
- Running unpinned apps (right of the divider) — apps with at least one visible window right now.
Both sections support drag-to-reorder. Both honour right-click for context actions.
Pinning
| How | Effect |
|---|---|
Drag a .app from Finder onto the bar | Pins the app |
| Right-click a running unpinned app → Pin | Pins the app |
| Right-click a pinned app → Unpin | Removes the pin |
| Drop a pin into a workspace's pinned set | Pins to that workspace only |
Pinned order is per-workspace when one is active, otherwise per-global. Unpinned order is local to the current session and isn't persisted across launches (intentional — running-app order changes constantly anyway).
Click behaviour
The default click on a foreground app icon brings its windows forward. You can change what happens when you click an app that's already in front:
Settings → Bar → Click Frontmost App Icon
| Action | What happens |
|---|---|
| Hide | Hides the app's windows |
| Cycle Windows | Brings the next window forward |
| Do Nothing | No-op — useful if you want only the right-click menu |
Right-click menu
Each app icon's right-click menu lets you:
- Show all windows — opens the window peek popover
- Hide / Show the app
- Quit the app
- Pin / Unpin
- Move to workspace (if any are defined)
Window peek
If Settings → Bar → Hover to Preview Windows is on, hovering an icon for a fraction of a second pops a list of that app's open windows. Click any window to bring it forward.
With Show Live Thumbnails on (and Screen Recording permission granted), each row in the peek shows a live capture of the window. Without permission, you get titles only.
Multi-window stacking
When Settings → Bar → Stack Multi-Window Icons is on, an app with more than one open window renders with a subtle layered icon — a visual hint without needing to hover.
Notification badges
ApexDock mirrors the macOS Dock's unread badges onto its own pinned and running app icons. Mail, Messages, Calendar, Slack, anything that posts a Dock badge through the standard macOS API shows the same count or dot on its ApexDock icon.
- Reads the live badge state from the macOS Dock's accessibility tree (refreshed every 2 seconds and on app launch / quit).
- Requires Accessibility permission. Without it, badges silently disappear — the bar still works.
- Large counts (
99+,9999+, etc.) truncate cleanly at the icon edge instead of overflowing into the neighboring app. - The badge sits on the icon's top-right corner. Agent approval shakes still use a separate red dot in the agent tray, so the two signals don't collide.
There is no toggle for badges — they follow whatever the macOS Dock would show. Hide a badge for a specific app the same way you would on the Dock (in that app's own preferences).
Driving from a script
# Activate or launch by bundle id
apexdock app focus com.apple.Safari
# List currently pinned apps
apexdock app list-pinned
# AppleScript variant
osascript -e 'tell application "ApexDock" to focus app "com.apple.Safari"'
focus activates the app if it's running, otherwise launches it. Returns {bundleId, launched} so the caller can branch.
Notes
- The running-apps list reflects what macOS itself sees: regular apps with at least one visible window. It refreshes on workspace switch, app launch/quit, and window changes.
- Per-workspace pins live on each workspace, not globally. Activating a workspace replaces the visible pinned row with that workspace's set.