<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Wawona - Posts</title>
    <subtitle>A native Wayland compositor for macOS, Linux, Android, and the iOS family</subtitle>
    <icon>https://wawona.io/images/logo/Wawona-iOS-Default-1024x1024@1x.jpg</icon>
    <logo>https://wawona.io/images/logo/Wawona-iOS-Default-1024x1024@1x.jpg</logo>
    <link rel="self" type="application/atom+xml" href="https://wawona.io/posts/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://wawona.io/posts/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-02-22T00:00:00+00:00</updated>
    <id>https://wawona.io/posts/atom.xml</id>
    <entry xml:lang="en">
        <title>Introducing Wawona: a nested Wayland compositor for macOS</title>
        <published>2026-02-22T00:00:00+00:00</published>
        <updated>2026-02-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://wawona.io/posts/introducing-wawona/"/>
        <id>https://wawona.io/posts/introducing-wawona/</id>
        
        <content type="html" xml:base="https://wawona.io/posts/introducing-wawona/">&lt;p&gt;&lt;strong&gt;Correction (2026-08-25).&lt;&#x2F;strong&gt; This post is the Feb 2026 intro. Product facts now: CalVer (not older 0.x tags). The full Apple family plus Android and Linux. VMs and containers are planned Machine types (forbidden on tvOS&#x2F;watchOS). macOS Classic Desktop Replacement exists on the desktop-host build; LockScreen greeter and Android Home are still coming soon. iOS&#x2F;iPadOS Desktop via repo.wawona.io (not the App Store app). Wawona Swinging Bridge is a separate planned app bridge. tvOS GPU is available (OpenGL ES via ANGLE and Vulkan via MoltenVK, both to Metal). Graphics libs live in &lt;code&gt;wwn-*&lt;&#x2F;code&gt; flake inputs. See &lt;a href=&quot;&#x2F;docs&#x2F;&quot;&gt;docs&lt;&#x2F;a&gt; and &lt;a href=&quot;&#x2F;faq&#x2F;&quot;&gt;FAQ&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Wawona is a native Wayland compositor for Mac, iPhone, iPad, Apple Watch, Apple TV, visionOS, Android, and Linux. The compositor talks Wayland. The pixels go out through Metal, Vulkan, or a CPU&#x2F;SHM fallback.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why&quot;&gt;Why&lt;&#x2F;h2&gt;
&lt;p&gt;On a Mac, the usual way to run Wayland apps was a virtual machine or a slow emulator. Wawona implements the compositor in Rust and draws with the platform GPU APIs, so a Linux Wayland client can show up as a native window. You can still start a VM or container Machine when you want a guest OS.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;how-it-is-built&quot;&gt;How it is built&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;rust-core&quot;&gt;Rust core&lt;&#x2F;h3&gt;
&lt;p&gt;One backend owns protocol state, surfaces, and input. Host UI is SwiftUI&#x2F;ObjC, JNI&#x2F;Compose, or GTK. UniFFI exists in &lt;code&gt;src&#x2F;ffi&lt;&#x2F;code&gt;. It is not the only bridge.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;native-graphics&quot;&gt;Native graphics&lt;&#x2F;h3&gt;
&lt;p&gt;Userspace DRM&#x2F;KMS&#x2F;GBM is &lt;code&gt;wwn-iland&lt;&#x2F;code&gt;. Apple GPU targets use Metal (IOSurface). Android uses AHardwareBuffer. watchOS has no public Metal (GPU blocked). tvOS GPU is available: OpenGL ES via ANGLE and Vulkan via MoltenVK, both to Metal.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;nix&quot;&gt;Nix&lt;&#x2F;h3&gt;
&lt;p&gt;macOS, the iOS family, Android, and Linux each want their own SDK. Nix builds the Rust core and C libraries from sibling &lt;code&gt;wwn-*&lt;&#x2F;code&gt; inputs (&lt;code&gt;wwn-toolchain&lt;&#x2F;code&gt; substrate, &lt;code&gt;wwn-iland&lt;&#x2F;code&gt; graphics, Weston, Niri, waypipe).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;other-platforms&quot;&gt;Other platforms&lt;&#x2F;h2&gt;
&lt;p&gt;The same core ships across the Apple family and Android. Nested Weston and Niri are mandatory bundles on every product target.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;try-it&quot;&gt;Try it&lt;&#x2F;h2&gt;
&lt;p&gt;CalVer builds: &lt;a href=&quot;&#x2F;download&#x2F;&quot;&gt;Download&lt;&#x2F;a&gt;, TestFlight via Discord, or GitHub &lt;code&gt;v*&lt;&#x2F;code&gt; assets. Start with the &lt;a href=&quot;&#x2F;docs&#x2F;getting-started&#x2F;&quot;&gt;docs&lt;&#x2F;a&gt; or the &lt;a href=&quot;&#x2F;faq&#x2F;&quot;&gt;FAQ&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
