- เป็น Wayland compositor ที่ทำให้สามารถ รันแอปพลิเคชัน Linux บน macOS ได้โดยไม่ต้องใช้ VM โดยใช้การเรนเดอร์บน Metal/OpenGL เพื่อผสานเข้ากับสภาพแวดล้อมหน้าต่างของ macOS ได้อย่างเป็นธรรมชาติ
- ใช้ การสื่อสารโปรโตคอล Wayland โดยตรงผ่าน Unix socket เพื่อลดการสูญเสียประสิทธิภาพให้น้อยที่สุด พร้อมรองรับ การปรับแต่งสำหรับจอ HiDPI และ server-side decoration
- เขียนด้วย Rust และมอบความหน่วงต่ำกับประสิทธิภาพสูงผ่าน การเรนเดอร์แบบเร่งด้วยฮาร์ดแวร์
- สามารถใช้ SSH และ
waypipe-darwin เพื่อ แสดงแอปจากโฮสต์ Linux เป็นหน้าต่างบน macOS ได้
- เปิดเผยภายใต้ สัญญาอนุญาต GPLv3 และกำลังพัฒนาโรดแมปที่รวมถึงการขยายแบ็กเอนด์สำหรับ Windows และ Android
ภาพรวม
- Cocoa-Way คือ Wayland compositor ที่ทำให้สามารถ รันแอปพลิเคชัน Linux บน macOS ได้ราวกับเป็นสภาพแวดล้อมเนทีฟ
- ผสานเข้ากับเดสก์ท็อป macOS ได้อย่างเป็นธรรมชาติผ่าน การเรนเดอร์ด้วย Metal/OpenGL และรองรับการเชื่อมต่อโปรโตคอล Wayland โดยตรงผ่าน socket โดยไม่ต้องใช้ VM
- มีฟีเจอร์ การปรับแต่งสำหรับจอ HiDPI, server-side decoration, และ การเรนเดอร์แบบเร่งด้วยฮาร์ดแวร์
- เขียนด้วย Rust และเผยแพร่ภายใต้ สัญญาอนุญาต GPLv3
ฟีเจอร์หลัก
- การผสานกับ macOS แบบเนทีฟ: การเรนเดอร์บน Metal/OpenGL ทำงานเข้ากันได้เต็มรูปแบบกับการจัดการหน้าต่างและเอฟเฟ็กต์ภาพของ macOS
- Zero VM Overhead: ลดการสูญเสียประสิทธิภาพให้น้อยที่สุดด้วย การสื่อสารโปรโตคอล Wayland โดยตรงผ่าน Unix socket โดยไม่ต้องทำ virtualization
- รองรับ HiDPI: ให้การสเกลและความแม่นยำระดับพิกเซลที่เหมาะกับจอ Retina
- ยกระดับความสมบูรณ์ของ UI: มีฟีเจอร์ server-side decoration เช่น เงาและตัวบ่งชี้โฟกัส
- เร่งด้วยฮาร์ดแวร์: ใช้ OpenGL rendering pipeline ที่มีประสิทธิภาพเพื่อให้ได้ความหน่วงต่ำและสมรรถนะสูง
วิธีติดตั้ง
-
ติดตั้งด้วย Homebrew (แนะนำ)
brew tap J-x-Z/tap
brew install cocoa-way waypipe-darwin
-
ดาวน์โหลดไบนารี
- ดาวน์โหลดไฟล์
.dmg หรือ .zip ได้จากหน้า GitHub Releases
-
สร้างจากซอร์ส
เริ่มต้นอย่างรวดเร็ว
สถาปัตยกรรม
- ฝั่ง macOS มี Cocoa-Way compositor และ waypipe client
- ฝั่ง Linux VM หรือคอนเทนเนอร์มี waypipe server และ แอป Linux
- แอป Linux → โปรโตคอล Wayland → waypipe server → SSH/socket → waypipe client → Cocoa-Way → Metal/OpenGL → จอแสดงผล macOS
- เส้นทางทั้งหมดเป็น การเชื่อมต่อโดยตรงโดยไม่ทำ virtualization จึงให้ความหน่วงต่ำและประสิทธิภาพสูง
การเปรียบเทียบ
| โซลูชัน |
ความหน่วง |
HiDPI |
การผสานแบบเนทีฟ |
ความซับซ้อนในการตั้งค่า |
| Cocoa-Way |
⚡ ต่ำ |
✅ รองรับเต็มรูปแบบ |
✅ หน้าต่างแบบเนทีฟ |
🟢 ง่าย |
| XQuartz |
🐢 สูง |
⚠️ รองรับบางส่วน |
⚠️ มีลักษณะเฉพาะของ X11 |
🟡 ปานกลาง |
| VNC |
🐢 สูง |
❌ ไม่รองรับ |
❌ ใช้ได้เฉพาะเต็มหน้าจอ |
🟡 ปานกลาง |
| VM GUI |
🐢 สูง |
⚠️ รองรับบางส่วน |
❌ หน้าต่างแยกต่างหาก |
🔴 ซับซ้อน |
โรดแมป
- ✅ แบ็กเอนด์ macOS (Metal/OpenGL)
- ✅ การผสานรวมกับ Waypipe
- ✅ การสเกลแบบ HiDPI
- 🚧 แบ็กเอนด์ Windows (win-way)
- 📱 แบ็กเอนด์ Android NDK (อยู่ในแผน)
- ⏳ รองรับหลายจอภาพ
- ⏳ การซิงก์คลิปบอร์ด
พื้นหลังการวิจัย
- เป็นส่วนหนึ่งของโครงการวิจัย “Turbo-Charged Protocol Virtualization”
ที่สำรวจ Wayland virtualization ข้ามแพลตฟอร์มแบบ zero-cost โดยอาศัย Rust trait monomorphization และ การแปลงพิกเซลด้วย SIMD
การแก้ปัญหา
- หากเกิดข้อผิดพลาด SSH ว่า “remote port forwarding failed” สาเหตุอาจมาจากไฟล์ socket ที่ยังค้างอยู่บนโฮสต์ระยะไกล
การมีส่วนร่วม
- แนะนำให้ เปิด issue เพื่อหารือก่อน เพิ่มฟีเจอร์หรือเปลี่ยนแปลงใด ๆ
- ยินดีรับการมีส่วนร่วมผ่าน Pull Request
สัญญาอนุญาต
- GPL-3.0
- ลิขสิทธิ์ © 2024–2025 J-x-Z
1 ความคิดเห็น
ความเห็นจาก Hacker News
พูดตามตรงก็สงสัยอยู่อย่างหนึ่ง ว่ามีแอป GUI บน Linuxตัวไหนบ้างที่ไม่มี native build สำหรับ macOS ส่วนใหญ่ก็ใช้ Qt หรือ GTK เลยรองรับหลายแพลตฟอร์ม นึกแอปยอดนิยมที่เป็นข้อยกเว้นไม่ค่อยออก
xpraสมบูรณ์แบบเลย ตอนนี้สามารถรันแอป GUI ในคอนเทนเนอร์ได้แล้ว เมื่อก่อนเคยทำอะไรคล้าย ๆ กันด้วย X11 แต่ไม่ค่อยชอบ รู้สึกว่าสถานะของ Apple บนเดสก์ท็อปกำลังอ่อนลงเรื่อย ๆ สุดท้ายเหมือนเราจะเข้าสู่ยุคที่ทุกคนกลายเป็น “นักพัฒนา”
โปรเจกต์นี้ดูน่าสงสัยอยู่พอสมควร README เต็มไปด้วยอีโมจิและแทบไม่มีคำอธิบายการทำงาน บอกว่ามี Metal backend แต่ดูเหมือนจริง ๆ จะไม่มี รายการ dependency ก็ดูแปลก ๆ
อยากได้อะไรแบบนี้สำหรับAndroidด้วย termux-x11 เป็นจุดเริ่มต้นที่ดี แต่ถ้า termux รองรับ Wayland หรือถ้า Linux VM บน Android เปิดเผย Wayland socket ได้ สิ่งที่เหลือก็มีแค่ native compositor สำหรับการเรนเดอร์ที่ลื่นไหล
ถ้า macOS บูตเข้าโหมดDarwin shellแบบไม่มี GUI ได้ ก็คงเป็น UNIX ที่ยอดเยี่ยมมากตัวหนึ่ง โดยมีเดสก์ท็อปอย่าง KDE หรือ COSMIC แล้ววาง package manager อย่าง brew ทับลงไป น่าเสียดายที่ไม่ได้เป็นแบบนั้น
ถ้าทำแบบนี้ได้ ก็สงสัยเหมือนกันว่า Wayland client บน macOS จะสามารถสร้าง EGL surfaceได้หรือไม่
หรือว่าจะรันสภาพแวดล้อม Androidด้วย Waydroid ภายใน Orbstack ได้? ตามทฤษฎีแล้วก็น่าจะเป็นไปได้
ถ้าปรับ macOS ให้ใช้คีย์ลัดแบบ Windows/Linuxได้ ก็น่าจะอึดอัดน้อยลงเยอะ
สงสัยว่าโปรเจกต์นี้จะช่วยกระตุ้นความสนใจในGNUstepได้บ้างหรือเปล่า