DockWM is a small GNUstep/AppKit dock-style window manager shell inspired by WindowMaker.
It supports two inputs:
- Dropping application bundles or executable paths from GNUstep tools such as apps-gworkspace onto the dock.
- Discovering small X11 top-level windows, including common WindowMaker dockapps, and reparenting them into an X11 dock host.
make./DockWM.app/DockWMThe AppKit dock accepts filesystem drops. A companion X11 override-redirect host window is created next to it for dockapps and other small X11 clients.
The dock remains visible on every workspace. Run the workspace regression
check with sh Tests/run-all-workspaces.sh (requires Xvfb, Window Maker,
wmctrl, xprop, and xwininfo). It switches among three workspaces on an
isolated display and checks that the dock stays visible.
Pinned applications that are moved or removed leave a question-mark placeholder in their saved position by default. The tooltip identifies the missing app, and its launch arguments and behavior settings are retained. The Dock checks for changes every 15 seconds and restores the icon if the original path becomes available again.
Disable Keep placeholders for missing applications in Settings → Behavior to remove missing entries instead.
The missing-application regression checks can be run with:
sh Tests/run-missing-applications.shThese checks require clang, GNUstep, and xvfb-run.
Window discovery runs in small batches so that full X11 sweeps yield to clicks and icon-manager requests. Each batch handles at most eight windows and checks an 8 ms budget between windows; a single slow X server reply can exceed that budget. Newly mapped windows still use the event-driven discovery path.
Run the X11 regression tests with an installed GNUstep GUI backend and Xvfb:
sh Tests/run-window-scan.sh
sh Tests/run-x11-efficiency.sh
sh Tests/run-miniwindow-suppression.shThe window-scan test creates 128 clients and verifies main-loop responsiveness, complete discovery without duplicate classification, coalesced refreshes, known-window updates, destruction during a scan, and discovery of new clients while a sweep is active.
Icon suppression is limited to GNUstep application icon windows and miniwindows whose dimensions are exactly 48×48 or 64×64. Application icons are unmapped; miniwindow unmapping also respects the miniwindow preference. Parent frames and ordinary windows of those sizes are not unmapped.
Window Maker's own application tiles are also unmapped at those exact sizes.
These anonymous root windows are recognized by their override-redirect,
XDND, and icon event-mask properties, including when the application uses
GSSuppressAppIcon. Run sh Tests/run-overlay-preservation.sh to check this
alongside preservation of small overlay windows.
Before launching an application, DockWM saves GSSuppressAppIcon = YES in that
application’s defaults domain, preserving its other preferences. This applies
to app bundles, executables, and applications launched through desktop files;
no suppression argument is added to the command line. DockWM also sets this
default for itself before creating its application object.