Please do fact-check and suggest corrections/improvements below.
✅ Supported
| Functionality | Xorg | Wayland |
|---|---|---|
| Performance | ✅ Best (DistroWatch) | |
| Power consumption | ? | ? |
| RAM usage | ✅ ~150 MB lower (Phoronix) | |
| Nvidia GPUs | ✅ Well supported by proprietary Nvidia driver, also older hardware (open source driver Nouveau never worked satisfactorily) | |
| Multi-monitor | ✅ Supported via XRandR, Xinerama (TheServerHost, KDE Blog) |
✅ Stable, dynamic hotplug, ✅ multi-monitor support, ❌ no protocol to choose primary display (KDE Blog, CBT Nuggets) |
| Screen Recording / Capture | ✅ Supported via X APIs; easy screen & window recording (Xlib Manual, OBS Wiki) | ✅ wlr-screencopy and/or ext-image-copy-capture or the Screencast Portal. |
| Input Devices / Event Routing | ✅ XInput, XInput2, global intercept (XInput2 Docs) |
✅ Input Capture Portal |
| Input Injection | ✅ Via XTEST, XSendEvent (XTEST Spec) |
✅ Remote Desktop Portal. |
| Global Hotkeys / Key Grabs | ✅ XGrabKey()/XGrabButton() (Xlib Docs) |
✅ Global Shortcuts Portal, |
| Window Positioning / Stacking | ✅ Clients move/resize windows (Xlib Ref) | |
| Clipboard Access | ✅ Full/explicit, ICCCM selections (ICCCM) | ✅ Clipboard Portal. |
| Drag and Drop / Copy and Paste | ✅ Xdnd, Motif (Xdnd Spec), Motif (Motif DND) | |
| Touch / Gesture Support | ✅ XInput2 (XInput Multi-Touch) |
✅ wl_touch, gestures via zwp_pointer_gestures_v1 |
| Tablet Support | ✅ XInput2 (libinput Tablet) |
✅ zwp_tablet_manager_v2 |
| Remote Display / Network Transparency | ✅ X11 protocol, SSH forwarding (OpenBSD FAQ, XForwarding) | ✅ Remote Desktop Portal. |
| Screen Configuration | ✅ XRandR direct (xrandr manpage) |
✅ wlr-output-management and associated tools like wlr-randr. |
| Global menus | ✅ Works | ❌ Not natively available—requires qt_extended_surface set_generic_property which may not be present on every system |
| Window Management Hints (size, position) | ✅ XSetWMHints, XSetNormalHints (ICCCM) |
❌ Position not supported, only size |
| Window Title / Icon Name | ✅ XSetWMName, XSetIconName (ICCCM) |
✅ xdg_toplevel.set_title/xdg_toplevel.set_app_id |
| Window State (iconic, withdrawn, etc.) | ✅ XSetWMState (ICCCM) |
|
| Window Protocols (WM_DELETE_WINDOW) | ✅ ICCCM, WM_DELETE_WINDOW (ICCCM) |
✅ xdg_toplevel.close |
| Window Class / Instance | ✅ XSetClassHint (ICCCM) |
❌ Not supported (Wayland FAQ) |
| Window Transience (dialogs, popups) | ✅ XSetTransientForHint (ICCCM) |
✅ xdg_toplevel.set_parent |
| Input Focus (active window) | ✅ XSetInputFocus (Xlib Ref) |
|
| Selections | ✅ Selections (ICCCM) | ✅ Clipboard Portal. |
| Drag and Drop | ✅ Motif/Xdnd (Xdnd Spec) | ✅ Native protocol (Wayland/Drag&Drop) |
| Window Grouping | ✅ XSetWMHints group (ICCCM) |
✅ Identity based grouping via xdg_toplevel.set_app_id, ✅ Hierarchical grouping via xdg_toplevel.set_parent, ❌ No arbitary grouping |
| Input Model / Input Hint | ✅ Input model hints (ICCCM) | ❌ Not exposed/natively supported (Wayland FAQ) |
| Window Manager Communication | ✅ ICCCM client-to-WM (ICCCM) | ❌ No standard protocol (Wayland FAQ) |
| Colormap / Visual hints | ✅ Colormap per ICCCM (ICCCM) | |
| Icon Pixmap / Bitmap | ✅ ICCCM icon hints (ICCCM) | ✅ fetches Icon through the desktopfile via xdg_toplevel.set_app_id |
| Urgency Hint | ✅ XUrgencyHint (ICCCM) |
|
| Window Shade (roll up/down) | ✅ WM_STATE (mapped/unmapped state) |
❌ Not supported |
| Window Always On Top (z-order) | ✅ Applications can request stacking/z-order via WM_HINTS, window group, _NET_WM_STATE_ABOVE (EWMH) |
|
| Exclusive Display Control / DRM Leasing | libdrm (libdrm) |
✅ wp_drm_lease_v1 |
| Transparency / Compositing | ✅ Built-in to the compositor (Wayland FAQ) | |
| Color Management | ✅ wp-color-manager-v1 | |
| VSync / Tear-free Rendering | ✅ Guaranteed by compositor; always tear-free (Wayland FAQ) | |
| Security / App Isolation | ✅ Wayland isolates applications from each other. for many things they did via xorg they now have to go through portals. | |
| Click into a window to terminate the application | ✅ xkill |
❌ Not natively available—some compositors may have proprietary mechanisms, which may not be present on every system |
| Click into a window to see its metadata | ✅ xprop |
❌ Not supported |
| Set and get metadata (properties) on windows to exchange information regarding windows | ✅ X Atoms (Docs) | ❌ Not supported |
| One window server used by virtually all desktop environments and distributions | ✅ Xorg (and Xlibre) |