Skip to main content
Version: 0.11.0

🖥️ Compositor Support

Ashell runs on any Wayland compositor. It ships dedicated integrations for the compositors it knows natively and falls back to a generic Wayland backend everywhere else. The right backend is selected automatically at startup, with no configuration required.

Dedicated integrations​

Dedicated backends talk to the compositor's own IPC, so they expose the richest feature set, including compositor-specific concepts.

  • Hyprland
  • Niri
  • MangoWC

Generic Wayland fallback​

When no dedicated backend is detected, ashell uses a generic backend built on standard Wayland protocols. It works on any compositor that implements them, and each protocol is optional, and an unadvertised one simply disables the feature it backs.

ProtocolProvides
wl_outputMonitors
ext-workspace-v1Workspaces (listing and switching)
wlr-foreign-toplevel-managementActive window (title and class)

Feature matrix​

FeatureHyprlandNiriMangoWCGeneric Wayland
Active window *✅✅✅✅
Workspaces: list, click and scroll to switch✅✅✅✅
Workspaces: empty/occupied distinction **✅✅✅❌
Workspaces: urgent highlight❌✅✅✅
Workspaces: window icons ***✅✅❌❌
Special workspaces✅❌❌❌
Virtual desktops ****✅❌❌❌
Keyboard layout✅✅✅❌
Keyboard submap✅❌✅❌

A ❌ means the backend (or the underlying protocol) does not expose that feature; the corresponding module, or that part of it, is simply unavailable on that compositor.

* The InitialTitle and InitialClass window-title modes rely on Hyprland-specific data and are unavailable on the other backends, where the title falls back to an empty value.

** ext-workspace-v1 carries no per-workspace window count, so the generic backend draws every workspace in the occupied style instead of the outlined empty one.

*** indicator_format = "NameAndIcons" needs the per-workspace window classes, which only the Hyprland and Niri backends collect. Elsewhere the indicator shows the workspace name only.

**** enable_virtual_desktops targets the hyprland-virtual-desktops Hyprland plugin.

Urgent highlighting on the generic backend needs the compositor to report the urgent state through ext-workspace-v1. Hyprland's workspace and client data carry no urgency field (its IPC only emits a per-window urgent event, which ashell does not track), so ashell always reports "not urgent" there.