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".

KontekstUżywany termin
Interfejs paska bocznegoKarta
Skróty klawiszoweWorkspace lub karta
Socket APIworkspace
Zmienna środowiskowaCMUX_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

PoziomCzym jestTworzony przezIdentyfikowany przez
OknoOkno macOS⌘⇧N
WorkspaceWpis w pasku bocznym⌘NCMUX_WORKSPACE_ID
PanelPodzielony region⌘D / ⌘⇧DID panelu (socket API)
SurfaceKarta wewnątrz panelu⌘TCMUX_SURFACE_ID
PanelTerminal lub przeglądarkaAutomatycznieID panelu (wewnętrzny)