Features

Pinned & Running Apps

Pin apps with drag-and-drop, reorder them, and see what's running at a glance.

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

HowEffect
Drag a .app from Finder onto the barPins the app
Right-click a running unpinned app → PinPins the app
Right-click a pinned app → UnpinRemoves the pin
Drop a pin into a workspace's pinned setPins 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

ActionWhat happens
HideHides the app's windows
Cycle WindowsBrings the next window forward
Do NothingNo-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

bash
# 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.