Formerly Roost. Binaries, packages, crates and environment variables were renamed in #505; the old roost-* names keep working for one release (see packaging/README.md).
A new, independent Wayland desktop session with a GNOME-inspired everyday workflow. This project is not a GNOME Shell rewrite and does not promise compatibility with GNOME Shell extensions or private Mutter APIs.
The compositor is a long-lived Rust process built with Smithay. The shell UI runs as a supervised Wayland client. The first delivery target is a nested developer preview that can map ordinary applications and recover its shell UI after a shell crash.
Our v1 goal is GNOME 51 parity plus better responsiveness at matching CPU — the checklist stays public and current there.
Your machine runs one task at a time using your signed-in AI coding CLI. The relay alternates between eligible School (OS) and Reef (apps) hives after each task. If one hive has no work, the other can continue.
The guide covers prerequisites, verified just setup, credentials, provider
costs, and how to stop with Ctrl+C. Your subscription quota or API charges apply.
Never post account credentials or API keys in issues or pull requests.
-
Test-drive in a VM (one command): On Linux or macOS, evaluate Tuna Desktop without building it or installing Tuna Desktop packages. The script needs these host tools first; it checks for them and stops with install hints if any is missing:
- QEMU (
qemu-system-x86_64orqemu-system-aarch64, matching the host architecture, plusqemu-img). On Linux,/dev/kvmis strongly recommended; without it QEMU falls back to very slow TCG emulation. - Podman with working rootless user namespaces (on macOS, an initialized and running
podman machine). - cosign, to verify the image signature.
- About 10 GiB free in
$HOMEand/var/tmp, and network access to GitHub,ghcr.ioand the Sigstore verification services.
The guest architecture follows the host (x86_64 or aarch64). Corral and its bootc plugin are the only components the script installs for you.
curl -fsSL https://raw.githubusercontent.com/tuna-os/tuna-desktop/main/scripts/try-tuna-desktop | bashDownloads Corral (checksum-verified), pulls and cosign-verifies the published TunaOS image, and launches Tuna Desktop in local QEMU with a local-only browser console over noVNC. Stop anytime with Ctrl-C. See
scripts/try-tuna-desktopfor options. - QEMU (
-
Install: docs/install.md covers the Debian-format package, building from source and logging in through GDM. The experimental TunaOS Marlin image is in packaging/README.md.
-
Try it in a window inside your current GNOME, Wayland or X11 session, from a checkout with the build prerequisites:
git clone https://github.com/tuna-os/tuna-desktop.git cd tuna-desktop ./scripts/tuna-nested runSee the nested session guide for options and troubleshooting.
See the walkthrough for every feature as it looks today, in frames the GTK shell proof takes on each change.
| App grid | Quick settings |
|---|---|
![]() |
![]() |
| Calendar | Alt+Tab |
|---|---|
![]() |
![]() |
These are frames from the real TunaOS Marlin image booted in a QEMU VM by CI, on its hardware (DRM/KMS) session with the apps the image ships and its default wallpaper.
Play or download the overview video (MP4, 12 seconds). The demo shows an actual nested Tuna Desktop session with three libadwaita test windows. See capture details for source revisions and reproduction.
Nested developer preview. A Smithay compositor supervises a GTK4/libadwaita shell with overview window previews, app grid and search, quick settings, notifications, calendar, keyboard navigation and AT-SPI accessibility. Tuna Desktop also includes its session supervisor, shell host and versioned control protocol. Floating windows, workspaces, Alt-Tab, half tiling, scrollable tiling and XWayland are covered by graphical CI journeys.
The DRM/KMS backend starts hardware sessions and is tested with virtual KMS in CI. Physical GPU, VT, suspend and long-running release qualification remain open. See the parity ledger for measured behavior and remaining gaps.
Parity target: GNOME 51. Native GNOME 51 captures provide the visual reference. The published Marlin image was verified as GNOME Shell 50.5 on 2026-10-04; a GNOME 51 Marlin benchmark image is being validated separately.
Target platform: Tuna Desktop is being tested as a TunaOS Marlin flavor (Arch base, bootc image). The Debian package remains for local development hosts.
Roadmap: tracked as GitHub issues on the Tuna Desktop roadmap project board; docs/roadmap.md keeps the program structure, gates, and requirement traceability.
- Rust stable with
rustfmtandclippy(CI uses the current stable toolchain; no MSRV is declared, crates use edition 2021; see the API stability and MSRV policy). - System libraries: libseat, libinput, libudev, GBM, libdrm, libxkbcommon, GTK 4, libadwaita, PipeWire, Wayland and gtk4-layer-shell development files, plus EGL (Mesa llvmpipe is enough) to run a nested session. The development guide has the exact Ubuntu and Arch package lists CI uses.
- Spektacular CLI is needed only for spec and plan work, not for building or running Tuna Desktop; see the development guide.
Want to contribute? Start with the development guide. It covers:
- Setting up your build environment
- Understanding the project structure
- Running a nested Tuna Desktop session locally (troubleshooting)
- Running tests locally, the same checks CI runs
- Spektacular workflows for planning and tracking
- Program architecture
- Program roadmap and requirement traceability
- Parent requirement register
- Verification and test strategy
- Performance profiling guide
- Troubleshooting
- Session operations and diagnostics
- Environment variables
- Parity ledger
- Research intake rules
- Architecture decisions
- Security model and threat model
- Portal and D-Bus service integration
- Extensions: current Rhai host and target architecture
- Crate API stability, wire versioning and MSRV
- Contributing
GPL-3.0-or-later. See LICENSE.
The public roadmap records priorities through October 2027, current release limits and contribution opportunities.






