# Концепции

cmux организует терминалы в четырёхуровневую иерархию. Понимание этих уровней помогает при работе с socket API, CLI и горячими клавишами.

## Иерархия

```
Window
  └── Workspace (sidebar entry)
        └── Pane (split region)
              └── Surface (tab within pane)
                    └── Panel (terminal or browser content)
```

### Окно

Окно macOS. Открой несколько окон с помощью ⌘⇧N. У каждого окна своя боковая панель с независимыми рабочими пространствами.

### Рабочее пространство

Элемент боковой панели. Каждое рабочее пространство содержит одну или более разделённых панелей. Рабочие пространства это то, что ты видишь на левой боковой панели.

В интерфейсе и горячих клавишах рабочие пространства часто называются "вкладками", потому что ведут себя как вкладки на боковой панели. Socket API и переменные окружения используют термин "workspace".

| Контекст | Используемый термин |
| --- | --- |
| Интерфейс боковой панели | Вкладка |
| Горячие клавиши | Рабочее пространство или вкладка |
| Socket API | `workspace` |
| Переменная окружения | `CMUX_WORKSPACE_ID` |

**Шорткаты: ⌘N (новый), ⌘1–⌘9 (прыжок), ⌘⇧W (закрыть), ⌃⌘\[ / ⌃⌘\] (пред./след.)**

### Панель

Разделённая область внутри рабочего пространства. Создаётся разделением с помощью ⌘D (вправо) или ⌘⇧D (вниз). Навигация между панелями: ⌥⌘ + стрелки.

Каждая панель может содержать несколько поверхностей (вкладок внутри панели).

### Поверхность

Вкладка внутри панели. У каждой панели своя полоса вкладок и она может содержать несколько поверхностей. Создаётся через ⌘T, навигация через ⌘\[ / ⌘\] или ⌃1–⌃9.

Поверхности это отдельные сессии терминала или браузера, с которыми ты взаимодействуешь. У каждой поверхности своя переменная окружения CMUX\_SURFACE\_ID.

### Панель

Содержимое внутри поверхности. Сейчас два типа:

-   **Терминал: сессия терминала Ghostty**
-   **Браузер: встроенный веб-вид**

Панель это в основном внутренняя концепция. В socket API и CLI ты взаимодействуешь с поверхностями, а не напрямую с панелями.

## Группы рабочих пространств

Объединяйте связанные рабочие пространства в сворачиваемые именованные секции на боковой панели. Каждая группа принадлежит якорному рабочему пространству, её можно закрепить, переименовать и задать ей собственный значок и цвет. Новые рабочие пространства можно создавать прямо внутри группы из её заголовка.

[Читать полное руководство по группам рабочих пространств](https://cmux.com/ru/docs/workspace-groups)

## Визуальный пример

```
┌──────────────────────────────────────────────────────┐
│ ┌──────────┐ ┌─────────────────────────────────────┐ │
│ │ Sidebar  │ │ Workspace "dev"                     │ │
│ │          │ │                                     │ │
│ │          │ │ ┌───────────────┬─────────────────┐ │ │
│ │ > dev    │ │ │ Pane 1        │ Pane 2          │ │ │
│ │   server │ │ │ [S1] [S2]     │ [S1]            │ │ │
│ │   logs   │ │ │               │                 │ │ │
│ │          │ │ │  Terminal     │  Terminal       │ │ │
│ │          │ │ │               │                 │ │ │
│ │          │ │ └───────────────┴─────────────────┘ │ │
│ └──────────┘ └─────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
```

В этом примере:

-   Окно содержит боковую панель с тремя рабочими пространствами (dev, server, logs)
-   Рабочее пространство "dev" выбрано, показывает две панели рядом
-   Панель 1 имеет две поверхности (\[S1\] и \[S2\] на полосе вкладок), с активной S1
-   Панель 2 имеет одну поверхность
-   Каждая поверхность содержит панель (в данном случае терминал)

## Итого

| Уровень | Что это | Создаётся | Идентифицируется |
| --- | --- | --- | --- |
| Окно | Окно macOS | `⌘⇧N` | — |
| Рабочее пространство | Элемент боковой панели | `⌘N` | `CMUX_WORKSPACE_ID` |
| Панель | Разделённая область | `⌘D` / `⌘⇧D` | ID панели (socket API) |
| Поверхность | Вкладка в панели | `⌘T` | `CMUX_SURFACE_ID` |
| Панель | Терминал или браузер | Автоматически | ID панели (внутренний) |

Canonical: https://cmux.com/ru/docs/concepts

Documentation index: https://cmux.com/llms.txt
