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.
|
||
|---|---|---|
| .. | ||
| po | ||
| Makefile.am | ||
| README | ||
| bughint | ||
| common.h | ||
| convertfonts.c | ||
| fontconv.c | ||
| geticonset.c | ||
| getstyle.c | ||
| seticons.c | ||
| setstyle.c | ||
| wdread.c | ||
| wdwrite.c | ||
| wkdemenu.pl | ||
| wm-oldmenu2new | ||
| wmagnify.c | ||
| wmaker.inst.in | ||
| wmgenmenu.c | ||
| wmgenmenu.h | ||
| wmiv.c | ||
| wmiv.h | ||
| wmmenugen.c | ||
| wmmenugen.h | ||
| wmmenugen_misc.c | ||
| wmmenugen_parse_wmconfig.c | ||
| wmmenugen_parse_xdg.c | ||
| wmsetbg.c | ||
| wxcopy.c | ||
| wxpaste.c | ||
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