Концепції

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 APIworkspace
Змінна середовищаCMUX_WORKSPACE_ID

Скорочення: ⌘N (новий), ⌘1–⌘9 (перехід), ⌘⇧W (закрити), ⌃⌘[ / ⌃⌘] (попередній/наступний)

Панель

Розділена область у робочому просторі. Створюється розділенням за допомогою ⌘D (вправо) або ⌘⇧D (вниз). Переміщуйтесь між панелями за допомогою ⌥⌘ + клавіші зі стрілками.

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

Поверхня

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

Поверхні — це окремі термінальні або браузерні сесії, з якими ви взаємодієте. Кожна поверхня має власну змінну середовища CMUX_SURFACE_ID.

Панель вмісту

Вміст всередині поверхні. Наразі два типи:

  • Термінал: термінальна сесія Ghostty
  • Браузер: вбудований веб-перегляд

Панель вмісту — здебільшого внутрішня концепція. У socket API та CLI ви взаємодієте з поверхнями, а не безпосередньо з панелями вмісту.

Наочний приклад

┌──────────────────────────────────────────────────────┐
│ ┌──────────┐ ┌─────────────────────────────────────┐ │
│ │ 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
Робочий простірЗапис у бічній панелі⌘NCMUX_WORKSPACE_ID
ПанельРозділена область⌘D / ⌘⇧DPane ID (socket API)
ПоверхняВкладка всередині панелі⌘TCMUX_SURFACE_ID
Панель вмістуТермінал або браузерАвтоматичноPanel ID (внутрішній)