#Dock

Dock vous permet d'ajouter des contrôles de terminal et de navigateur à la barre latérale droite. Les contrôles de terminal exécutent des commandes dans des sections basées sur Ghostty, tandis que les contrôles de navigateur intègrent des pages web. Utilisez-le pour des flux, des logs, des files d'attente, l'état git, des serveurs de développement, des tableaux de bord ou des pages de référence que votre équipe veut garder près de chaque workspace.

#Configuration

cmux recherche la configuration Dock dans cet ordre :

  1. .cmux/dock.json pour le dépôt actuel, le projet parent le plus proche et les répertoires de projets imbriqués.
  2. ~/.config/cmux/dock.json pour votre Dock personnel par défaut ou lorsqu'il n'y a pas de dépôt.
Si une configuration de projet et une configuration globale existent toutes les deux, la configuration de projet l'emporte. Les configurations de projets imbriqués s'appliquent à leur arborescence. S'il n'existe aucune configuration de projet, Dock utilise la configuration globale. Si aucun fichier n'existe, Dock s'ouvre vide.
Les configurations Dock de projet peuvent lancer des commandes. cmux vous demande de faire confiance à une configuration de projet avant de lancer ses contrôles.

#Exemple dock.json

Un fichier Dock est un objet JSON avec un tableau controls. Commitez les contrôles de projet dans .cmux/dock.json lorsque vous voulez que vos coéquipiers partagent le même Dock. Remplacez les commandes d'exemple par les outils réellement disponibles dans votre dépôt.

.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
    }
  ]
}

#Champs

ChampDescription
idIdentifiant unique et stable du contrôle. Gardez-le court et ne le réutilisez pas pour une autre commande.
titleLibellé affiché dans l'en-tête du Dock.
commandCommande à exécuter dans le terminal du Dock. Requise pour les contrôles de terminal et lancée dans le shell de connexion.
typeType de contrôle facultatif : terminal (par défaut) ou browser.
urlPage à ouvrir. Requise pour les contrôles de navigateur.
chromeAffichage facultatif de l’interface du navigateur. La valeur par défaut est true ; false masque la barre d’adresse et la barre d’outils, rend « Cibler la barre d'adresse » sans effet dans ce volet et laisse cmux browser goto/reload disponibles.
cwdRépertoire de travail facultatif. Les chemins relatifs sont résolus depuis la racine du projet pour les configurations de projet, ou depuis votre dossier personnel pour les configurations globales.
heightHauteur facultative du contrôle. Les contrôles sans height se partagent l'espace restant.
envVariables d'environnement facultatives transmises uniquement à ce contrôle.

#Partager avec une équipe

Dock est conçu pour être partagé avec le contrôle de version lorsque les commandes appartiennent au dépôt.

  • Placez les contrôles propres au dépôt dans .cmux/dock.json et commitez le fichier.
  • Placez les contrôles personnels dans ~/.config/cmux/dock.json, surtout hors d'un dépôt, et gardez ce fichier hors du contrôle de source partagé.
  • Ne mettez pas de secrets dans dock.json. Lisez les secrets depuis votre shell, un fichier env local ou vos outils de développement existants.

#Demander à un agent de le configurer

Utilisez ce prompt quand vous voulez qu'un agent de code crée des contrôles Dock. Il demande à l'agent d'exécuter `cmux docs dock`, d'inspecter le projet et de poser une question avant de deviner.

Prompt d'agent
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.