Skip to content

Windowing demo feature specs

Specs for the per-platform demo programs that empirically map where Wayland, X11, Win32, and macOS (AppKit) diverge. Each spec is platform-neutral: one demo per platform implements it (in <platform>/examples/fXX-<slug>/), and the observed behavior lands in a findings doc next to that platform's survey (<platform>/fXX-<slug>.md). The cross-platform grid lives in the feature matrix; items needing a human run are queued in the manual-run queue.

Last reviewed: June 10, 2026

IDFeatureWhy it discriminates
F01First pixel & init costConcepts-to-pixel count; round-trips vs local
F02Resize correctnessNotification vs negotiation (ack-configure)
F03Modal-loop survivalWin32 WM_ENTERSIZEMOVE; macOS live-resize
F04Vsync / frame pacingFour different frame clocks
F05Loop wakeup & external fdsfd-readiness vs handle waits vs run-loop sources
F06Keyboard & keymapWho owns xkb state; client-side repeat
F07IME / text inputPre-edit/commit choreography; TSF vs IMM32 vs XIM
F08DPI / runtime rescaleLogical vs physical; X11's missing mechanism
F09Output enumeration & hotplugSurface↔output knowledge; hotplug order
F10Pointer: relative + lock + confineAsync-failable lock; macOS's missing confine
F11Scroll fidelityaxis_v120 / sub-120 deltas / momentum phases
F12CursorsClient-composited cursors on Wayland
F13CSD & decoration modesWayland-only; the largest "app's problem" fork
F14Window state & vetoable closeState echo vs fire-and-forget; veto contracts
F15Popup with grabDeclarative positioner vs app-computed geometry
F16Clipboard + file DnDFormat negotiation; INCR; delayed rendering
F17Threading probesWhat actually breaks, and how it manifests

F01–F08 are the discriminating core (first wave); F09–F17 are the second wave. Every demo follows the shared conventions: scaffold copied from <platform>/examples/scaffold/, the instrument.d log format from F01, and the verification-tier labels defined in the matrix legend.