windowmaker-wl/util
Window Maker ef06f5ad8e wings: phases δ + ε — drop X11/Xlib.h from public WINGs headers
Major architectural milestone: WINGs Wayland-only files now have ZERO
transitive X11 header dependency at the preprocessor level (verified by
gcc -E grep: 0 mentions of X11/Xlib.h after preprocessing).

Changes:

  1. WUtil.h, WINGs.h: stop including <X11/Xlib.h>.  wnative.h provides
     forward declarations for Display, GC, XftDraw, XftFont; opaque
     pointer-only typedefs that don't conflict with Xlib.h's actual
     definitions when the X11 backend later includes it.

  2. WINGsP.h.in: stop including <X11/Xlib.h>, <X11/Xutil.h>.  Drop or
     re-route every X11-typed prototype:
       - W_HandleDNDClientMessage / W_DragSourceStateHandler /
         W_DragDestinationStoreEnterMsgInfo / etc.
         → moved to new private header WINGs/WINGsX11.h
       - W_HandleSelectionEvent → moved
       - W_LookupString / W_KeycodeToKeysym → moved
       - W_DndState typedef → moved (renamed to W_X11DndState)
       - XClientMessageEvent / XEvent / XKeyPressedEvent in prototypes
         → use void * in shared protos, cast in WINGsX11.h

  3. W_View struct: replaces XSetWindowAttributes by-value field with a
     small backend-neutral 'attribs' struct holding only the fields
     wmaker/WPrefs actually use (background_pixmap, background_pixel,
     border_pixel, colormap, cursor, override_redirect, save_under,
     event_mask, do_not_propagate_mask).  The X11 view backend
     translates to XSetWindowAttributes when calling XCreateWindow.
     XIC xic field replaced with void *xic.

  4. W_Color struct: replaces XColor by-value with a same-layout
     anonymous struct (pixel/red/green/blue/flags/pad).  X11 backend
     uses memcpy to populate from XColor.

  5. WINGs/WINGsX11.h (new): private header for X11 backend.  Includes
     <X11/Xlib.h>, declares X11-typed internal prototypes used by drag*,
     selection, IME, x11_backend, KeyboardShortcuts.  Required by every
     *_x11.c file plus a handful of cross-component callers
     (KeyboardShortcuts.c, MouseSettings.c, xmodifier.c, wmiv.c,
     x11_backend.c).

  6. wraster.h.in: gain a WRASTER_NO_XLIB compile-time switch.  When
     defined the header skips <X11/Xlib.h> and provides forward decls
     for Display/Visual/XImage/GC/XftFont/etc.  All Wayland-only WINGs
     files (wclient_wl.c, w*_wl.c) define WRASTER_NO_XLIB on line 1.

  7. wfont.c: adds W_ParseXLFDToFcPattern (a hand-written XLFD parser)
     replacing XftXlfdParse.  Removes <X11/Xft/Xft.h> include from the
     shared font dispatcher (and from wfontpanel.c too).

Verification:

  $ for f in WINGs/.libs/{*_wl.o,wclient_wl.o}; do
        nm $f | awk '$1=="U"{print $2}' | grep -cE '^X[A-Z][a-z]'
    done
  0 for every Wayland file

  $ for f in WINGs/.libs/*.o; do
        case $f in *_x11.o|*_wl.o|wclient_wl.o) continue;; esac
        c=$(nm $f | awk '$1=="U"{print $2}' | grep -cE '^X[A-Z][a-z]')
        [ $c -gt 0 ] && echo "$c $f"
    done
  (empty — no shared file leaks an X11 symbol either)

  $ gcc -E ... wclient_wl.c | grep -c X11/Xlib.h
  0 (no transitive Xlib include)

The library still pulls libX11 through the *_x11.c files when those are
linked in.  A future configure flag --disable-x11-backend will exclude
*_x11.c entirely; at that point libWINGs will be a pure-Wayland library
with zero libX11 dependency.
2026-05-24 11:37:18 +02:00
..
po gitignore: stop tracking all generated build outputs 2026-03-31 13:36:58 +02:00
Makefile.am WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
README WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
bughint WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
common.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
convertfonts.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
fontconv.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
geticonset.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
getstyle.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
seticons.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
setstyle.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wdread.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wdwrite.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wkdemenu.pl WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wm-oldmenu2new WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmagnify.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
wmaker.inst.in WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmgenmenu.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmgenmenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmiv.c wings: phases δ + ε — drop X11/Xlib.h from public WINGs headers 2026-05-24 11:37:18 +02:00
wmiv.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmmenugen.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmmenugen.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmmenugen_misc.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmmenugen_parse_wmconfig.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmmenugen_parse_xdg.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmsetbg.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wxcopy.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wxpaste.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00

README

wm-oldmenu2new - converts between the plain text file menu format to the
 	 property list menu format.

bughint- gathers some information for bug reporting

geticonset- outputs the current set of icon assignments. Good for making
	themes.

setstyle- load style settings from a style file and setup WindowMaker

getstyle - gets current style settings and save into a file or create
	a theme pack.

seticons- merges icon definitions into WMWindowAttributes file


wmaker.inst- quick and dirty script to install necessary files from
	global configuration to user's directory. Look in the script to
	adapt it to your site.

wxcopy- copy input file or stdin into X cutbuffer

wxpaste- copy content of X cutbuffer into stdout

wmsetbg- set the workspace background into a image and make it persist between
	sessions.

wdwrite- write data into the defaults database (configuration files).

wdread- read Simple data from defaults database (for use in scripts for example)

wmagnify- a program to magnify the area near the mouse pointer,
	with real-time update

wkdemenu.pl- convert a KDE menu into a wmaker menu (for pipe)

wmiv- quick image viewer using wrlib