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 | ||
| tiff | ||
| xpm | ||
| Appearance.c | ||
| Configurations.c | ||
| Docks.c | ||
| Expert.c | ||
| Focus.c | ||
| FontSimple.c | ||
| HotCornerShortcuts.c | ||
| Icons.c | ||
| KeyboardSettings.c | ||
| KeyboardShortcuts.c | ||
| Makefile.am | ||
| Menu.c | ||
| MenuPreferences.c | ||
| MouseSettings.c | ||
| Paths.c | ||
| Preferences.c | ||
| README | ||
| TexturePanel.c | ||
| TexturePanel.h | ||
| Themes.c | ||
| WPrefs.c | ||
| WPrefs.desktop.in | ||
| WPrefs.h | ||
| WPrefs.tiff | ||
| WPrefs.xpm | ||
| WindowHandling.c | ||
| Workspace.c | ||
| double.c | ||
| editmenu.c | ||
| editmenu.h | ||
| main.c | ||
| xmodifier.c | ||
README
WPrefs.app
==========
The WindowMaker Prerefences Application
WPrefs.app is the preferences "editor" for the WindowMaker window
manager. It can be used to set most of the preference options of WindowMaker
and define its applications menu. It also can change some settings
that do not belong to WindowMaker.
Although WPrefs.app is designed to be easy to use, you should read the
user guide to be fully aware of all available options and other features
of WindowMaker that are not related to configuration.
To run WPrefs, do not put it in your search path. Instead, run it
with the full path, like /usr/local/GNUstep/Applications/WPrefs.app/WPrefs
Then, dock its application icon. The dock will automatically detect its
icon and use it.
If you change configuration often, you might want to leave WPrefs
always running, leaving it hidden while not in use. You can also make it
be automatically started with WindowMaker and toggle the Start Hidden
option in the attributes panel for the WPrefs window. Of course, it will
use some memory, but by leaving it hidden it'll probably be swapped out and
stay there until you unhide it.
WPrefs is still under development. Some of the configuration options are
not yet configurable from WPrefs, notably the appearance related options.
It might contain bugs that can corrupt your configuration files, so backup
the contents of the ~/GNUstep/Defaults directory before using it.
License
-------
Like Window Maker, WPrefs is distributed with through the General Public
License (as stated in the file COPYING).
Notes
-----
The mouse speed configuration is saved as a call for xset in
~/G/D/L/W/autostart. WindowMaker calls this file when it is started.
If you don't want or can't use the menu definition section, do not
open its section (or if you do open it, do not Save), or WPrefs will
overwrite your ~/G/D/WMRootMenu file.
Only options that have different values than what is found in the
system-wide configuration file is saved.
WPrefs only supports property list menus. If you have a plain text file
menu, it will not be read by WPrefs. You can either recreate the menu from
scratch or not use WPrefs for menu definition. The old menu will not be
overwritten if you recreate it.
Build
-----
WPrefs will be built automatically and installed with the rest of WindowMaker.
Customized Installation
-----------------------
By default, WPrefs.app will be installed in the GNUstep applications directory,
which is /usr/local/GNUstep/Applications. If you want to install it somewhere
else, like in /some_weird_path/Applications, set the GNUSTEP_LOCAL_ROOT
environment variable to some_weird_path before running configure for
WindowMaker. You can also configure Window Maker supplying the --with-gnustepdir
option to configure, like ./configure --with-gnustepdir=/usr/GNUstep/Applications
If you change your mind after installing, you can move the .app directory
to one of the following GNUstep/Applications directories:
/usr/GNUstep/Applications
OR
/usr/local/GNUstep/Applications
OR
~/GNUstep/Applications
Credits
-------
User interface design, programming and a few icons:
Alfredo K. Kojima <kojima@windowmaker.info>
Additional programming:
James Thompson <jamest@math.ksu.edu>
Dan Pascu <dan@windowmaker.info>
]d <id@windowmaker.info>
Icon and image artwork:
Jesse Kaufman <glandix@linuxfreak.com>
Marco van Hylckama Vlieg <marco@windowmaker.info>
See details in README in tiff/ directory
WindowMaker
-----------
If for some weird reason you end up with this preferences program and
don't have Window Maker yet, you can get more information about it at
http://windowmaker.info and download it at ftp://ftp.windowmaker.info
Contact
-------
Send comments and bug reports to kojima@windowmaker.info
Use the WindowMaker BUGFORM to report bugs.