mirror of
https://gitlab.freedesktop.org/wayland/wayland-protocols.git
synced 2026-05-05 14:38:20 +02:00
Merge branch 'toplevel-workspace' into 'main'
Draft: staging: add ext-workspace-foreign-toplevel protocol See merge request wayland/wayland-protocols!474
This commit is contained in:
commit
111c10ce1c
2 changed files with 170 additions and 0 deletions
4
staging/ext-workspace-foreign-toplevel/README
Normal file
4
staging/ext-workspace-foreign-toplevel/README
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
Workspace foreign toplevel protocol
|
||||
|
||||
Maintainers:
|
||||
Hiroaki Yamamoto <hrak1529@gmail.com>
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<protocol name="ext_workspace_foreign_toplevel_v1">
|
||||
<copyright>
|
||||
Copyright © 2025 Hiroaki Yamamoto
|
||||
|
||||
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 manage toplevels in workspaces">
|
||||
This protocol serves as an intermediary between ext_workspace_v1 protocol
|
||||
and ext_foreign_toplevel_list_v1 protocol to manage toplevels in workspaces.
|
||||
|
||||
Warning! The protocol described in this file is currently in the testing
|
||||
phase. Backward compatible changes may be added together with the
|
||||
corresponding interface version bump. Backward incompatible changes can
|
||||
only be done by creating a new major version of the extension.
|
||||
</description>
|
||||
|
||||
<interface name="ext_workspace_foreign_toplevel_manager_v1" version="1">
|
||||
<description summary="manage handles for toplevels in workspaces">
|
||||
The ext_workspace_foreign_toplevel_manager_v1 interface defines a base
|
||||
request for creating ext_workspace_foreign_toplevel_handle_v1 objects.
|
||||
</description>
|
||||
|
||||
<request name="get_workspace_toplevel_handle">
|
||||
<description summary="get a handle for a toplevel in workspaces">
|
||||
Request a toplevel handle for workspace-related operations on the given
|
||||
ext_foreign_toplevel_handle_v1. The workspace_manager argument specifies
|
||||
the source of workspaces objects used in events and requests on the
|
||||
returned handle.
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="ext_workspace_foreign_toplevel_handle_v1"/>
|
||||
<arg name="toplevel_handle" type="object" interface="ext_foreign_toplevel_handle_v1"/>
|
||||
<arg name="workspace_manager" type="object" interface="ext_workspace_manager_v1"/>
|
||||
</request>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the ext_workspace_foreign_toplevel_manager_v1 object">
|
||||
Destroys the ext_workspace_foreign_toplevel_manager_v1 object.
|
||||
</description>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="ext_workspace_foreign_toplevel_handle_v1" version="1">
|
||||
<description summary="toplevel handle">
|
||||
A ext_workspace_foreign_toplevel_handle_v1 object represents a handle to
|
||||
associate a toplevel with workspaces.
|
||||
|
||||
This object extends the ext_foreign_toplevel_handle_v1 interface and uses the
|
||||
ext_foreign_toplevel_handle_v1.done event to atomically apply pending state.
|
||||
</description>
|
||||
|
||||
<enum name="error">
|
||||
<entry name="unsupported_feature" value="0" summary="request not supported"/>
|
||||
<entry name="unknown_workspace" value="1" summary="workspace is unknown"/>
|
||||
</enum>
|
||||
|
||||
<request name="assign_workspace">
|
||||
<description summary="assign a toplevel to this workspace">
|
||||
Request that the toplevel associated with this handle is assigned to
|
||||
the given workspace. This request is double-buffered and applied on
|
||||
the next ext_workspace_foreign_toplevel_handle_v1.commit request.
|
||||
|
||||
The workspace must belong to the ext_workspace_manager_v1 that was used
|
||||
to create this handle. Otherwise, this request raises the
|
||||
unknown_workspace error.
|
||||
|
||||
The client must not make this request if the handle does not have the
|
||||
set_workspace capability. Otherwise, this request raises the
|
||||
unsupported_feature error.
|
||||
</description>
|
||||
<arg name="workspace" type="object" interface="ext_workspace_handle_v1"/>
|
||||
</request>
|
||||
|
||||
<request name="unassign_workspace">
|
||||
<description summary="unassign a toplevel from this workspace">
|
||||
Request that the toplevel associated with this handle is unassigned
|
||||
from the given workspace. This request is double-buffered and applied on
|
||||
the next ext_workspace_foreign_toplevel_handle_v1.commit request.
|
||||
|
||||
The workspace must belong to the ext_workspace_manager_v1 that was used
|
||||
to create this handle. Otherwise, this request raises the
|
||||
unknown_workspace error.
|
||||
|
||||
The client must not make this request if the handle does not have the
|
||||
set_workspace capability. Otherwise, this request raises the
|
||||
unsupported_feature error.
|
||||
</description>
|
||||
<arg name="workspace" type="object" interface="ext_workspace_handle_v1"/>
|
||||
</request>
|
||||
|
||||
<request name="commit">
|
||||
<description summary="apply states on the toplevel">
|
||||
The client must send this request after it has finished sending other
|
||||
requests. The compositor must process a series of requests preceding a
|
||||
commit request atomically.
|
||||
|
||||
This allows changes to the toplevel properties to be seen as atomic,
|
||||
even if they happen via multiple requests, and even if they involve
|
||||
multiple workspaces.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy the ext_workspace_foreign_toplevel_handle_v1 object">
|
||||
Destroys the ext_workspace_foreign_toplevel_handle_v1 object.
|
||||
</description>
|
||||
</request>
|
||||
|
||||
<event name="enter_workspace">
|
||||
<description summary="toplevel is assigned to a workspace">
|
||||
This event is emitted whenever the toplevel is assigned to a workspace.
|
||||
This event is double-buffered and applied on
|
||||
ext_foreign_toplevel_handle_v1.done event.
|
||||
</description>
|
||||
<arg name="workspace" type="object" interface="ext_workspace_handle_v1"/>
|
||||
</event>
|
||||
|
||||
<event name="leave_workspace">
|
||||
<description summary="toplevel is unassigned from a workspace">
|
||||
This event is emitted whenever the toplevel is unassigned from a workspace.
|
||||
This event is double-buffered and applied on
|
||||
ext_foreign_toplevel_handle_v1.done event.
|
||||
</description>
|
||||
<arg name="workspace" type="object" interface="ext_workspace_handle_v1"/>
|
||||
</event>
|
||||
|
||||
<enum name="capabilities" bitfield="true">
|
||||
<entry name="set_workspace" value="1"
|
||||
summary="assign_workspace and unassign_workspace request is available"/>
|
||||
</enum>
|
||||
|
||||
<event name="capabilities">
|
||||
<description summary="compositor capabilities">
|
||||
This event advertises the capabilities supported by the compositor. If
|
||||
a capability isn't supported, clients should hide or disable the UI
|
||||
elements that expose this functionality.
|
||||
|
||||
Compositors must send this event once after creation of an
|
||||
ext_workspace_foreign_toplevel_handle_v1. When the capabilities change,
|
||||
compositors must send this event again.
|
||||
</description>
|
||||
<arg name="capabilities" type="uint" summary="capabilities"
|
||||
enum="capabilities"/>
|
||||
</event>
|
||||
</interface>
|
||||
</protocol>
|
||||
Loading…
Add table
Reference in a new issue