Koncepty
cmux organizuje Twoje terminale w czteropoziomowej hierarchii. Zrozumienie tych poziomów pomaga przy korzystaniu z socket API, CLI i skrótów klawiszowych.
Hierarchia
Window
└── Workspace (sidebar entry)
└── Pane (split region)
└── Surface (tab within pane)
└── Panel (terminal or browser content)Okno
Okno macOS. Otwórz wiele okien za pomocą ⌘⇧N. Każde okno ma własny pasek boczny z niezależnymi workspace'ami.
Workspace
Wpis w pasku bocznym. Każdy workspace zawiera jeden lub więcej dzielonych paneli. Workspace'y to elementy widoczne na liście w lewym pasku bocznym.
W interfejsie i skrótach klawiszowych workspace'y często nazywane są "kartami", ponieważ zachowują się jak karty w pasku bocznym. Socket API i zmienne środowiskowe używają terminu "workspace".
| Kontekst | Używany termin |
|---|---|
| Interfejs paska bocznego | Karta |
| Skróty klawiszowe | Workspace lub karta |
| Socket API | workspace |
| Zmienna środowiskowa | CMUX_WORKSPACE_ID |
Skróty: ⌘N (nowy), ⌘1–⌘9 (przejdź), ⌘⇧W (zamknij), ⌃⌘[ / ⌃⌘] (poprzedni/następny)
Panel
Podzielony region w workspace. Tworzony przez podział za pomocą ⌘D (prawo) lub ⌘⇧D (dół). Nawiguj między panelami za pomocą ⌥⌘ + klawisze strzałek.
Każdy panel może zawierać wiele surface'ów (karty wewnątrz panelu).
Surface
Karta wewnątrz panelu. Każdy panel ma własny pasek kart i może zawierać wiele surface'ów. Tworzony za pomocą ⌘T, nawigacja za pomocą ⌘[ / ⌘] lub ⌃1–⌃9.
Surface'y to indywidualne sesje terminala lub przeglądarki z którymi wchodzisz w interakcję. Każdy surface ma własną zmienną środowiskową CMUX_SURFACE_ID.
Panel
Zawartość wewnątrz surface'a. Obecnie dwa typy:
- Terminal: sesja terminala Ghostty
- Przeglądarka: osadzony widok webowy
Panel to głównie wewnętrzny koncept. W socket API i CLI wchodzisz w interakcję z surface'ami, a nie bezpośrednio z panelami.
Przykład wizualny
┌──────────────────────────────────────────────────────┐
│ ┌──────────┐ ┌─────────────────────────────────────┐ │
│ │ Sidebar │ │ Workspace "dev" │ │
│ │ │ │ │ │
│ │ │ │ ┌───────────────┬─────────────────┐ │ │
│ │ > dev │ │ │ Pane 1 │ Pane 2 │ │ │
│ │ server │ │ │ [S1] [S2] │ [S1] │ │ │
│ │ logs │ │ │ │ │ │ │
│ │ │ │ │ Terminal │ Terminal │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ │ └───────────────┴─────────────────┘ │ │
│ └──────────┘ └─────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘W tym przykładzie:
- Okno zawiera pasek boczny z trzema workspace'ami (dev, server, logs)
- Workspace "dev" jest wybrany, pokazując dwa panele obok siebie
- Panel 1 ma dwa surface'y ([S1] i [S2] w pasku kart), z aktywnym S1
- Panel 2 ma jeden surface
- Każdy surface zawiera panel (w tym przypadku terminal)
Podsumowanie
| Poziom | Czym jest | Tworzony przez | Identyfikowany przez |
|---|---|---|---|
| Okno | Okno macOS | ⌘⇧N | — |
| Workspace | Wpis w pasku bocznym | ⌘N | CMUX_WORKSPACE_ID |
| Panel | Podzielony region | ⌘D / ⌘⇧D | ID panelu (socket API) |
| Surface | Karta wewnątrz panelu | ⌘T | CMUX_SURFACE_ID |
| Panel | Terminal lub przeglądarka | Automatycznie | ID panelu (wewnętrzny) |