Revision control
++ <?xml version="1.0" encoding="UTF-8"?>
++ <protocol name="qt_shell_unstable_v1">
++ <copyright>
++ Copyright (C) 2021 The Qt Company Ltd.
++ SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
++ </copyright>
++
++
++ <interface name="zqt_shell_surface_v1" version="1">
++
++ <description summary="create fully compliant surfaces for use with Qt applications">
++ The qt_shell_surface interface is part of a shell extension which allows clients to
++ access all windowing system features in Qt. These include mechanisms that may only be
++ advisable for trusted applications, and not for arbitrary third-party applications. The
++ qt_shell_surface provides an interface to windowing system features for a surface.
++ </description>
++
++ <request name="destroy" type="destructor">
++ <description summary="destroy the qt_shell_surface">
++ Destroys the qt_shell_surface object.
++ </description>
++ </request>
++
++ <event name="resize">
++ <description summary="suggest a new size for the window">
++ This event suggests a size for the window. This can be one of multiple configuration
++ events grouped together by a serial number. The client should store them until the
++ corresponding configure event is received. The suggested configuration is not effective
++ before the client has responded with an ack_configure request with the same serial number.
++ This allows the server to group together reposition and resize events to avoid stuttering
++ in updates.
++ </description>
++ <arg name="serial" type="uint" summary="the serial of the configuration" />
++ <arg name="width" type="int" summary="the suggested width of the window" />
++ <arg name="height" type="int" summary="the suggested height of the window" />
++ </event>
++
++ <event name="set_position">
++ <description summary="informs of a new position for the window">
++ This event informs the client that the position of the window is about to change.
++ This can be one of multiple configuration events grouped together by a serial number. The
++ client should store them until the corresponding configure event is received. The suggested
++ configuration is not effective before the client has responded with an ack_configure request
++ with the same serial number. This allows the server to group together reposition and resize
++ events to avoid stuttering in updates.
++ </description>
++ <arg name="serial" type="uint" summary="the serial of the configuration" />
++ <arg name="x" type="int" summary="the suggested horizontal position of the window" />
++ <arg name="y" type="int" summary="the suggested vertical position of the window" />
++ </event>
++
++ <enum name="window_state">
++ <entry name="no_state" value="0"/>
++ <entry name="minimized" value="1"/>
++ <entry name="maximized" value="2"/>
++ <entry name="fullscreen" value="4"/>
++ </enum>
++ <event name="set_window_state">
++ <description summary="suggest a new state for the window">
++ This event informs the client that the state of the window is about to change.
++ This can be one of multiple configuration events grouped together by a serial number. The
++ client should store them until the corresponding configure event is received. The suggested
++ configuration is not effective before the client has responded with an ack_configure request
++ with the same serial number. This allows the server to group together reposition and resize
++ events to avoid stuttering in updates.
++ </description>
++ <arg name="serial" type="uint" summary="the serial of the configuration" />
++ <arg name="state" type="uint" summary="a combination of the flags in the window_state enum" />
++ </event>
++
++ <event name="configure">
++ <description summary="commits a series of configuration events">
++ After sending one or more configuration events, the server sends a configure event with
++ the same serial to trigger the necessary updates on the client side. When the client has
++ made these changes, it should send an ack_configure request for the corresponding serial to
++ inform the server that the new configuration is valid.
++ </description>
++ <arg name="serial" type="uint"/>
++ </event>
++
++ <event name="set_frame_margins">
++ <description summary="informs of the frame margins of the window">
++ This event informs the client how much of the window geometry is reserved for decorations.
++ When a resize configuration is received, the frame margins must be subtracted from the size
++ to find the appropriate size of the surface used for application content. State changes can
++ trigger updates to frame margins, for instance if the window switches between windowed and
++ fullscreen modes.
++ </description>
++ <arg name="left" type="uint" summary="the left frame margin" />
++ <arg name="right" type="uint" summary="the right frame margin" />
++ <arg name="top" type="uint" summary="the top frame margin" />
++ <arg name="bottom" type="uint" summary="the bottom frame margin" />
++ </event>
++
++ <event name="close">
++ <description summary="closes the window">
++ The server sends a close event to instruct the window to close itself gracefully. This could
++ for instance be triggered by user interaction, when clicking on the close button in the
++ window decorations.
++ </description>
++ </event>
++
++ <enum name="capabilities">
++ <entry name="interactive_move" value="1" />
++ <entry name="interactive_resize" value="2" />
++ </enum>
++ <event name="set_capabilities">
++ <description summary="informs the client of the server's capabilities">
++ This event informs the client of which capabilities are available on the server-side. See
++ the capabilities enum for possible flags.
++ </description>
++ <arg name="capabilities" type="uint" summary="a mask of flags from the capabilities enum" />
++ </event>
++
++ <request name="reposition">
++ <description summary="requests a new position for the window">
++ A client can issue this to request a new position for the window. If the request is granted,
++ the server will respond with a configuration event.
++ </description>
++ <arg name="x" type="int" summary="the requested horizontal position of the window" />
++ <arg name="y" type="int" summary="the requested vertical position of the window" />
++ </request>
++
++ <request name="request_activate">
++ <description summary="requests that the window becomes active">
++ This requests that the window becomes active. The server may respond by giving keyboard
++ focus to the window. Only a single window may be active at any given time.
++ </description>
++ </request>
++
++ <request name="set_size">
++ <description summary="informs that the shell surface size has changed">
++ The client issues the set_size request when the window has been resized.
++ </description>
++ <arg name="width" type="int" summary="the new width of the window" />
++ <arg name="height" type="int" summary="the new height of the window" />
++ </request>
++
++ <request name="set_minimum_size">
++ <description summary="informs of the minimum size hint of the window">
++ The client issues this request to inform the server of the minimum size of the window. The
++ server should not attempt to resize the window below this size.
++ </description>
++ <arg name="width" type="int" summary="the minimum width of the window" />
++ <arg name="height" type="int" summary="the minimum height of the window" />
++ </request>
++
++ <request name="set_maximum_size">
++ <description summary="informs of the maximum size hint of the window">
++ The client issues this request to inform the server of the maximum size of the window. The
++ server should not attempt to resize the window above this size.
++ </description>
++ <arg name="width" type="int" summary="the maximum width of the window" />
++ <arg name="height" type="int" summary="the maximum height of the window" />
++ </request>
++
++ <request name="set_window_title">
++ <description summary="informs of the title of the window">
++ This request is issued to inform the server of the title of the window.
++ </description>
++ <arg name="window_title" type="string" summary="the title of the window" />
++ </request>
++
++ <request name="set_window_flags">
++ <description summary="informs of the flags of the window">
++ The client issues this request to inform the server of the current window flags set on
++ the window
++ </description>
++ <arg name="flags" type="uint" summary="values defined by Qt::WindowFlags"/>
++ </request>
++
++ <request name="start_system_resize">
++ <description summary="starts a system resize">
++ This request is triggered when an application calls QWindow::startSystemResize() and should
++ trigger interactive resizing on the server-side. Typical behavior is to have the selected
++ edge follow the mouse.
++ </description>
++ <arg name="serial" type="uint" summary="serial of the pointer event that triggered the resize."/>
++ <arg name="edge" type="uint" summary="values defined by Qt::Edges"/>
++ </request>
++
++ <request name="start_system_move">
++ <description summary="starts a system resize">
++ This request is triggered when an application calls QWindow::startSystemMove() and should
++ trigger interactive repositioning on the server-side. Typical behavior is to have the
++ window follow the mouse.
++ </description>
++ <arg name="serial" type="uint" summary="Serial of the pointer event that triggered the move."/>
++ </request>
++
++ <request name="change_window_state">
++ <description summary="requests a new window state">
++ This requests the server to update the state of the window. The server may respond with
++ a new configure event bundle that reflects all the changes in position, size and state
++ that occurred.
++ </description>
++ <arg name="state" type="uint" summary="a combinaion of the flags in the window_state enum" />
++ </request>
++
++ <request name="raise">
++ <description summary="raises the window">
++ This requests that the window is brought to the top of the window stack, so that it is
++ showing on top of all other windows.
++ </description>
++ </request>
++
++ <request name="lower">
++ <description summary="lowers the window">
++ This requests that the window is brought to the bottom of the window stack, so that it is
++ showing below all other windows.
++ </description>
++ </request>
++
++ <request name="ack_configure">
++ <description summary="acknowledges a given configure event">
++ This acknowledges that the given configure event bundle has been received and that the
++ necessary changes have been applied.
++ </description>
++ <arg name="serial" type="uint" summary="the serial of the configure event" />
++ </request>
++
++ </interface>
++
++ <interface name="zqt_shell_v1" version="1">
++ <description summary="interface for create qt_shell_surface objects">
++ This interface provides a way to request qt_shell_surface objects that correspond to
++ wl_surfaces.
++ </description>
++ <request name="surface_create">
++ <description summary="creates a new qt_shell_surface object">
++ Creates a qt_shell_surface object that corresponds to a surface. If the surface is already
++ assigned a different role, this will issue a protocol error (see the error enum)
++ </description>
++ <arg name="surface" type="object" interface="wl_surface"/>
++ <arg name="id" type="new_id" interface="zqt_shell_surface_v1"/>
++ </request>
++
++ <enum name="error">
++ <entry name="role" value="0" summary="wl_surface already has a different role"/>
++ </enum>
++ </interface>
++
++ </protocol>