개념
cmux는 터미널을 4단계 계층 구조로 구성합니다. 이 단계를 이해하면 소켓 API, CLI, 키보드 단축키를 사용할 때 도움이 됩니다.
계층 구조
Window
└── Workspace (sidebar entry)
└── Pane (split region)
└── Surface (tab within pane)
└── Panel (terminal or browser content)창
macOS 창. ⌘⇧N으로 여러 창을 엽니다. 각 창에는 독립적인 워크스페이스가 있는 자체 사이드바가 있습니다.
워크스페이스
사이드바 항목. 각 워크스페이스에는 하나 이상의 분할 패널이 포함됩니다. 워크스페이스는 왼쪽 사이드바에 나열된 항목입니다.
UI와 키보드 단축키에서 워크스페이스는 사이드바의 탭처럼 동작하므로 "탭"이라고 불리기도 합니다. 소켓 API와 환경 변수에서는 "workspace"라는 용어를 사용합니다.
| 컨텍스트 | 사용되는 용어 |
|---|---|
| 사이드바 UI | 탭 |
| 키보드 단축키 | 워크스페이스 또는 탭 |
| 소켓 API | workspace |
| 환경 변수 | CMUX_WORKSPACE_ID |
단축키: ⌘N (새로 만들기), ⌘1–⌘9 (이동), ⌘⇧W (닫기), ⌘⇧[ / ⌘⇧] (이전/다음)
패널
워크스페이스 내의 분할 영역. ⌘D (오른쪽) 또는 ⌘⇧D (아래)로 분할하여 생성합니다. ⌥⌘ + 방향키로 패널 간 이동합니다.
각 패널은 여러 서피스(패널 내의 탭)를 포함할 수 있습니다.
서피스
패널 내의 탭. 각 패널에는 자체 탭 바가 있으며 여러 서피스를 포함할 수 있습니다. ⌘T로 생성하고, ⌘[ / ⌘] 또는 ⌃1–⌃9로 탐색합니다.
서피스는 상호작용하는 개별 터미널 또는 브라우저 세션입니다. 각 서피스에는 고유한 CMUX_SURFACE_ID 환경 변수가 있습니다.
패널
서피스 내부의 콘텐츠. 현재 두 가지 유형이 있습니다:
- 터미널: Ghostty 터미널 세션
- 브라우저: 내장 웹 뷰
패널은 주로 내부 개념입니다. 소켓 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 | — |
| 워크스페이스 | 사이드바 항목 | ⌘N | CMUX_WORKSPACE_ID |
| 패널 | 분할 영역 | ⌘D / ⌘⇧D | 패널 ID (소켓 API) |
| 서피스 | 패널 내의 탭 | ⌘T | CMUX_SURFACE_ID |
| 패널 | 터미널 또는 브라우저 | 자동 | 패널 ID (내부) |