Grouped by Who, What, When, Where, Why, and How.

Who

Who founded the Wawona Organization?

Alex Spaulding. GitHub: aspauldingcode. Settings → About lists the same name.

What

What is a Machine?

A Machine is a saved session in the Machines window. Kinds: native, ssh_waypipe, ssh_terminal, virtual_machine, container. Start launches it. Focus shows the compositor again. See Machines.

What is Wawona Swinging Bridge?

Coming soon (formerly anowaW). Wawona Swinging Bridge turns macOS and Android apps into Wayland clients and can forward them with waypipe-rs onto a Linux compositor (resize, placement, HID). Future: UIKit iOS apps. Not Desktop or LockScreen. Mode A (store/Play, stream-like) and Mode B (privileged) are planned; iOS is Mode B only (not in the App Store IPA). See Wawona Swinging Bridge.

What platforms are available, planned, blocked, or forbidden?

The full Apple family plus Android and Linux. Four states: available, planned, blocked, forbidden. Never "unsupported".

macOS Classic Desktop Replacement exists on the desktop-host build (SIP fully disabled; Enable then Replace now). LockScreen greeter and Android Home/LockScreen are still coming soon. iOS/iPadOS Desktop/LockScreen will be a jailbreak tweak from repo.wawona.io (website docs only. Not in the App Store app). Wawona Swinging Bridge is a separate planned app bridge. VMs and containers are planned on macOS, iOS, iPadOS, visionOS, Android, and Linux. Forbidden on tvOS and watchOS. The on-device shell is bundled zsh, not a VM. watchOS present is SpriteKit; watchOS GL/VK is blocked (no public Metal). tvOS GPU is available: OpenGL ES via ANGLE and Vulkan via MoltenVK, both to Metal. See Platforms, Graphics, and Desktop and LockScreen.

What is iland?

Userspace DRM/KMS/GBM (wwn-iland). Compositors and clients see connector, CRTC, plane, GBM. Present is Metal or AHardwareBuffer. Wawona never opens /dev/dri. Mode A draws inside a Wawona window (Aqua stays). Classic Desktop Replacement (Mode B libwayland-mac.dylib + wwn-igetty) unloads WindowServer and presents fullscreen Metal, so Aqua is not in that session. Not Wawona Swinging Bridge. See iland.

What compositors ship?

Weston and Niri. Both are mandatory native bundles on every product target. Display backend is a setting (auto / wayland / drm), not a hardcoded nested-only path.

What Wayland protocols are supported?

See the generated matrix: Protocol Support. The live registry count changes with ProtocolProfile (store-safe vs desktop-host). Plasma globals are advertised on desktop-host. Status (Functional / Partial / Stub) is a catalog field, not inferred by CI.

When

When will Desktop and LockScreen ship?

macOS Classic Take Over is implemented on wawona-macos-desktop-host. LockScreen greeter and Android Home/LockScreen have no public date. iOS and iPadOS stay on repo.wawona.io (website docs only), not the App Store app. See Desktop and LockScreen. How the engage path works is under How.

When will VMs and containers ship?

Coming soon. Machines will gain virtual_machine and container profiles on macOS, iOS, iPadOS, visionOS, Android, and Linux. Store iOS family uses UTM-SE-class jitless engines (Mode A); jailbreak Mode B IPA from repo.wawona.io may use JIT. macOS: Virtualization + Containerization. Forbidden on tvOS and watchOS. See Mode A/B and VMs and containers.

When do pre-built and store beta builds come out?

GitHub assets on each v* tag (CalVer YY.M.D, for example v26.8.12). TestFlight and Play internal on every green push to master (Ship: beta). Older 0.x marketing versions are retired. Find beta links on the Wawona Discord. Binaries themselves are under Where.

Where

Where can I get pre-built binaries?

Download for GitHub assets on v* tags. Ship: beta (stores) on master is TestFlight and Play internal. Find beta testing links on the Wawona Discord. You do not need Nix to run a downloaded binary. macOS is not an App Store feature target. Filename scheme for developers: Prebuilt binary naming.

Where can I use a local shell?

On every product target. Bundled zsh plus Weston terminal. iPhone included. watchOS gets a constrained zsh. That is the on-device shell, not a VM or container. See On-device shell and VMs and containers.

Where do I search for packages?

repo.wawona.io/search is a chooser. Wasm (App Store / Play, wpm only): search/?channel=wasm. Sileo debs (jailbroken iOS, rootless/rootful): search/?channel=deb. Termux debs (sideloaded Android, not jailbreak, not Play): termux. They are never one list. How to install: Packages.

Where can I donate?

Donate on this site. GitHub Sponsors (one-time or monthly) and Ko-fi. The Sponsor button on github.com/Wawona uses the same links.

Where can I build from source?

Apple Silicon Darwin hosts, plus Linux for Linux artifacts. The flake dropped x86_64-darwin (nixpkgs 26.11 throws). See Compilation.

Why

Why choose Wawona?

Run any desktop software, on any platform, natively. Wawona is a native Wayland compositor (macOS, Android, Linux, and the iOS family), not a video stream of a remote desktop. Nested Weston and Niri ship on every target. Userspace DRM/KMS/GBM is iland. Apple mobile stays App Store / Play shaped (Mode A). See Getting Started and Architecture.

