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.