#Dock
Dock дає змогу додавати елементи керування терміналом і браузером до правої бічної панелі. Елементи термінала запускають команди в секціях на базі Ghostty, а елементи браузера вбудовують вебсторінки. Використовуйте Dock для стрічок, логів, черг, статусу git, dev-серверів, панелей моніторингу або довідкових сторінок, які команда хоче бачити поруч із кожним workspace.
#Конфігурація
cmux шукає конфігурацію Dock у такому порядку:
.cmux/dock.jsonдля поточного репозиторію, найближчого батьківського проєкту та вкладених каталогів проєктів.~/.config/cmux/dock.jsonдля особистого Dock за замовчуванням або коли репозиторію немає.
#Приклад dock.json
Файл Dock це JSON-об’єкт із масивом controls. Комітьте проєктні елементи керування в .cmux/dock.json, коли хочете, щоб команда мала спільний Dock. Замініть приклади команд інструментами, які справді є в репозиторії.
{
"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
}
]
}#Поля
| Поле | Опис |
|---|---|
id | Стабільний унікальний ідентифікатор елемента керування. Тримайте його коротким і не використовуйте повторно для іншої команди. |
title | Мітка, показана в заголовку Dock. |
command | Команда, що запускається в терміналі Dock. Обов’язкова для елементів керування терміналом і запускається в login shell. |
type | Необов’язковий тип елемента керування: terminal (типово) або browser. |
url | Сторінка, яку слід відкрити. Обов’язкова для елементів керування браузером. |
chrome | Необов’язкове відображення елементів браузера. Типово true; false приховує адресний рядок і панель інструментів, вимикає дію «Фокус на адресному рядку» для цієї панелі, а cmux browser goto/reload залишаються доступними. |
cwd | Необов'язковий робочий каталог. Відносні шляхи розв'язуються від кореня проєкту для проєктних конфігурацій або від домашнього каталогу для глобальних конфігурацій. |
height | Необов’язкова висота елемента керування. Елементи без height ділять решту простору. |
env | Необов'язкові змінні середовища, що передаються лише цьому елементу керування. |
#Спільне використання в команді
Dock спроєктовано для спільного використання через source control, коли команди належать репозиторію.
- Покладіть елементи керування для репозиторію в .cmux/dock.json і закомітьте файл.
- Розміщуйте особисті елементи керування в ~/.config/cmux/dock.json, особливо поза репозиторієм, і не додавайте цей файл до спільного контролю версій.
- Не кладіть секрети в dock.json. Читайте секрети з shell, локального env-файла або наявних інструментів розробки.
#Попросіть агента налаштувати це
Використовуйте цей промпт, коли хочете, щоб coding agent створив елементи Dock. Він просить агента виконати `cmux docs dock`, оглянути проєкт і запитати перед тим, як припускати.
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.