120 lines
5.3 KiB
XML
120 lines
5.3 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<protocol name="xx_foreign_toplevel_geometry_tracking_v1">
|
|
<copyright>
|
|
Copyright © 2026 outfoxxed
|
|
|
|
Permission to use, copy, modify, distribute, and sell this
|
|
software and its documentation for any purpose is hereby granted
|
|
without fee, provided that the above copyright notice appear in
|
|
all copies and that both that copyright notice and this permission
|
|
notice appear in supporting documentation, and that the name of
|
|
the copyright holders not be used in advertising or publicity
|
|
pertaining to distribution of the software without specific,
|
|
written prior permission. The copyright holders make no
|
|
representations about the suitability of this software for any
|
|
purpose. It is provided "as is" without express or implied
|
|
warranty.
|
|
|
|
THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
|
|
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
|
|
AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
|
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
|
THIS SOFTWARE.
|
|
</copyright>
|
|
|
|
<description summary="protocol to track the geometry of foreign toplevels">
|
|
This protocol allows clients to track the geometry of toplevels relative
|
|
to all relevant outputs.
|
|
|
|
This protocol is privileged and should be limited to trusted clients.
|
|
|
|
The key words "must", "must not", "required", "shall", "shall not",
|
|
"should", "should not", "recommended", "may", and "optional" in this
|
|
document are to be interpreted as described in IETF RFC 2119.
|
|
</description>
|
|
|
|
<interface name="xx_foreign_toplevel_geometry_tracking_manager_v1" version="1">
|
|
<description summary="manager for foreign toplevel geometry trackers">
|
|
This global can be used to create foreign toplevel geometry trackers.
|
|
</description>
|
|
|
|
<request name="destroy" type="destructor">
|
|
<description summary="destroy the manager">
|
|
Destroy the manager. Any objects created by the manager are not affected.
|
|
</description>
|
|
</request>
|
|
|
|
<request name="get_geometry_tracker">
|
|
<description summary="create a toplevel geometry tracker">
|
|
Creates a toplevel geometry tracker for the given foreign toplevel handle.
|
|
</description>
|
|
|
|
<arg name="tracker" type="new_id" interface="xx_foreign_toplevel_geometry_tracker_v1"/>
|
|
<arg name="toplevel" type="object" interface="ext_foreign_toplevel_handle_v1"/>
|
|
</request>
|
|
</interface>
|
|
|
|
<interface name="xx_foreign_toplevel_geometry_tracker_v1" version="1">
|
|
<description summary="tracks geometry of a foreign toplevel relative to outputs">
|
|
This object tracks the geometry of a foreign toplevel relative to all outputs
|
|
it is present on.
|
|
|
|
Upon creation, a set of 'geometry' events must be sent. Additional event sets
|
|
should be sent whenever the toplevel is moved.
|
|
</description>
|
|
|
|
<request name="destroy" type="destructor">
|
|
<description summary="destroy the tracker object">
|
|
This request destroys the geometry tracker object.
|
|
</description>
|
|
</request>
|
|
|
|
<event name="finished">
|
|
<description summary="the compositor has finished with this tracker">
|
|
This event indicates no more geometry events will be sent for this tracker.
|
|
The client should destroy the tracker.
|
|
</description>
|
|
</event>
|
|
|
|
<event name="done">
|
|
<description summary="end of a toplevel geometry event list">
|
|
This event marks the end of a set of 'geometry' events for a toplevel.
|
|
|
|
The event set may be empty, indicating the toplevel is not present on
|
|
any output.
|
|
|
|
Following this event, 'ext_foreign_toplevel_handle_v1.done' must be sent
|
|
to allow toplevel geometry updates to be used atomically with other foreign
|
|
toplevel state changes.
|
|
</description>
|
|
</event>
|
|
|
|
<event name="geometry">
|
|
<description summary="monitor relative geometry has changed">
|
|
This event reports the geometry of the toplevel relative to the output in the
|
|
output's hardware coordinate space, as reported by 'wl_output.mode'. Geometry
|
|
should not be clipped to the bounds of the output even if the output does not
|
|
fully contain the toplevel.
|
|
|
|
Clients may use the logical coordinate information reported by `xdg_output`
|
|
to derive a global position for a toplevel.
|
|
|
|
One event may be sent for each output the toplevel is present on, followed by
|
|
a single 'done' event.
|
|
|
|
A series of geometry events should be resent whenever the toplevel is moved,
|
|
followed by a 'done' event.
|
|
</description>
|
|
|
|
<arg name="output" type="uint" summary="global id of the output"/>
|
|
<arg name="x" type="int" summary="x coordinate in the output's hardware coordinate space"/>
|
|
<arg name="y" type="int" summary="y coordinate in the output's hardware coordinate space"/>
|
|
<arg name="width" type="uint" summary="width in the output's hardware coordinate space"/>
|
|
<arg name="height" type="uint" summary="height in the output's hardware coordinate space"/>
|
|
</event>
|
|
</interface>
|
|
</protocol>
|
|
|