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.
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.
This global can be used to create foreign toplevel geometry trackers.
Destroy the manager. Any objects created by the manager are not affected.
Creates a toplevel geometry tracker for the given foreign toplevel handle.
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.
This request destroys the geometry tracker object.
This event indicates no more geometry events will be sent for this tracker.
The client should destroy the tracker.
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.
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.