概念
cmux 以四層層級結構組織你的終端機。了解這些層級有助於使用 socket API、CLI 和鍵盤快捷鍵。
層級結構
Window
└── Workspace (sidebar entry)
└── Pane (split region)
└── Surface (tab within pane)
└── Panel (terminal or browser content)視窗
一個 macOS 視窗。使用 ⌘⇧N 開啟多個視窗。每個視窗都有自己的側邊欄和獨立的工作區。
工作區
側邊欄中的項目。每個工作區包含一個或多個分割窗格。工作區就是你在左側側邊欄中看到的列表。
在 UI 和鍵盤快捷鍵中,工作區通常被稱為「分頁」,因為它們在側邊欄中的行為類似分頁。Socket API 和環境變數使用「workspace」這個術語。
| 情境 | 使用的術語 |
|---|---|
| 側邊欄 UI | 分頁 |
| 鍵盤快捷鍵 | 工作區或分頁 |
| Socket API | workspace |
| 環境變數 | CMUX_WORKSPACE_ID |
快捷鍵:⌘N(新增)、⌘1–⌘9(跳轉)、⌘⇧W(關閉)、⌘⇧[ / ⌘⇧](上一個/下一個)
窗格
工作區內的分割區域。使用 ⌘D(右)或 ⌘⇧D(下)來分割建立。使用 ⌥⌘ + 方向鍵在窗格之間導覽。
每個窗格可以包含多個 surface(窗格內的分頁)。
Surface
窗格內的分頁。每個窗格都有自己的分頁列,可以包含多個 surface。使用 ⌘T 建立,使用 ⌘[ / ⌘] 或 ⌃1–⌃9 導覽。
Surface 是你互動的個別終端機或瀏覽器工作階段。每個 surface 都有自己的 CMUX_SURFACE_ID 環境變數。
面板
Surface 內的內容。目前有兩種類型:
- 終端機:Ghostty 終端機工作階段
- 瀏覽器:內嵌的網頁檢視
面板主要是內部概念。在 socket API 和 CLI 中,你是與 surface 互動,而非直接與面板互動。
視覺範例
┌──────────────────────────────────────────────────────┐
│ ┌──────────┐ ┌─────────────────────────────────────┐ │
│ │ Sidebar │ │ Workspace "dev" │ │
│ │ │ │ │ │
│ │ │ │ ┌───────────────┬─────────────────┐ │ │
│ │ > dev │ │ │ Pane 1 │ Pane 2 │ │ │
│ │ server │ │ │ [S1] [S2] │ [S1] │ │ │
│ │ logs │ │ │ │ │ │ │
│ │ │ │ │ Terminal │ Terminal │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ │ └───────────────┴─────────────────┘ │ │
│ └──────────┘ └─────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘在此範例中:
- 視窗包含一個側邊欄,有三個工作區(dev、server、logs)
- 選擇了「dev」工作區,顯示兩個並排的窗格
- 窗格 1 有兩個 surface(分頁列中的 [S1] 和 [S2]),S1 為活躍狀態
- 窗格 2 有一個 surface
- 每個 surface 包含一個面板(此例中為終端機)
摘要
| 層級 | 說明 | 建立方式 | 識別方式 |
|---|---|---|---|
| 視窗 | macOS 視窗 | ⌘⇧N | — |
| 工作區 | 側邊欄項目 | ⌘N | CMUX_WORKSPACE_ID |
| 窗格 | 分割區域 | ⌘D / ⌘⇧D | 窗格 ID(socket API) |
| Surface | 窗格內的分頁 | ⌘T | CMUX_SURFACE_ID |
| 面板 | 終端機或瀏覽器 | 自動 | 面板 ID(內部) |