125 lines
5.6 KiB
XML
125 lines
5.6 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<protocol name="wmaker_dockapp_v1">
|
|
<copyright>
|
|
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.
|
|
</copyright>
|
|
|
|
<description summary="Window Maker dock application protocol">
|
|
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.
|
|
</description>
|
|
|
|
<interface name="wmaker_dockapp_manager_v1" version="1">
|
|
<description summary="manager for dock application surfaces">
|
|
Singleton global advertised by Window Maker compositors. Clients bind
|
|
to create dockapp objects for their surfaces.
|
|
</description>
|
|
|
|
<request name="destroy" type="destructor">
|
|
<description summary="release the manager">
|
|
Destroy the manager. Existing dockapp objects remain valid.
|
|
</description>
|
|
</request>
|
|
|
|
<request name="get_dockapp">
|
|
<description summary="create a dockapp from a wl_surface">
|
|
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.
|
|
</description>
|
|
<arg name="id" type="new_id" interface="wmaker_dockapp_v1"
|
|
summary="the new dockapp object"/>
|
|
<arg name="surface" type="object" interface="wl_surface"
|
|
summary="the surface to use as dockapp content"/>
|
|
</request>
|
|
</interface>
|
|
|
|
<interface name="wmaker_dockapp_v1" version="1">
|
|
<description summary="a dock application surface">
|
|
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.
|
|
</description>
|
|
|
|
<enum name="error">
|
|
<entry name="already_configured" value="0"
|
|
summary="set_app_id called after first commit"/>
|
|
</enum>
|
|
|
|
<request name="destroy" type="destructor">
|
|
<description summary="destroy the dockapp">
|
|
Remove the dockapp from the dock and destroy this object. The
|
|
underlying wl_surface becomes inert.
|
|
</description>
|
|
</request>
|
|
|
|
<request name="set_app_id">
|
|
<description summary="set application identifier for dock state matching">
|
|
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.
|
|
</description>
|
|
<arg name="app_id" type="string" summary="application identifier"/>
|
|
</request>
|
|
|
|
<event name="configure">
|
|
<description summary="compositor requests a size for the dockapp">
|
|
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.
|
|
</description>
|
|
<arg name="width" type="uint" summary="requested width in pixels"/>
|
|
<arg name="height" type="uint" summary="requested height in pixels"/>
|
|
</event>
|
|
|
|
<event name="closed">
|
|
<description summary="dockapp was removed from the dock">
|
|
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.
|
|
</description>
|
|
</event>
|
|
</interface>
|
|
</protocol>
|