
2026/03/28 19:06
**Cocoa‑Way – ネイティブ macOS 用 Wayland コンポーザーで Linux アプリをシームレスに動作させる**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Cocoa‑Way は、MetalまたはOpenGLを通じてグラフィックスをレンダリングし、waypipe‑darwin を介してSSH/Unixソケット上で Wayland プロトコルを転送することで、Linux Wayland アプリケーションをネイティブに macOS 上で実行できる軽量コンポジターです。仮想マシンのオーバーヘッドがなく、HiDPI をサポートし、サーバー側装飾付きの洗練された UI とハードウェアアクセラレーションレンダリングを提供します。
ユーザーは Homebrew(
brew tap J-x-Z/tap; brew install cocoa-way waypipe-darwin)で簡単にインストールするか、DMG/ZIP リリースをダウンロードして使用できます。クイックスタートでは waypipe‑darwin をインストールし、コンポジターを起動して Linux ホストに接続します(例:./run_waypipe.sh ssh user@linux-host firefox)。
アーキテクチャは4層で構成されます:Cocoa‑Way コンポジター ↔ waypipe クライアント ↔ waypipe サーバー ↔ Linux アプリ。データは SSH または Unix ソケット上の Wayland プロトコルを介して流れます。比較表では、Cocoa‑Way が低レイテンシ、フル HiDPI 対応、ネイティブウィンドウ統合、および XQuartz、VNC、VM GUI などより簡易なセットアップを提供することが示されています。
ロードマップ:macOS バックエンド(Metal/OpenGL)、Waypipe 統合、更なる HiDPI スケーリング、Windows バックエンド(
win-way)、Android NDK バックエンド、多画面サポート、クリップボード同期。プロジェクトは「Turbo‑Charged Protocol Virtualization」イニシアチブの一部であり、Rust のトレイトモノモルフィゼーションと SIMD ピクセル変換を使用して効率的なレンダリングを実現しています。
トラブルシューティング:SSH リモートポート転送が失敗した場合は、
waypipe ssh -o StreamLocalBindUnlink=yes user@host を使用してください。
貢献:貢献は歓迎されます。主要な変更はプルリクエストを提出する前に issue で議論すべきです。プロジェクトは GPL‑3.0 の下で公開され、© 2024‑2025 J‑x‑Z によって管理されています。
本文
デモビデオ
真のプロトコル互換性
Cocoa‑Way は Unix ソケットを介して OrbStack から Linux アプリをレンダリングします。
✨ 主な特徴
| 特徴 | 説明 |
|---|---|
| 🍎 ネイティブ macOS | Metal/OpenGL による描画、デスクトップとのシームレス統合 |
| 🚀 ゼロ VM オーバーヘッド | ソケット経由で直接 Wayland プロトコルを使用し、仮想化不要 |
| 📺 HiDPI 対応 | Retina ディスプレイに最適化された正しい拡大率 |
| 🎨 洗練された UI | サーバー側の装飾(影・フォーカスインジケータ)付き |
| ⚡ ハードウェアアクセラレーション | 効率的な OpenGL パイプライン |
📦 インストール
Homebrew(推奨)
brew tap J-x-Z/tap brew install cocoa-way waypipe-darwin
バイナリをダウンロード
最新の
.dmg または .zip を Releases から取得してください。
ソースからビルド
# 必要な依存関係をインストール brew install libxkbcommon pixman pkg-config # クローンしてビルド git clone https://github.com/J-x-Z/cocoa-way.git cd cocoa-way cargo build --release
🚀 すぐに始める
⚠️ 必須:Linux アプリを接続するために
をインストールしてください。waypipe-darwinbrew tap J-x-Z/tap && brew install waypipe-darwin
コンポジタを起動:
# SSH 経由で Linux アプリを接続 ./run_waypipe.sh ssh user@linux-host firefox
🏗️ アーキテクチャ
graph LR subgraph macOS CW[Cocoa‑Way<br/>Compositor] WP1[waypipe<br/>client] end subgraph "Linux VM/Container" WP2[waypipe<br/>server] APP["Linux App<br/>(Firefox, etc)"] end APP -->|Wayland Protocol| WP2 WP2 <-->|SSH/Socket| WP1 WP1 -->|Wayland Protocol| CW CW -->|Metal/OpenGL| Display[macOS Display]
🆚 比較
| ソリューション | レイテンシ | HiDPI | ネイティブ統合 | 設定の複雑さ |
|---|---|---|---|---|
| Cocoa‑Way | ⚡ 低 | ✅ | ✅ ネイティブウィンドウ | 🟢 簡単 |
| XQuartz | 🐢 高 | ⚠️ 部分的 | ⚠️ X11 の奇妙さ | 🟡 中程度 |
| VNC | 🐢 高 | ❌ | ❌ フルスクリーン | 🟡 中程度 |
| VM GUI | 🐢 高 | ⚠️ 部分的 | ❌ 別ウィンドウ | 🔴 複雑 |
🗺️ ロードマップ
- macOS バックエンド(Metal/OpenGL)
- Waypipe 統合
- HiDPI スケーリング
- 🚧 Windows バックエンド (
)win-way - 📱 Android NDK バックエンド(予定)
- マルチモニターサポート
- クリップボード同期
📚 研究背景
本プロジェクトは Turbo‑Charged Protocol Virtualization の一環で、Rust のトレイト単型化 + SIMD 加速ピクセル変換を用いたゼロコストクロスプラットフォーム Wayland を探求しています。
❓ トラブルシューティング
SSH: “remote port forwarding failed”
リモートホストに古いソケットファイルが残っています。
run_waypipe.sh スクリプトは -o StreamLocalBindUnlink=yes で自動的に対処します。手動実行の場合:
waypipe ssh -o StreamLocalBindUnlink=yes user@host ...
🤝 コントリビューション
貢献歓迎です! 大きな変更を加える前にまず issue を立てて議論してください。
📄 ライセンス
GPL‑3.0 – Copyright © 2024‑2025 J‑x‑Z