windowmaker-wl/WPrefs.app/tiff
Levi Neely a486329b52 Wayland backend abstraction: WMBackend vtable (Phases 0–30)
Introduce a display-system-agnostic WMBackend vtable that routes all
display operations through function pointers, making the WM policy
layer independent of X11.  The X11 implementation is preserved in
src/backend/x11/ and behaviour is unchanged.

Key structural changes
──────────────────────
• src/backend/backend_types.h — backend-neutral type definitions:
    WNativeWindow, WKeyCode, WContextKey, WBackendScreen,
    WBackendEvent (+typed fields), WNormalHints, WWMHints,
    WNETWindowType, WHeadGeometry, WClientAttributes, WClientVisual,
    WSegment, WPoint, WM_KEY_* keysym constants, WA_* atom IDs,
    WKB_GROUP*_INDEX, WCUR_NONE

• src/backend/backend.h — WMBackend vtable (~100 function-pointer
    slots) covering: frame/context lifecycle, stacking, focus, grabs,
    pointer, keyboard, overlays, properties, ICCCM, EWMH/NETWM,
    monitors, screen setup, cursors, extensions, error handlers.
    No <X11/> headers remain in this file after Phase 30.

• src/backend/x11/ — X11 backend implementation:
    x11_backend.c  full vtable; all display calls confined here
    x11_props.c    WM_NORMAL_HINTS / WM_HINTS translation
    x11_event.c    XEvent → WBackendEvent translation
    x11_monitor.c  Xinerama / RandR monitor query

Policy files cleaned
────────────────────
All 47 files in WM_POLICY_CLEAN_FILES pass check-no-x11-policy
(no direct #include <X11/> anywhere).  X11 types that still appear
in policy structs (Visual*, Colormap, Window, Atom …) arrive only
transitively via WINGs.h; the vtable boundary itself is X11-free.

Tests
─────
• tests/smoke-test.sh — full Xvfb lifecycle test (PASS)
• tests/test_geom.c   — geometry / constraint unit tests
• tests/test_x11_event.c — WBackendEvent field extraction tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 19:20:00 +01:00
..
Makefile.am WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
Makefile.in Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
README WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
advancetonewworkspace.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
animations.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
appearance.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
clip.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
configs.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
cycleworkspaces.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
dock.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
dockclipdrawersection.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
dontlinkworkspaces.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
drawer.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
ergonomic.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
expert.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
fonts.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
hotcorners.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
iconprefs.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
keyboard.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
keyboardprefs.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
keyshortcuts.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
menualign1.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
menualign2.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
menuprefs.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
menus.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
miscprefs2.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
moreanim.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
mousesettings.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
mousespeed.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
msty1.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
msty2.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
msty3.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
newstyle.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
nextstyle.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
nonopaque.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
noopaqueresize.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
oldstyle.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
opaque.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
opaqueresize.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
paths.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
smallwindow.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
smooth.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
sound.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
speed0.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
speed0s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
speed1.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
speed1s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
speed2.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
speed2s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
speed3.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
speed3s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
speed4.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
speed4s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
tdel.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
tedit.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
temp.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
textr.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
theme.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer0.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer0s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer1.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer1s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer2.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer2s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer3.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer3s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer4.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer4s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer5.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
timer5s.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
tnew.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
whandling.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
windowfocus.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
workspace.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
workspacename.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
xis.tiff WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00

README

Icon Contributors
-----------------

Jesse Kaufman <glandix@linuxfreak.com>
configs.tiff

Largo <largo@windowmaker.info>


All other graphics are copyright 1998,1999 by Marco van Hylckama Vlieg

	(marco@windowmaker.info)