Features

Command Palette

⌘K floating panel for launching apps, switching workspaces, opening Settings tabs, running bar actions.

The Command Palette is a floating, keyboard-first launcher. Hit ⌘K to open. Type any of:

  • App name → activates / launches
  • Workspace name → switches
  • Settings tab → opens Settings to that tab
  • Bar action → runs it (toggle dock suppressor, toggle window minder, show command palette, etc.)
  • A natural-language question → routed to your model (when AI routing is on)

Enabling

Settings → Palette → Enable Command Palette is on by default. The hotkey starts firing immediately.

The hotkey can be overridden via UserDefaults keys apexdock.commandPalette.keyCode and apexdock.commandPalette.modifiers. A rebinding UI is on the roadmap.

How matching works

Two layers:

  1. Local fuzzy match — runs against an in-memory index built at panel open. Index entries: pinned apps, all installed .app bundles in /Applications, configured workspaces, every Settings tab, every BarAction case.
  2. AI routing (optional) — when Use AI Routing is on, natural-language input is routed through your configured Assistant provider (Anthropic, OpenAI, or Codex via ChatGPT — see Settings → Assistant). The model returns a structured intent that the palette executes.

If both are enabled and the local match scores high, the local hit wins (faster). The AI path activates when local match is weak — typically a question like "open the budget spreadsheet I had yesterday" rather than "Numbers".

Result rows

Each row shows:

  • Icon (app / SF Symbol / accent dot for workspaces)
  • Name + match highlight
  • Subtype label (Workspace, Settings, App, Action)
  • Keyboard shortcut hint when applicable

Enter runs the top hit. Tab cycles. Escape closes.

Running headlessly

Two options for triggering palette intents from outside ApexDock:

bash
apexdock palette show           # opens the panel for typing
apexdock palette run "switch to Work"   # fuzzy-matches + runs the top hit, no panel

The run form skips the AI path entirely — only local fuzzy match. Useful for binding shortcuts that should always be deterministic (Raycast, Karabiner).

applescript
tell application "ApexDock" to run palette "switch to Work"

Notes

  • The search index rebuilds in less than 50ms even with 200+ installed apps. Pinning a new app or editing a workspace patches the index in place, so the next ⌘K opens instantly.
  • AI routing sends a single structured request and parses the result back into a palette intent, so a vague prompt still ends in a deterministic action.
  • Fuzzy match ranks exact matches first, then prefixes, then substrings, then acronyms (so "wnd" matches "Wonderland").