2 points par GN⁺ 2026-03-30 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Un compositeur Wayland qui permet d’exécuter des applications Linux sans machine virtuelle sur macOS, avec un rendu basé sur Metal/OpenGL pour une intégration naturelle à l’environnement de fenêtres de macOS
  • Communication directe via le protocole Wayland à travers des sockets Unix afin de minimiser la perte de performances, avec prise en charge de l’optimisation HiDPI et des décorations côté serveur
  • Écrit en Rust, il offre une accélération matérielle du rendu pour une faible latence et une haute efficacité
  • Avec SSH et waypipe-darwin, il est possible d’afficher les applications d’un hôte Linux dans des fenêtres macOS
  • Distribué sous licence GPLv3, avec une feuille de route en cours incluant des extensions backend pour Windows et Android

Vue d’ensemble

  • Cocoa-Way est un compositeur Wayland qui permet d’exécuter des applications Linux sur macOS comme si elles étaient natives
  • Grâce au rendu Metal/OpenGL, il s’intègre naturellement au bureau macOS et prend en charge une connexion directe au protocole Wayland via des sockets, sans machine virtuelle
  • Comprend des fonctions d’optimisation pour les écrans HiDPI, de décorations côté serveur et de rendu accéléré matériellement
  • Écrit en Rust et distribué sous licence GPLv3

Fonctionnalités principales

  • Intégration native à macOS : rendu basé sur Metal/OpenGL maintenant une compatibilité complète avec la gestion des fenêtres et les effets visuels de macOS
  • Zero VM Overhead : communication directe via le protocole Wayland à travers des sockets Unix sans virtualisation afin de minimiser la perte de performances
  • Prise en charge HiDPI : mise à l’échelle et précision au pixel adaptées aux écrans Retina
  • Interface plus aboutie : inclut des fonctions de décoration côté serveur comme les ombres et les indicateurs de focus
  • Accélération matérielle : pipeline de rendu OpenGL efficace pour obtenir une faible latence et de hautes performances

Méthode d’installation

  • Installation via Homebrew (recommandée)

    • brew tap J-x-Z/tap
    • brew install cocoa-way waypipe-darwin
  • Téléchargement du binaire

    • Les fichiers .dmg ou .zip peuvent être téléchargés depuis la page GitHub Releases
  • Compilation depuis les sources

Démarrage rapide

  • Composant requis : installation de waypipe-darwin nécessaire
    • brew tap J-x-Z/tap && brew install waypipe-darwin
  • Lancer le compositeur
    cocoa-way
    
  • Connecter une application Linux
    ./run_waypipe.sh ssh user@linux-host firefox
    
  • Affiche les applications Wayland d’un hôte Linux dans des fenêtres macOS via SSH

Architecture

  • Côté macOS se trouvent le compositeur Cocoa-Way et le client waypipe
  • Côté VM Linux ou conteneur se trouvent le serveur waypipe et les applications Linux
  • Application Linux → protocole Wayland → serveur waypipe → SSH/socket → client waypipe → Cocoa-Way → Metal/OpenGL → affichage macOS
  • L’ensemble du chemin est directement connecté sans virtualisation, pour une faible latence et une haute efficacité

Comparaison

Solution Latence HiDPI Intégration native Complexité de configuration
Cocoa-Way ⚡ faible ✅ prise en charge complète ✅ fenêtres natives 🟢 facile
XQuartz 🐢 élevée ⚠️ prise en charge partielle ⚠️ particularités de X11 🟡 moyenne
VNC 🐢 élevée ❌ non pris en charge ❌ plein écran uniquement 🟡 moyenne
VM GUI 🐢 élevée ⚠️ prise en charge partielle ❌ fenêtre séparée 🔴 complexe

Feuille de route

  • ✅ backend macOS (Metal/OpenGL)
  • ✅ intégration Waypipe
  • ✅ mise à l’échelle HiDPI
  • 🚧 backend Windows (win-way)
  • 📱 backend Android NDK (prévu)
  • ⏳ prise en charge multi-écran
  • ⏳ synchronisation du presse-papiers

Contexte de recherche

  • Fait partie du projet de recherche « Turbo-Charged Protocol Virtualization », qui explore une virtualisation Wayland multiplateforme à coût nul en s’appuyant sur la monomorphisation des traits Rust et la conversion de pixels basée sur SIMD

Résolution de problèmes

  • En cas d’erreur SSH « remote port forwarding failed », la cause peut être un fichier socket restant sur l’hôte distant
    • Le script run_waypipe.sh le gère automatiquement avec l’option -o StreamLocalBindUnlink=yes
    • En exécution manuelle :
      waypipe ssh -o StreamLocalBindUnlink=yes user@host ...
      

Contribution

  • Il est recommandé d’ouvrir une issue et d’en discuter avant d’ajouter ou de modifier une fonctionnalité
  • Les contributions via Pull Request sont bienvenues

Licence

  • GPL-3.0
  • Copyright © 2024–2025 J-x-Z

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.