Copyright © 2026 Window Maker Team
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice (including the next
paragraph) shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
This protocol allows native Wayland clients to act as dock applications
(dockapps) — small, tile-sized widgets that live in the Window Maker dock.
Traditional X11 dockapps use the withdrawn state with an icon_window hint
to embed a small rendering surface into the window manager's dock tile.
This protocol provides the Wayland-native equivalent: a client creates a
wl_surface, marks it as a dockapp via this protocol, and the compositor
places it in a dock slot. The surface supports full ARGB transparency,
eliminating the opaque-black-background problem of XWayland dockapps.
The compositor owns the dock tile background. The dockapp surface is
composited on top of it. The client renders only its content (clock face,
system monitor graph, etc.) with transparent background pixels where the
dock tile should show through.
Singleton global advertised by Window Maker compositors. Clients bind
to create dockapp objects for their surfaces.
Destroy the manager. Existing dockapp objects remain valid.
Wrap the given wl_surface as a dock application. The surface must
not have another role (xdg_toplevel, xdg_popup, etc.) assigned.
The compositor will place this surface in the next available dock
slot or use the app_id for slot matching against saved state.
Represents a dock application. The client attaches buffers to the
underlying wl_surface and commits them; the compositor displays the
surface content within a dock tile.
The client should render at the size indicated by the configure event.
The surface supports ARGB — transparent pixels let the dock tile
background show through.
The compositor manages the dockapp's lifecycle: it may be undocked
(closed event), moved between dock slots, or hidden when the dock
is collapsed.
Remove the dockapp from the dock and destroy this object. The
underlying wl_surface becomes inert.
Set the app_id used to match this dockapp against saved dock state
(instance.class format, e.g. "wmclock.WMClock"). Must be called
before the first surface commit.
The compositor sends this event to tell the client what size to
render at. The client must attach a buffer of this size on its
next commit. Sent once after the dockapp is created, and again
if the dock tile size changes.
The compositor removed this dockapp (user undocked it, or dock
was destroyed). The client should destroy the dockapp object and
may exit or create a new one.