แนวคิด
cmux จัดระเบียบเทอร์มินัลของคุณเป็นลำดับชั้น 4 ระดับ การเข้าใจระดับเหล่านี้ช่วยเมื่อใช้ socket API, CLI และคีย์ลัด
ลำดับชั้น
Window
└── Workspace (sidebar entry)
└── Pane (split region)
└── Surface (tab within pane)
└── Panel (terminal or browser content)หน้าต่าง
หน้าต่าง macOS เปิดหลายหน้าต่างด้วย ⌘⇧N แต่ละหน้าต่างมีแถบข้างของตัวเองพร้อม workspace อิสระ
Workspace
รายการในแถบข้าง แต่ละ workspace มีพาเนลแยกหน้าจอหนึ่งอันหรือมากกว่า Workspace คือสิ่งที่คุณเห็นในรายการแถบข้างซ้าย
ใน UI และคีย์ลัด workspace มักถูกเรียกว่า "แท็บ" เพราะมันทำหน้าที่เหมือนแท็บในแถบข้าง Socket API และตัวแปรสภาพแวดล้อมใช้คำว่า "workspace"
| บริบท | คำที่ใช้ |
|---|---|
| UI แถบข้าง | แท็บ |
| คีย์ลัด | Workspace หรือแท็บ |
| Socket API | workspace |
| ตัวแปรสภาพแวดล้อม | CMUX_WORKSPACE_ID |
คีย์ลัด: ⌘N (ใหม่), ⌘1–⌘9 (กระโดด), ⌘⇧W (ปิด), ⌃⌘[ / ⌃⌘] (ก่อนหน้า/ถัดไป)
พาเนล
พื้นที่แยกภายใน workspace สร้างโดยแยกด้วย ⌘D (ขวา) หรือ ⌘⇧D (ล่าง) นำทางระหว่างพาเนลด้วย ⌥⌘ + ปุ่มลูกศร
แต่ละพาเนลสามารถมี surface หลายอัน (แท็บภายในพาเนล)
Surface
แท็บภายในพาเนล แต่ละพาเนลมี tab bar ของตัวเองและสามารถมี surface หลายอัน สร้างด้วย ⌘T, นำทางด้วย ⌘[ / ⌘] หรือ ⌃1–⌃9
Surface คือเซสชันเทอร์มินัลหรือเบราว์เซอร์ที่คุณโต้ตอบด้วย แต่ละ surface มีตัวแปรสภาพแวดล้อม CMUX_SURFACE_ID ของตัวเอง
Panel
เนื้อหาภายใน surface ปัจจุบันมีสองประเภท:
- Terminal: เซสชันเทอร์มินัล Ghostty
- Browser: embedded web view
Panel เป็นแนวคิดภายในเป็นหลัก ใน socket API และ CLI คุณโต้ตอบกับ surface มากกว่า panel โดยตรง
ตัวอย่างภาพ
┌──────────────────────────────────────────────────────┐
│ ┌──────────┐ ┌─────────────────────────────────────┐ │
│ │ Sidebar │ │ Workspace "dev" │ │
│ │ │ │ │ │
│ │ │ │ ┌───────────────┬─────────────────┐ │ │
│ │ > dev │ │ │ Pane 1 │ Pane 2 │ │ │
│ │ server │ │ │ [S1] [S2] │ [S1] │ │ │
│ │ logs │ │ │ │ │ │ │
│ │ │ │ │ Terminal │ Terminal │ │ │
│ │ │ │ │ │ │ │ │
│ │ │ │ └───────────────┴─────────────────┘ │ │
│ └──────────┘ └─────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘ในตัวอย่างนี้:
- หน้าต่างมีแถบข้างที่มีสาม workspace (dev, server, logs)
- Workspace "dev" ถูกเลือก แสดงสองพาเนลเคียงข้างกัน
- พาเนล 1 มีสอง surface ([S1] และ [S2] ใน tab bar) โดย S1 เป็นตัวที่ใช้งานอยู่
- พาเนล 2 มี surface หนึ่งอัน
- แต่ละ surface มี panel (เทอร์มินัลในกรณีนี้)
สรุป
| ระดับ | คืออะไร | สร้างโดย | ระบุโดย |
|---|---|---|---|
| หน้าต่าง | หน้าต่าง macOS | ⌘⇧N | — |
| Workspace | รายการในแถบข้าง | ⌘N | CMUX_WORKSPACE_ID |
| พาเนล | พื้นที่แยก | ⌘D / ⌘⇧D | Pane ID (socket API) |
| Surface | แท็บภายในพาเนล | ⌘T | CMUX_SURFACE_ID |
| Panel | เทอร์มินัลหรือเบราว์เซอร์ | อัตโนมัติ | Panel ID (ภายใน) |