Linux desktops and Wayland

The default X11/XWayland backend, the opt-in native Wayland backend for wlroots compositors, and what each supports.

Two backends

The default code path uses winit and X11 — XWayland on Wayland sessions. It is stable and works on every Linux desktop.

An opt-in native Wayland backend, built on wlr-layer-shell-unstable-v1, gives a true overlay on wlroots compositors: sway, Hyprland, river and Wayfire. It has feature parity with the X11 path, but stays opt-in and wlroots-only:

ANIMA_USE_WAYLAND_NATIVE=1 anima-engine

GNOME and KDE Wayland sessions do not implement layer-shell, so there the overlay uses XWayland automatically — no flag needed.

Feature matrix

Feature X11 / XWayland (default) Native Wayland (opt-in, wlroots)
Click-through overlay stable stable
Tray icon stable stable
Drag-and-drop assets stable stable (in pass-through, drag over the ⚙ corner first)
Keyboard input stable stable
Input methods (CJK) stable stable (text-input-v3)
Settings panel stable stable
Multi-monitor distribution stable stable
Hi-DPI the panel and characters at the screen’s scale factor each monitor at its own scale, 125 % and 150 % too
Global hotkeys the GlobalShortcuts portal (GNOME, KDE), else XGrabKey the portal where the compositor has one, else D-Bus and a compositor binding
Tapping characters outside edit mode stable stable
Full-screen apps seen EWMH (X11 apps) wlr-foreign-toplevel-management
Idle time (dozing, welcome back) GNOME, or a real X server ext-idle-notify (sway, Hyprland)

Global shortcuts

On GNOME and KDE under Wayland, global shortcuts go through the desktop’s shortcuts portal, which asks once whether to allow them; change or remove them later in the desktop’s own settings. On sway, Hyprland or river the app cannot take a key for itself: bind one in the compositor to the app’s D-Bus methods. docs/wayland.md has the lines to paste.

Known limitations

  • Following the cursor on native Wayland works in edit mode only: outside it the protocol does not tell the app where the cursor is. On X11 and XWayland it works everywhere.
  • Pausing when away under KDE on Wayland, with the default path, is unavailable: nothing there tells the app how long you have been away. It works under GNOME, on a real X server, and on wlroots compositors with idle notifications.
  • Stepping aside for full-screen apps under GNOME or KDE on Wayland sees only apps that run through XWayland.
  • Landing on window edges (physics) sees X11 windows only; under a Wayland session it finds the apps that run through XWayland.

Laptops with two GPUs

The app draws on the integrated GPU and leaves an NVIDIA GPU asleep, which saves battery and seconds at start and quit. prime-run anima-engine, or the desktop’s “Launch using Discrete Graphics Card”, makes it draw on the NVIDIA GPU instead.