Skip to main content

Waylo

Waylo is a lightweight, browser-based remote desktop for Wayland/GNOME. It streams a real logged-in GNOME session to any modern browser — no client to install, no plugin, no VNC server — and it is built from the ground up for unattended access: a headless box that boots, auto-logs-in, and is reachable over the network without anyone sitting at the keyboard.

The name is a nod to how it is meant to be reached: lo = the loopback interface, behind SSH or a VPN, on Wayland.

Why Waylo

Traditional remote-desktop stacks fight the modern Linux desktop instead of working with it:

  • VNC servers on Wayland either can't capture the real session or require a parallel virtual display, losing your actual desktop and GPU acceleration.
  • xrdp spins up a separate login session; on GNOME it commonly collides with the user's one allowed graphical session and the window manager exits on connect. It also doesn't survive a locked screen gracefully.
  • xdg-desktop-portal screen-sharing needs a human to click an "allow" and monitor-picker dialog on every start, and won't persist monitor choices across restarts — a non-starter for unattended machines.

Waylo talks directly to GNOME's compositor, Mutter, over its private D-Bus APIs (org.gnome.Mutter.ScreenCast and org.gnome.Mutter.RemoteDesktop). That means it captures the real, current session — the same desktop the user sees — with no dialogs, no manual activation, and no separate display, and it keeps working across service restarts and reboots.

Key features

  • Zero-install client — any WebCodecs-capable browser; the UI is served by Waylo itself. An optional desktop app adds saved connections, stored credentials and several sessions at once.
  • Encrypted by default — HTTPS/WSS with a self-signed certificate on first run, which is also what lets browsers decode H.264.
  • Real session capture via GNOME Mutter — no virtual display, no portal dialogs, monitor choices persist.
  • H.264 with automatic MJPEG fallback — hardware-accelerated when available (VA-API), decoded in the browser via WebCodecs; falls back to MJPEG when H.264 isn't available.
  • Multi-monitor — switch monitors from the toolbar, or pop a monitor out into its own browser window with seamless pointer edge-crossing between them.
  • True unattended access — a systemd user service, GDM auto-login, and a locked-screen capture path mean a machine is reachable from cold boot.
  • Locked-screen aware — with the companion GNOME extension, Waylo streams the session while it stays locked; without it, Waylo automatically drops the lock and retries so a connection never wedges.
  • SSH-backed authentication — credentials are verified against the local SSH server, so only the desktop session's owner (with sudo) can connect.
  • Input — pointer (absolute), keyboard, discrete + smooth scroll, on-screen keyboard and touch support for phones and tablets.
  • Self-contained installer — a single .run file bundles a pinned Node runtime, the prebuilt UI, and native dependencies; the target needs no Node, npm, compiler, or network.

Where to go next

note

Waylo requires a GNOME desktop. It is designed for Wayland but also works on a GNOME-on-Xorg session (including inside an xrdp session), because it uses Mutter's D-Bus APIs rather than any display-server-specific capture.