#Dock

Dock pozwala dodawać kontrolki terminala i przeglądarki do prawego paska bocznego. Kontrolki terminala uruchamiają polecenia w sekcjach opartych na Ghostty, a kontrolki przeglądarki osadzają strony internetowe. Użyj go do feedów, logów, kolejek, statusu git, serwerów deweloperskich, pulpitów lub stron referencyjnych, które zespół chce mieć przy każdym workspace.

#Konfiguracja

cmux szuka konfiguracji Dock w tej kolejności:

  1. .cmux/dock.json dla bieżącego repozytorium, najbliższego projektu nadrzędnego oraz zagnieżdżonych katalogów projektów.
  2. ~/.config/cmux/dock.json dla osobistego domyślnego Docka albo gdy nie ma repozytorium.
Jeśli istnieje konfiguracja projektu i konfiguracja globalna, wygrywa konfiguracja projektu. Konfiguracje zagnieżdżonych projektów dotyczą ich drzewa katalogów. Jeśli nie ma konfiguracji projektu, Dock używa konfiguracji globalnej. Jeśli nie istnieje żaden plik, Dock otwiera się pusty.
Projektowe konfiguracje Dock mogą uruchamiać polecenia. cmux prosi o zaufanie konfiguracji projektu przed uruchomieniem jej kontrolek.

#Przykład dock.json

Plik Dock jest obiektem JSON z tablicą controls. Commituj kontrolki projektu w .cmux/dock.json, gdy chcesz, aby zespół współdzielił ten sam Dock. Zastąp przykładowe polecenia narzędziami, które naprawdę istnieją w repozytorium.

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

#Pola

PoleOpis
idStabilny, unikalny identyfikator kontrolki. Niech będzie krótki i nie używaj go ponownie dla innego polecenia.
titleEtykieta widoczna w nagłówku Dock.
commandPolecenie uruchamiane w terminalu Dock. Wymagane dla kontrolek terminala i uruchamiane w powłoce logowania.
typeOpcjonalny typ kontrolki: terminal (domyślny) lub browser.
urlStrona do otwarcia. Wymagana dla kontrolek przeglądarki.
chromeOpcjonalna widoczność interfejsu przeglądarki. Domyślnie true; false ukrywa pasek adresu i pasek narzędzi, sprawia, że „Ustaw fokus na pasku adresu” nie działa w tym panelu, a cmux browser goto/reload pozostają dostępne.
cwdOpcjonalny katalog roboczy. Ścieżki względne są rozwiązywane od katalogu głównego projektu dla konfiguracji projektowych albo od katalogu domowego dla konfiguracji globalnych.
heightOpcjonalna wysokość kontrolki. Kontrolki bez height współdzielą pozostałe miejsce.
envOpcjonalne zmienne środowiskowe przekazywane tylko do tej kontrolki.

#Udostępnianie zespołowi

Dock jest zaprojektowany do udostępniania przez source control, gdy polecenia należą do repozytorium.

  • Umieść kontrolki specyficzne dla repozytorium w .cmux/dock.json i commituj plik.
  • Umieszczaj osobiste kontrolki w ~/.config/cmux/dock.json, szczególnie poza repozytorium, i nie dodawaj tego pliku do współdzielonego systemu kontroli wersji.
  • Nie umieszczaj sekretów w dock.json. Czytaj sekrety z shella, lokalnego pliku env albo istniejących narzędzi deweloperskich.

#Poproś agenta o konfigurację

Użyj tego promptu, gdy chcesz, aby agent kodujący utworzył kontrolki Dock. Poleca agentowi uruchomić `cmux docs dock`, sprawdzić projekt i zapytać przed zgadywaniem.

Prompt dla agenta
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.