#Dock

Dock lader dig tilføje terminal- og browserkontroller til højre sidepanel. Terminalkontroller kører kommandoer i Ghostty-baserede sektioner, mens browserkontroller integrerer websider. Brug det til feeds, logs, køer, git-status, udviklingsservere, dashboards eller referencesider, dit team vil have tæt på hvert workspace.

#Konfiguration

cmux leder efter Dock-konfiguration i denne rækkefølge:

  1. .cmux/dock.json for det aktuelle repo, det nærmeste overordnede projekt og indlejrede projektmapper.
  2. ~/.config/cmux/dock.json for din personlige standard-Dock eller når der ikke er et repo.
Hvis både en projektkonfiguration og en global konfiguration findes, vinder projektkonfigurationen. Indlejrede projektkonfigurationer gælder for deres mappetræ. Hvis der ikke findes en projektkonfiguration, bruger Dock den globale konfiguration. Hvis ingen filer findes, åbner Dock tom.
Projektets Dock-konfigurationer kan starte kommandoer. cmux beder dig stole på en projektkonfiguration, før dens kontroller startes.

#Eksempel på dock.json

En Dock-fil er et JSON-objekt med et controls-array. Commit projektkontroller til .cmux/dock.json, når teamkammerater skal dele samme Dock. Erstat eksempelkommandoer med værktøjer, som dit repo faktisk har.

.cmux/dock.json
{
  "controls": [
    {
      "id": "git",
      "title": "Git",
      "command": "lazygit",
      "height": 300
    },
    {
      "id": "logs",
      "title": "Logs",
      "command": "tail -f ./logs/development.log",
      "cwd": "."
    },
    {
      "id": "feed",
      "title": "Feed",
      "command": "cmux feed tui --opentui",
      "height": 320
    },
    {
      "id": "dashboard",
      "title": "Dashboard",
      "type": "browser",
      "url": "http://127.0.0.1:8877/sidebar",
      "chrome": false
    }
  ]
}

#Felter

FeltBeskrivelse
idStabilt unikt id for kontrollen. Hold det kort, og genbrug det ikke til en anden kommando.
titleLabel vist i Dock-headeren.
commandKommandoen, der skal køres i Dock-terminalen. Påkrævet for terminalkontroller og startes i login-shellen.
typeValgfri kontroltype: terminal (standard) eller browser.
urlSiden, der skal åbnes. Påkrævet for browserkontroller.
chromeValgfri visning af browserens betjeningselementer. Standard er true; false skjuler adresselinjen og værktøjslinjen, gør Fokusér adresselinje virkningsløs i ruden, mens cmux browser goto/reload stadig er tilgængelige.
cwdValgfri arbejdsmappe. Relative stier løses fra projektroden for projektkonfigurationer eller fra din hjemmemappe for globale konfigurationer.
heightValgfri kontrolhøjde. Kontroller uden height deler den resterende plads.
envValgfrie miljøvariabler, der kun sendes til den kontrol.

#Deling med et team

Dock er designet til at blive delt i source control, når kommandoerne hører til repoet.

  • Læg repo-specifikke kontroller i .cmux/dock.json, og commit filen.
  • Læg personlige kontroller i ~/.config/cmux/dock.json, især uden for et repo, og hold filen ude af delt source control.
  • Læg ikke secrets i dock.json. Læs secrets fra din shell, en lokal env-fil eller dit eksisterende udviklingsværktøj.

#Bed en agent om at sætte det op

Brug denne prompt, når du vil have en coding agent til at oprette Dock-kontroller. Den beder agenten om at køre `cmux docs dock`, undersøge projektet og spørge før den gætter.

Agent-prompt
Set up cmux Dock controls for the current context.

First, learn the feature before editing:
1. Run `cmux docs dock` if the cmux CLI is available. If it is not, read https://cmux.com/docs/dock.
2. Inspect the repository or current directory to understand the project type, scripts, package manager, dev servers, logs, task runners, test commands, and any existing TUI tools.
3. If the desired Dock is ambiguous, ask the user what they want monitored or controlled before writing files.

Dock is cmux's right-sidebar terminal and browser control area. A Dock config is JSON with a top-level `controls` array. Terminal controls run commands in Ghostty-backed sections using the user's login shell; browser controls embed URLs. Controls are useful for project dashboards, git/status views, dev server or build status, test watchers, log tails, queues, local services, or fixed web dashboards.

Choose where to write the config:
- In a repository or project directory, create or edit `.cmux/dock.json` so teammates can share it.
- For a personal default outside a repo, create or edit `~/.config/cmux/dock.json`.
- If both exist, project `.cmux/dock.json` is more specific for that project. Nested project configs apply to that directory tree; use the nearest relevant project config instead of writing unrelated controls globally.
- If there is no repo and no clear project root, use the global config only after confirming the user wants a personal Dock.

Schema:
{
  "controls": [
    {
      "id": "short-stable-id",
      "title": "Human label",
      "command": "safe command to run",
      "cwd": "optional/path",
      "height": 220,
      "env": { "NAME": "value" }
    },
    {
      "id": "dashboard",
      "title": "Dashboard",
      "type": "browser",
      "url": "http://127.0.0.1:3000",
      "chrome": false
    }
  ]
}

Rules:
- Keep ids stable, lowercase, and unique.
- `type` is optional: `terminal` is the default, or use `browser`.
- Terminal controls require `command`; browser controls require `url`.
- Browser controls default to `chrome: true`. Set `chrome: false` to hide browser chrome, including the address bar and toolbar; Focus Address Bar then does nothing for that pane, while `cmux browser goto` and `cmux browser reload` remain available.
- Use `cwd` for subdirectories; relative paths resolve from the config base.
- Use `height` only when a control needs a fixed amount of vertical space.
- Use `env` only for non-secret values needed by one control.
- Do not put secrets, tokens, or machine-specific private paths in a shared project config.
- Prefer commands that are safe to start repeatedly and make sense in a terminal.
- Do not invent unavailable scripts. Read package files, Makefiles, Procfiles, README docs, config files, and existing tooling first.
- Keep shared project Docks portable for teammates. Put personal or machine-specific controls in the global Dock.

Deliverable:
- Create or update the appropriate dock.json.
- Preserve existing useful controls unless the user asked to replace them.
- Validate that the JSON parses.
- Summarize what each control does and any commands the user should review before trusting the Dock config.