Documentation / Command Center

Command Center

Super+D opens the Command Center — Aphotic’s tabbed dashboard overlay. It’s a fullscreen, transparent overlay surface (layer-shell, drawn above everything else) that dismisses on click-outside or Escape; the same click on the bar’s clock module that opened the old single-scroll Dashboard now opens this, tab-first, straight to the Dashboard tab.

This page covers each tab in depth. For the one-paragraph version, see Supported Features.

The tabs, in order: Dashboard, Flow, Performance, Workspaces, Wallpapers, AI Chat, then any tabs installed plugins add (Agent Graph, for one). With the Signal line skin the tab row sits on its own glass capsule.

Opening it

  • Super+D
  • Click the clock in the bar
  • qs -c aphotic ipc call dashboard toggle

All three flip the same underlying state — there’s one toggle, three ways to hit it.

Dashboard tab

The landing tab, and the only one always covered by the Full/Taskbar-style bar clock click:

  • Clock & calendar — current date/time plus a month view.
  • Now-playing media — MPRIS-backed player card (title/artist/artwork, transport controls) when something’s playing.
  • Pomodoro card — mirrors the bar’s Pomodoro icon: 25/5 focus/break cycle, start/pause from the card, auto-engages Do Not Disturb during a focus block.
  • Quick toggles — Wi-Fi, Bluetooth, Do Not Disturb, one click each.
  • Weather card — current temperature/condition plus a short forecast via Open-Meteo. Leave the location blank in Settings → Clock/Date for IP-based auto-detection, or set an explicit city and Celsius/Fahrenheit. The resolved location and last-good forecast are cached to disk, so a fresh shell start shows the last known weather immediately rather than a blank card while the network round-trip completes.

Flow tab

The live map of which workloads hold which resources, added in 2.0.5: reservoirs (GPU VRAM, CPU, memory), the workloads claiming them, a claim lens for any node, the passports and action receipts behind it, and a negotiation bar when two workloads contend. It only listens while visible. See Resource Engine → Flow for the full breakdown.

Performance tab

Live system telemetry, backed by the shell’s own SystemUsage/NetworkUsage services (no native plugin):

  • CPU — a hero gauge plus history graph.
  • GPU — same treatment, when a supported GPU is present.
  • Memory — gauge + history.
  • Storage — per-disk gauges.
  • Network — live throughput, up/down.

This is the same data that used to live flattened into one long scroll on the old Dashboard, now split into its own tab so it doesn’t compete with the calendar/media cards for space.

Workspaces tab

A workspace overview built on the shell’s own Hypr.qml service (Hyprland’s live workspace/window state, not hyprctl polling): a numbered grid, one entry per Hyprland workspace, the currently-focused one visually distinguished the same way the bar’s own workspace indicator marks it. Click a workspace to jump straight to it and close Command Center.

This is a read-and-jump overview, not a full window-thumbnail switcher — there are no live window previews or drag-to-move-between-workspaces here. For that level of per-window control, use the launcher’s / mode (switch to a specific open window) or the bar itself.

Wallpapers tab

Cycle or pick a wallpaper from the active theme’s set, live, without leaving Command Center or opening Settings. Switching themes entirely is still a Settings → Appearance job; this tab only reaches within the theme that’s already active. See Theming for how a wallpaper choice turns into a full color re-application.

AI Chat tab

Talks to the same backend Intelligence (Super+Shift+A) uses — AiProviders, AiConfig, AiKeys — just surfaced as a fixed tab inside the bigger Command Center overlay instead of a standalone right-docked popout. The two share providers, keys, and Ollama host, but keep independent conversation state: Intelligence has real persisted session history (title, provider, model, full log, survives a shell restart); the AI Chat tab does not.

Providers

Four built-in providers behind one interface, a fifth if the optional Assistant is installed, plus any provider a chat-provider plugin adds (listed first). Ollama and the Assistant are locally hosted, so they only appear when the ai layer is installed:

Provider Transport Needs
Claude Subprocess to the claude CLI The claude CLI with a logged-in OAuth session (claude auth status), not an API key
Ollama Direct HTTP to a configurable local/LAN host (/v1/chat/completions, OpenAI-compatible) Nothing — just a reachable host
Gemini Direct HTTP Its own API key
ChatGPT Direct HTTP Its own API key
Aphotic Assistant (opt-in) The same Ollama call with a pinned model and a fixed system prompt NVIDIA GPU, install.sh --with-assistant

Claude is the only CLI-subprocess-based provider; Ollama/Gemini/ChatGPT are all direct HTTP clients behind the same uniform interface (sendMessage, available, requiresApiKey, …). A provider with no key or unreachable host configured shows a clear inline message telling you what to set, rather than failing silently or just not appearing.

Ollama is the default provider (activeProvider starts as ollama); it’s key-free — its model sub-pill (which local model to talk to) is populated live from the host’s /api/tags endpoint, the same one aphotic ai status checks.

Where things live

  • Keys — ~/.config/aphotic/ai-keys.json, created chmod 600. Deliberately kept separate from the shell’s general shell.json/settings.json state files, which have no special permissions and are read by all kinds of things (any future jq-dump debug command, any process with read access to your config dir); real credentials don’t belong mixed in there.
  • Active provider / Ollama host & model / llama-swap and LM Studio hosts / inference mode — ~/.config/aphotic/ai-config.json. Not a secret, so it doesn’t need the tighter file.
  • CLI equivalent — aphotic ai status (checks claude/ollama reachability, lists loaded Ollama models) and aphotic ai profile <provider>[:<model>] (switches the panel’s active provider from the terminal — the same file the panel itself watches, so a running shell picks it up live with no reload). See CLI Reference.

The AI Chat tab is about talking to a provider. A separate tab — Agent Graph — covers the other side: a live, zoomable node graph of what a Claude Code, Codex, or OpenCode session is actually doing (every tool call, subagent spawn, and parent/child relationship, as it happens), plus replay for finished runs. It’s a standalone opt-in plugin (aphotic plugin install agent-graph) on top of the installer’s ai layer, unlike AI Chat which only needs a configured provider — and it’s one of several AI-tracking surfaces, alongside the Agent Audit workspace tool and the Agent Notch Tile. See Agentic Workflows for the full opt-in contract and exactly what is and isn’t collected, and Plugin System for the plugin mechanism itself.

Theme consistency

Every color in Command Center’s tabs and chat UI reads from the live palette (Colours.palette.*) rather than a hardcoded value, so switching themes re-skins Command Center along with everything else — no separate theming pass needed. See Theming.

See also