> การแปลนี้สร้างโดย Claude หากมีข้อเสนอแนะในการปรับปรุง กรุณาเปิด PR
English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe
เทอร์มินัล macOS ที่ใช้ Ghostty พร้อมแท็บแนวตั้งและการแจ้งเตือนสำหรับเอเจนต์เขียนโค้ด AI
เปิดไฟล์ `.dmg` แล้วลาก cmux ไปยังโฟลเดอร์แอปพลิเคชัน cmux อัปเดตอัตโนมัติผ่าน Sparkle คุณจึงต้องดาวน์โหลดเพียงครั้งเดียว
### Homebrew
```bash
brew tap manaflow-ai/cmux
brew install --cask cmux
```
สำหรับอัปเดตในภายหลัง:
```bash
brew upgrade --cask cmux
```
เมื่อเปิดใช้งานครั้งแรก macOS อาจขอให้คุณยืนยันการเปิดแอปจากนักพัฒนาที่ได้รับการระบุตัวตน คลิก **เปิด** เพื่อดำเนินการต่อ
## ทำไมต้อง cmux?
ผมรันเซสชัน Claude Code และ Codex จำนวนมากพร้อมกัน ผมใช้ Ghostty กับแผงแบ่งหลายอัน และพึ่งพาการแจ้งเตือนดั้งเดิมของ macOS เพื่อรู้ว่าเมื่อไหร่ที่เอเจนต์ต้องการผม แต่ข้อความแจ้งเตือนของ Claude Code มีแค่ "Claude is waiting for your input" โดยไม่มีบริบท และเมื่อเปิดแท็บมากพอ ผมไม่สามารถอ่านชื่อแท็บได้เลย
ผมลองใช้ออร์เคสเตรเตอร์สำหรับเขียนโค้ดบางตัว แต่ส่วนใหญ่เป็นแอป Electron/Tauri และประสิทธิภาพทำให้ผมรำคาญ ผมยังชอบเทอร์มินัลมากกว่าเพราะออร์เคสเตรเตอร์ GUI บังคับให้คุณใช้เวิร์กโฟลว์ของมัน ผมจึงสร้าง cmux เป็นแอป macOS ดั้งเดิมด้วย Swift/AppKit มันใช้ libghostty สำหรับการแสดงผลเทอร์มินัลและอ่านการตั้งค่า Ghostty ที่มีอยู่ของคุณสำหรับธีม ฟอนต์ และสี
สิ่งที่เพิ่มเติมหลักคือแถบด้านข้างและระบบแจ้งเตือน แถบด้านข้างมีแท็บแนวตั้งที่แสดง git branch, ไดเรกทอรีทำงาน, พอร์ตที่กำลังฟัง และข้อความแจ้งเตือนล่าสุดสำหรับแต่ละเวิร์กสเปซ ระบบแจ้งเตือนจับลำดับเทอร์มินัล (OSC 9/99/777) และมี CLI (`cmux notify`) ที่คุณสามารถเชื่อมต่อกับ hook ของเอเจนต์สำหรับ Claude Code, OpenCode เป็นต้น เมื่อเอเจนต์กำลังรอ แผงของมันจะมีวงแหวนสีน้ำเงินและแท็บจะสว่างขึ้นในแถบด้านข้าง เพื่อให้ผมบอกได้ว่าอันไหนต้องการผมข้ามแผงแบ่งและแท็บต่าง ๆ Cmd+Shift+U ข้ามไปยังรายการที่ยังไม่ได้อ่านล่าสุด
เบราว์เซอร์ในแอปมี API ที่เขียนสคริปต์ได้ ย้ายมาจาก [agent-browser](https://github.com/vercel-labs/agent-browser) เอเจนต์สามารถจับภาพ accessibility tree, รับ element refs, คลิก, กรอกฟอร์ม และรัน JS ได้ คุณสามารถแบ่งแผงเบราว์เซอร์ข้างเทอร์มินัลและให้ Claude Code โต้ตอบกับเซิร์ฟเวอร์สำหรับพัฒนาของคุณโดยตรง
ทุกอย่างเขียนสคริปต์ได้ผ่าน CLI และ socket API — สร้างเวิร์กสเปซ/แท็บ แบ่งแผง ส่งการกดแป้นพิมพ์ เปิด URL ในเบราว์เซอร์
## ปุ่มลัด
### เวิร์กสเปซ
| ปุ่มลัด | การทำงาน |
|----------|--------|
| ⌘ N | เวิร์กสเปซใหม่ |
| ⌘ 1–8 | ข้ามไปเวิร์กสเปซ 1–8 |
| ⌘ 9 | ข้ามไปเวิร์กสเปซสุดท้าย |
| ⌃ ⌘ ] | เวิร์กสเปซถัดไป |
| ⌃ ⌘ [ | เวิร์กสเปซก่อนหน้า |
| ⌘ ⇧ W | ปิดเวิร์กสเปซ |
| ⌘ B | สลับแถบด้านข้าง |
### Surfaces
| ปุ่มลัด | การทำงาน |
|----------|--------|
| ⌘ T | Surface ใหม่ |
| ⌘ ⇧ ] | Surface ถัดไป |
| ⌘ ⇧ [ | Surface ก่อนหน้า |
| ⌃ Tab | Surface ถัดไป |
| ⌃ ⇧ Tab | Surface ก่อนหน้า |
| ⌃ 1–8 | ข้ามไป surface 1–8 |
| ⌃ 9 | ข้ามไป surface สุดท้าย |
| ⌘ W | ปิด surface |
### แผงแบ่ง
| ปุ่มลัด | การทำงาน |
|----------|--------|
| ⌘ D | แบ่งไปทางขวา |
| ⌘ ⇧ D | แบ่งลงล่าง |
| ⌥ ⌘ ← → ↑ ↓ | โฟกัสแผงตามทิศทาง |
| ⌘ ⇧ H | กะพริบแผงที่โฟกัส |
### เบราว์เซอร์
| ปุ่มลัด | การทำงาน |
|----------|--------|
| ⌘ ⇧ L | เปิดเบราว์เซอร์ในแผงแบ่ง |
| ⌘ L | โฟกัสแถบที่อยู่ |
| ⌘ [ | ย้อนกลับ |
| ⌘ ] | ไปข้างหน้า |
| ⌘ R | โหลดหน้าใหม่ |
| ⌥ ⌘ I | เปิดเครื่องมือสำหรับนักพัฒนา |
### การแจ้งเตือน
| ปุ่มลัด | การทำงาน |
|----------|--------|
| ⌘ I | แสดงแผงแจ้งเตือน |
| ⌘ ⇧ U | ข้ามไปยังรายการที่ยังไม่ได้อ่านล่าสุด |
### ค้นหา
| ปุ่มลัด | การทำงาน |
|----------|--------|
| ⌘ F | ค้นหา |
| ⌘ G / ⌘ ⇧ G | ค้นหาถัดไป / ก่อนหน้า |
| ⌘ ⇧ F | ซ่อนแถบค้นหา |
| ⌘ E | ใช้ส่วนที่เลือกสำหรับค้นหา |
### เทอร์มินัล
| ปุ่มลัด | การทำงาน |
|----------|--------|
| ⌘ K | ล้างประวัติการเลื่อน |
| ⌘ C | คัดลอก (เมื่อเลือกข้อความ) |
| ⌘ V | วาง |
| ⌘ + / ⌘ - | เพิ่ม / ลดขนาดฟอนต์ |
| ⌘ 0 | รีเซ็ตขนาดฟอนต์ |
### หน้าต่าง
| ปุ่มลัด | การทำงาน |
|----------|--------|
| ⌘ ⇧ N | หน้าต่างใหม่ |
| ⌘ , | การตั้งค่า |
| ⌘ ⇧ , | โหลดการตั้งค่าใหม่ |
| ⌘ Q | ออก |
## สัญญาอนุญาต
โปรเจกต์นี้อยู่ภายใต้สัญญาอนุญาต GNU Affero General Public License v3.0 หรือใหม่กว่า (`AGPL-3.0-or-later`)
ดู `LICENSE` สำหรับข้อความฉบับเต็ม