Skip to main content

Performance & Quality

Waylo is designed to feel responsive across everything from a LAN to a cross-country WAN link. Two per-session controls — frame rate and quality — plus the codec in use determine the experience.

Frame rate and quality

Set both on the login screen, or change them mid-session from the toolbar's ⚙️ row (the change applies immediately to all connected clients and is remembered).

Frame rateSuggested for
10 FPSVPN / constrained links
15 FPSBalanced (default)
20 FPSLAN
30 FPSMax smoothness
QualityApprox. bandwidth (MJPEG @ 1080p/15fps)
Low~1.2 Mbps
Med~2.5 Mbps
High~4 Mbps
Max~8 Mbps

With H.264 (below), a mostly static desktop uses far less than the MJPEG figures — often ~0.3–1.5 Mbps during active use — because only changes are sent.

Codec: H.264 vs MJPEG

  • H.264 (preferred) uses inter-frame compression, so idle regions cost almost nothing and text stays sharp while scrolling. It needs a hardware or software H.264 encoder on the host and a WebCodecs-capable browser.
  • MJPEG (fallback) sends a full JPEG each frame — simpler and universally supported, but much heavier on bandwidth.

Waylo picks H.264 automatically when it can and falls back to MJPEG otherwise; you don't configure this. See Video Pipeline for how it works.

Lower the resolution

Capturing at a smaller size cuts bandwidth and encoder load:

waylo --width=1280 --height=720

Reduced effects

The reduced-effects toggle disables GNOME's animations for the session, which lowers the amount of screen change the encoder has to send and makes a constrained link feel snappier. Waylo restores your animation setting when the session ends (the restore marker is stamped with the owning process so it only affects sessions it started).

  • LAN — 20–30 FPS, High/Max quality; H.264 will keep bandwidth reasonable.
  • VPN — 15 FPS, Med quality is a good balance.
  • WAN / high latency — 10–15 FPS, Low/Med, and enable reduced effects. Waylo is used in practice over cross-country links (~45 ms RTT) and stays usable there; the H.264 path's low idle bandwidth helps most on constrained links.
tip

If the picture is smooth but bandwidth is high, confirm you're on H.264 (a host without an H.264 encoder falls back to MJPEG). Installing the GStreamer bad plugin set — for vah264enc / x264enc / openh264enc — enables it.