<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>Wawona - Posts</title>
      <link>https://wawona.io/posts/</link>
      <description>A native Wayland compositor for macOS, Linux, Android, and the iOS family</description>
      
      <image>
        <url>https://wawona.io/images/logo/Wawona-iOS-Default-1024x1024@1x.jpg</url>
        <title>Wawona</title>
        <link>https://wawona.io/posts/</link>
      </image>
      
      <generator>Zola</generator>
      <language>en</language>
      <atom:link href="https://wawona.io/posts/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Sun, 22 Feb 2026 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Introducing Wawona: a nested Wayland compositor for macOS</title>
          <pubDate>Sun, 22 Feb 2026 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://wawona.io/posts/introducing-wawona/</link>
          <guid>https://wawona.io/posts/introducing-wawona/</guid>
          <description 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;
</description>
      </item>
    </channel>
</rss>
