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.