Wayland vs X11
| X11 | Wayland | |
|---|---|---|
| window management | clients set hints, the WM interprets them | the compositor decides everything |
| drawing | server-side or client-side | client-side only; the compositor composes buffers |
| input | any client can see or inject it | per surface; only the compositor injects |
| screenshots | any app can grab the screen | compositor support required |
| tray icons | _NET_SYSTEMTRAY embeds windows | StatusNotifierItem over D-Bus |
What changes in SomeWM
- Restart. The compositor is the display server, so it cannot exec itself without dropping every client.
awesome.restart()rebuilds the Lua state in process instead; Mod4+Ctrl+r in the default config calls it. - Systray. Icons come over StatusNotifierItem. NetworkManager, Bluetooth applets, Discord and Steam work; XEmbed-only apps show nothing.
- Input injection.
xdotoolcannot reach other apps.root.fake_input()works because the compositor itself injects throughwlr_seat. - Key repeat. The compositor sends the repeat rate and delay with the keymap, and each application repeats on its own, asking the keymap whether the held key repeats.
keyboard_repeat_rateandkeyboard_repeat_delayset the timing; a layout can mark a key non-repeating and no property overrides it (troubleshooting). - X properties. Wayland has no shared X11 property store. The compatibility reference distinguishes absent global calls from client-local storage.
- Borders. The border is a scene rect around the client geometry.
c:geometry()excludes it, as in AwesomeWM; titlebars sit inside the geometry and start inside the border. - XKB toggle options.
grp:alt_shift_toggleand the othergrp:*options need an X server to act on the key. On any Wayland compositor they do nothing. Bind the switch yourself (Keyboard Layout Switching):
awful.key({ "Mod1", "Shift" }, "space", function()
local current = awesome.xkb_get_layout_group()
awesome.xkb_set_layout_group((current + 1) % 2)
end)
Static options such as ctrl:nocaps and compose:ralt work as on X11.
AwesomeWM Compatibility has the compatibility contract; Tag Persistence covers hotplug, which Wayland makes routine.