windowmaker-wl/src
Levi Neely 499d4fac7e Wayland backend: native frame rendering via pixman + wlr_scene_buffer
Architecture: frames are pixman images committed to wlr_scene_buffer
nodes — no XWayland dependency for WM UI rendering.

Key changes:
- Add wl_frame_buf struct (pixman_image_t + wlr_buffer + scene_buffer)
- Implement wlr_buffer_impl for frame buffers (begin_data_ptr_access)
- frame_create_toplevel: allocates pixman buffer + scene node
- frame_create_child: returns synthetic ID (sub-regions of parent)
- frame_configure: repositions scene node, reallocates on resize
- frame_destroy: destroys scene node and drops buffer
- frame_paint: renders titlebar texture (via wTextureRenderImage),
  title text (via WMDrawString on pixman WMDrawable), and resizebar
  into the pixman buffer, then commits to scene graph
- Add frame_paint vtable slot to WMBackend (backend.h)
- wFrameWindowPaint: calls wm_backend->frame_paint first; falls
  through to Xlib code only if backend returns 0
- window_map/unmap/move: handle frame buffers via scene node ops
- stacking_raise/lower: handle frame buffers
- window_get_rect: return frame buffer geometry
- Remove all XWayland calls from frame/window lifecycle

The OR (override_redirect) surface handling remains for XWayland
client windows that use override_redirect (tooltips, menus from
X11 apps). The WM's own UI is now pure Wayland.
2026-05-13 07:15:57 +02:00
..
backend Wayland backend: native frame rendering via pixman + wlr_scene_buffer 2026-05-13 07:15:57 +02:00
GNUstep.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
Makefile.am wayland: Phase 29 — pixman SHM surface primitives 2026-03-31 13:31:06 +02:00
WindowMaker.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
actions.c wayland: Phase 71b — additional frame NULL guards in actions.c 2026-03-28 09:51:50 +01:00
actions.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
appicon.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
appicon.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
application.c wayland: Phase 9 — guard XGetGeometry/XGetWindowAttributes in application.c 2026-03-28 20:39:37 +01:00
application.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
appmenu.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
appmenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
balloon.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
balloon.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
client.c wayland: Phase 63 — DELETE_WINDOW=1 for Wayland; wClientSendProtocol dispatches client_close 2026-03-28 09:24:22 +01:00
client.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
colormap.c wayland: Phase 39 — wire toplevel map to wManageWindow 2026-03-28 06:23:23 +01:00
colormap.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
cycling.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
cycling.h WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
def_pixmaps.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
defaults.c wayland: Phase 77 — XKB keymap + keysym_to_keycode + modifier masks 2026-03-28 20:32:07 +01:00
defaults.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
dialog.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
dialog.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
dock.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
dock.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
dockedapp.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
dockedapp.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
event.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
event.h WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
extend_pixmaps.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
framewin.c Wayland backend: native frame rendering via pixman + wlr_scene_buffer 2026-05-13 07:15:57 +02:00
framewin.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
geom.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
geom.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
geomview.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
geomview.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
icon.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
icon.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
keybind.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
main.c wayland: WMBackend vtable — port policy files off direct X11 2026-03-31 13:34:05 +02:00
main.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
menu.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
menu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
misc.c wayland: WMBackend vtable — port policy files off direct X11 2026-03-31 13:34:05 +02:00
misc.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
monitor.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
monitor.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
motif.c wayland: Phase 39 — wire toplevel map to wManageWindow 2026-03-28 06:23:23 +01:00
motif.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
moveres.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
osdep.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
osdep_bsd.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
osdep_darwin.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
osdep_linux.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
osdep_stub.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
pixmap.c wayland: WMBackend vtable — port policy files off direct X11 2026-03-31 13:34:05 +02:00
pixmap.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
placement.c wayland: Phase 70 — apply WIN_WORKSPACE macro to all frame->workspace reads 2026-03-28 09:46:35 +01:00
placement.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
properties.c wayland: Phase 63 — DELETE_WINDOW=1 for Wayland; wClientSendProtocol dispatches client_close 2026-03-28 09:24:22 +01:00
properties.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
resources.c wayland: WMBackend vtable — port policy files off direct X11 2026-03-31 13:34:05 +02:00
resources.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
rootmenu.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
rootmenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
screen.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
screen.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
session.c wayland: Phase 69 — WIN_WORKSPACE macro; safe workspace reads without frame 2026-03-28 09:43:09 +01:00
session.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
shutdown.c wayland: Phase 33 — event_loop_run/atom_intern vtable; wmaker starts and exits cleanly under Wayland 2026-03-27 23:02:26 +01:00
shutdown.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
stacking.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
stacking.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
startup.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
startup.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
superfluous.c wayland: Phase 12 — guard bounce animation against NULL dpy in Wayland mode 2026-03-28 20:54:44 +01:00
superfluous.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
switchmenu.c wayland: Phase 69 — WIN_WORKSPACE macro; safe workspace reads without frame 2026-03-28 09:43:09 +01:00
switchmenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
switchpanel.c wayland: Phase 76 — frame NULL guard in switchpanel.c title display 2026-03-28 10:01:45 +01:00
switchpanel.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
texture.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
texture.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
usermenu.c wayland: Phase 77 — XKB keymap + keysym_to_keycode + modifier masks 2026-03-28 20:32:07 +01:00
usermenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wconfig.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
wconfig.h.in Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
wcore.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
wcore.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
wdefaults.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
wdefaults.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
window.c wayland: fix XWayland window visibility 2026-03-31 16:54:21 +02:00
window.h wayland: Phase 69 — WIN_WORKSPACE macro; safe workspace reads without frame 2026-03-28 09:43:09 +01:00
winmenu.c wayland: Phase 73 — frame NULL guards in wmspec.c and winmenu.c 2026-03-28 09:56:44 +01:00
winmenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
winspector.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
winspector.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmspec.c wayland: Phase 73 — frame NULL guards in wmspec.c and winmenu.c 2026-03-28 09:56:44 +01:00
wmspec.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
workspace.c wayland: Phase 70 — apply WIN_WORKSPACE macro to all frame->workspace reads 2026-03-28 09:46:35 +01:00
workspace.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wsmap.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
wsmap.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
xdg-shell-protocol.h wayland: Phase 35 — advertise core Wayland protocol globals 2026-03-27 23:09:39 +01:00
xdnd.c wayland: Phase 33 — event_loop_run/atom_intern vtable; wmaker starts and exits cleanly under Wayland 2026-03-27 23:02:26 +01:00
xdnd.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
xinerama.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
xinerama.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
xmodifier.c wayland: Phase 77 — XKB keymap + keysym_to_keycode + modifier masks 2026-03-28 20:32:07 +01:00
xmodifier.h wayland: Phase 77 — XKB keymap + keysym_to_keycode + modifier masks 2026-03-28 20:32:07 +01:00
xutil.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
xutil.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00