> การแปลนี้สร้างโดย Claude หากมีข้อเสนอแนะในการปรับปรุง กรุณาเปิด PR

<p align="center">
  <a href="README.md">English</a> | <a href="README.zh-CN.md">简体中文</a> | <a href="README.zh-TW.md">繁體中文</a> | <a href="README.ko.md">한국어</a> | <a href="README.de.md">Deutsch</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.it.md">Italiano</a> | <a href="README.da.md">Dansk</a> | <a href="README.ja.md">日本語</a> | <a href="README.pl.md">Polski</a> | <a href="README.ru.md">Русский</a> | <a href="README.bs.md">Bosanski</a> | <a href="README.ar.md">العربية</a> | <a href="README.no.md">Norsk</a> | <a href="README.pt-BR.md">Português (Brasil)</a> | ไทย | <a href="README.tr.md">Türkçe</a>
</p>

<h1 align="center">cmux</h1>
<p align="center">เทอร์มินัล macOS ที่ใช้ Ghostty พร้อมแท็บแนวตั้งและการแจ้งเตือนสำหรับเอเจนต์เขียนโค้ด AI</p>

<p align="center">
  <a href="https://github.com/manaflow-ai/cmux/releases/latest/download/cmux-macos.dmg">
    <img src="./docs/assets/macos-badge.png" alt="ดาวน์โหลด cmux สำหรับ macOS" width="180" />
  </a>
</p>

<p align="center">
  <img src="./docs/assets/screenshot.png" alt="ภาพหน้าจอ cmux" width="900" />
</p>

## คุณสมบัติ

- **แท็บแนวตั้ง** — แถบด้านข้างแสดง git branch, ไดเรกทอรีทำงาน, พอร์ตที่กำลังฟัง และข้อความแจ้งเตือนล่าสุด
- **วงแหวนแจ้งเตือน** — แผงจะมีวงแหวนสีน้ำเงินและแท็บจะสว่างขึ้นเมื่อเอเจนต์ AI (Claude Code, OpenCode) ต้องการความสนใจของคุณ
- **แผงแจ้งเตือน** — ดูการแจ้งเตือนที่รอดำเนินการทั้งหมดในที่เดียว ข้ามไปยังรายการที่ยังไม่ได้อ่านล่าสุด
- **แผงแบ่ง** — แบ่งแนวนอนและแนวตั้ง
- **เบราว์เซอร์ในแอป** — แบ่งเบราว์เซอร์ข้างเทอร์มินัลพร้อม API ที่เขียนสคริปต์ได้ ย้ายมาจาก [agent-browser](https://github.com/vercel-labs/agent-browser)
- **เขียนสคริปต์ได้** — CLI และ socket API สำหรับสร้างเวิร์กสเปซ แบ่งแผง ส่งการกดแป้นพิมพ์ และควบคุมเบราว์เซอร์อัตโนมัติ
- **แอป macOS ดั้งเดิม** — สร้างด้วย Swift และ AppKit ไม่ใช่ Electron เริ่มต้นเร็ว ใช้หน่วยความจำน้อย
- **เข้ากันได้กับ Ghostty** — อ่านการตั้งค่าที่มีอยู่ของคุณจาก `~/.config/ghostty/config` สำหรับธีม ฟอนต์ และสี
- **เร่งความเร็วด้วย GPU** — ขับเคลื่อนโดย libghostty สำหรับการแสดงผลที่ลื่นไหล

## การติดตั้ง

### DMG (แนะนำ)

<a href="https://github.com/manaflow-ai/cmux/releases/latest/download/cmux-macos.dmg">
  <img src="./docs/assets/macos-badge.png" alt="ดาวน์โหลด cmux สำหรับ macOS" width="180" />
</a>

เปิดไฟล์ `.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` สำหรับข้อความฉบับเต็ม
