Window Maker
fb817a7b27
wings: revert accidental WNativeWindow rename in strings/comments
...
The phase-β sed pass renamed every C 'Window' identifier to
WNativeWindow. That correctly updated typedef uses but also rewrote
the string 'Window Maker', UI labels like 'Window Manager', 'Window
Placement', 'Window Title', 'Window List', 'Window System session',
etc., plus a number of comments referring to 'Window' as English.
Fixed all of those. The C type uses (WNativeWindow rootWin, etc.)
remain unchanged — only English-language occurrences are reverted.
Verified that wmaker now reports 'Window Maker 0.96.0' again and
build is clean across WINGs/, src/, WPrefs.app/.
2026-05-24 11:42:37 +02:00
Window Maker
0f839a9c6d
wings: phase β — rename X11 typedefs in shared/Wayland code
...
Sed pass restricted to files outside src/backend/x11 and outside
*_x11.c — i.e. all code that should not depend on X11 typedefs.
Window → WNativeWindow (existing typedef in WMEvent.h)
Atom → WMNativeAtom
Pixmap → WMNativePixmap
Cursor → WMNativeCursor
Drawable → WMDrawable (existing typedef)
KeySym → WMNativeKeysym
Colormap → WMNativeColormap
X11 backend files keep using the original Xlib type names because
they make Xlib API calls that take those types. All typedefs are
ultimately 'unsigned long' so values pass through opaquely between
shared code and the backend.
Public WINGs API affected: WMSelectionCallback, WMSelectionProcs,
and a handful of widget signatures that took Atom/Window arguments
now take WMNativeAtom/WNativeWindow. Source-compatible at the
binary level; consumers must rebuild.
Time and XID typedefs left for a follow-up — both are heavily used
in field/variable names that need careful auditing. Display* and
GC stay in W_Screen for now; phase δ moves them into an X11-only
sub-struct.
2026-05-24 10:49:47 +02:00
Levi Neely
e504141132
Phase 80f: clean X11 from client.c, pixmap.c
...
- client.c: XFree -> wfree (vtable owns allocation), XGetTransientForHint
-> prop_get_transient_for, XConfigureWindow -> frame_configure/stacking_restack,
wFetchName -> window_fetch_name
- pixmap.c: wPixmapCreateFromXBMData and wPixmapCreate dispatch through
new vtable slots pixmap_create_from_xbm and pixmap_create
New vtable slots: pixmap_create_from_xbm, pixmap_create.
Both files verified X11-free with nm.
2026-05-13 10:48:54 +02:00
Levi Neely
553d2ca0ba
Phase 80: eliminate all 43 if(!dpy) return guards via vtable dispatch
...
Remove every 'if (!dpy) return' guard from policy files by moving
X11 mechanism code behind WMBackend vtable slots. Call sites now
dispatch through wm_backend->slot(), the X11 backend implements the
mechanism, and the Wayland backend provides no-ops or Wayland-native
implementations.
New vtable slots added to backend.h:
- Frame: frame_alloc_border_pixel, frame_update_texture, frame_paint_button
- NETWM: netwm_init, netwm_cleanup, netwm_update_desktop,
netwm_get_current_desktop, netwm_update_opacity, netwm_update_actions,
netwm_check_client_hints, netwm_check_initial_state, netwm_get_pid,
netwm_cleanup_frame_extents
- Properties: prop_get_protocols, prop_get_check_property,
prop_set_wmaker_protocols, prop_set_icon_tile, prop_cleanup
- Client: client_restore, client_set_state, client_send_protocol,
client_kill, client_get_colormap_windows
- Misc: eat_expose, move_window, slide_windows, get_text_selection,
get_shortcut_string, get_command_for_window
- Icon: icon_update_pixmap, icon_paint
- AppIcon: appicon_show, appicon_paint, appicon_bounce
- Shutdown: restore_desktop, wipe_desktop
- Resources: get_color_for_colormap, free_color, colormap_install
- Protocol: xdnd_init, motif_get_hints
- Startup: manage_all_windows
- Event: event_handle_signal_exit
Structural changes:
- MWMHints moved from motif.c local typedef to motif.h
- WProtocols given struct tag for forward declaration
- Static functions made non-static: wGetTextSelection, wGetCommandForWindow,
wGetMWMHints, wWipeDesktop, wManageAllWindows, wNETWMUpdateWindowOpacity
Verification: grep -rn 'if (!dpy)' src/*.c returns zero results.
nm wl_backend.o confirms no new X11 symbols in Wayland path.
2026-05-13 10:01:57 +02:00
Levi Neely
00deab12f2
wayland: WMBackend vtable — port policy files off direct X11
...
Move X11-specific calls in policy code behind the wm_backend dispatch
table so the same code paths work with both X11 and Wayland backends.
backend.h — extend WMBackend vtable with new entry points
event.c — route input events through backend dispatch
framewin.c — title-bar rendering via backend surface ops
icon.c — icon pixmap handling via backend abstraction
main.c — backend selection + initialisation at startup
misc.c — miscellaneous X11 helpers moved behind vtable
pixmap.c — pixmap creation/destruction via backend ops
resources.c — resource loading abstracted over backend
screen.c — screen setup routed through WMBackend vtable
startup.c — startup sequence uses backend entry points
texture.c — texture rendering abstracted for both backends
No functional change on X11; Wayland backend stubs return safe no-ops.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-31 13:34:05 +02:00
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
Levi Neely
fcee811b99
WindowMaker 0.96.0 upstream source
2026-03-26 15:38:49 +01:00