Why macOS?

macOS is a first-class native target, not a Mac App Store sandbox. Mode A presents in a normal window with SIP on. Optional Desktop Replacement (Mode B) is a separate desktop-host build. Do not wait for a Mac store listing. Apple mobile stays store-strict; that strictness does not apply to macOS. See Getting Started and Desktop and LockScreen.

Why donate?

Alex Spaulding maintains Wawona as open source (MIT). Donations keep development going: GitHub Sponsors or Ko-fi via Donate. Optional. The app and source stay available either way.

Why Nix?

Users do not need Nix to run a downloaded binary. Nix is how we cross-compile hermetically. Libraries live in flake inputs (wwn-toolchain, wwn-iland, …), not as 27 C libraries in this repo. Determinate Nix plus FlakeHub is the documented path. Local source builds and nix run .#wawona-* need it.

How

How does Desktop Replacement work?

On macOS desktop-host: Settings → Desktop → Enable Desktop Replacement (Path B; Restart; no screen takeover), then Replace now. SIP must be fully disabled (csrutil disable in Recovery). Classic unloads WindowServer. iland userspace DRM/KMS/GBM presents fullscreen Metal (libwayland-mac.dylib, wwn-igetty VTs). Aqua is not drawn. Still never /dev/dri. Logout or Ctrl+Option+Backspace returns Aqua. Restage with nix run .#install. LockScreen greeter and Android Default Home + LockScreen APIs are still planned. iOS and iPadOS: jailbreak tweak from repo.wawona.io only (not in the App Store app). Not Linux. Not the same as Wawona Swinging Bridge. See Desktop and LockScreen and iland.

How do I connect Wawona to a Fedora VM with SSH and waypipe?

Use a SSH + Waypipe machine. The in-app VM kind is still planned; a Fedora guest you already run (UTM, VirtualBox, virt-manager) is this path. The guest must run waypipe-rs v0.11.0, not an older C waypipe.

On Fedora: enable sshd. Install waypipe-rs 0.11.0 (waypipe --version). Cargo: cargo install --git https://gitlab.freedesktop.org/mstoeckl/waypipe.git --tag v0.11.0 --locked. Put it on PATH for the SSH user.

IP and port: if the guest is bridged, hostname -I (or ip -4 addr) is Host, port 22. If the hypervisor NATs, forward a host port (for example 2222) to guest 22, then Host 127.0.0.1 and Port 2222.

In Wawona: Machines → Add (or Edit). Type SSH + Waypipe. Fill Host, User, Port, auth, and Remote Command (a Wayland client on Fedora, for example weston-simple-shm). Save, then Start. Machine Settings is for display/graphics/input overrides, not the SSH address. If the surface never appears, enable Disable GPU on that machine.

Full walkthrough: Waypipe.

How do I report a bug?

On Apple, Android, and Linux: Settings → About → Report a Bug on GitHub. That copies recent Wawona logs and opens the GitHub bug form with this platform, version, and host OS filled. TestFlight: crashes go to App Store Connect; for hangs, send Beta Feedback from the TestFlight app and use Report a Bug on GitHub (install channel TestFlight (Beta)). Sideloaded IPAs have no TestFlight crash mail. Those copied logs are the report. Full steps: Report a bug. Discord: Wawona Discord.

How do I port Linux software?

Three delivery paths: native port, container, or VM/remote over waypipe. A native port must match the Linux client streamed over waypipe (same protocols, same windowing path). Recipes live in wwn-* repos, not Wawona/dependencies/libs/. X11 is remote or nested XWayland only. No local X server. See Porting.

How do I contribute protocol implementations?

Start from the live registry and PROTOCOL_CATALOG in src/core/wayland/catalog.rs. CI fails if an advertised global has no catalog row. Status stays human-reviewed. Spec links go to wayland.app. Regenerate with scripts/gen-protocol-status.sh.

How do I test locally?

Apple Silicon host. Determinate Nix. From the Wawona repo:

nix run .#wawona-macos
nix run .#wawona-ios
nix run .#wawona-android
nix run .#wawona-linux

Other attributes: wawona-macos-desktop-host, wawona-watchos-app-sim, wawona-tvos-sim, wawona-visionos-sim. Prove the failing cell with nix build before pushing development. See Getting Started, Compilation, and Nix.

How long does a local Nix build take?

Cold builds compile C/C++ substrate in wwn-toolchain and graphics in wwn-iland, plus the Rust compositor, Weston, and Niri. Package and crate counts in older posts are stale. After determinate-nixd login, the org FlakeHub cache hits many store paths. See Nix.

How much disk space does a local build need?

Plan tens of gigabytes for a full Apple-family plus Android tree (Xcode SDKs dominate). Linux-only is smaller. ANGLE and SwiftShader are owned by wwn-iland (L1), not the compositor repo. tvOS, watchOS, visionOS, and Linux are first-class targets alongside macOS, iOS, and Android.

How do I sign Apple-family builds locally?

Set TEAM_ID in .envrc. Schemes exist for iOS, iPadOS, tvOS, watchOS, and visionOS, not iOS-only. See Compilation.