Cocoa-Way – Native macOS Wayland compositor for running Linux apps seamlessly

Published: (March 28, 2026 at 06:06 AM EDT)
3 min read
Source: Hacker News

Source: Hacker News

🎥 Demo Video

Demo Video

True protocol portability: Cocoa‑Way rendering Linux apps from OrbStack via Unix sockets.

✨ Features

FeatureDescription
🍎 Native macOSMetal/OpenGL rendering, seamless desktop integration
🚀 Zero VM OverheadDirect Wayland protocol via socket, no virtualization
📺 HiDPI ReadyOptimized for Retina displays with proper scaling
🎨 Polished UIServer‑side decorations with shadows and focus indicators
Hardware AcceleratedEfficient OpenGL rendering pipeline

📦 Installation

brew tap J-x-Z/tap
brew install cocoa-way waypipe-darwin

Download Binary

Download the latest .dmg or .zip from the Releases page.

Build from Source

# Install dependencies
brew install libxkbcommon pixman pkg-config

# Clone and build
git clone https://github.com/J-x-Z/cocoa-way.git
cd cocoa-way
cargo build --release

🚀 Quick Start

Required: Install waypipe‑darwin to connect Linux apps.

brew tap J-x-Z/tap && brew install waypipe-darwin

Start the compositor

cocoa-way

Connect Linux apps via SSH

./run_waypipe.sh ssh user@linux-host firefox

🏗️ Architecture

graph LR
    subgraph macOS
        CW[Cocoa-Way Compositor]
        WP1[waypipe client]
    end

    subgraph Linux\ VM/Container
        WP2[waypipe server]
        APP[Linux App Firefox, etc.]
    end

    APP -->|Wayland Protocol| WP2
    WP2 |SSH/Socket| WP1
    WP1 -->|Wayland Protocol| CW
    CW -->|Metal/OpenGL| Display[macOS Display]

🆚 Comparison

SolutionLatencyHiDPINative IntegrationSetup Complexity
Cocoa‑Way⚡ Low✅ Yes✅ Native windows🟢 Easy
XQuartz🐢 High⚠️ Partial⚠️ X11 quirks🟡 Medium
VNC🐢 High❌ No❌ Full screen only🟡 Medium
VM GUI🐢 High⚠️ Partial❌ Separate window🔴 Complex

🗺️ Roadmap

  • macOS backend (Metal/OpenGL)
  • Waypipe integration
  • HiDPI scaling
  • 🚧 Windows backend (win‑way)
  • 📱 Android NDK backend (planned)
  • Multi‑monitor support
  • Clipboard sync

📚 Research

This project is part of the “Turbo‑Charged Protocol Virtualization” research initiative exploring zero‑cost cross‑platform Wayland via Rust trait monomorphization + SIMD‑accelerated pixel conversion.

❓ Troubleshooting

SSH: “remote port forwarding failed”

A stale socket file may exist on the remote host. The run_waypipe.sh script handles this automatically with -o StreamLocalBindUnlink=yes.

If running manually:

waypipe ssh -o StreamLocalBindUnlink=yes user@host ...

🤝 Contributing

Contributions are welcome! Please open an issue first to discuss major changes.

📄 License

GPL‑3.0 – Copyright (c) 2024‑2025 J‑x‑Z

0 views
Back to Blog

Related posts

Read more »