Merge branch 'toplevel-workspace' into 'main'

Draft: staging/ext-workspace: associate with ext_foreign_toplevel_handle_v1

See merge request wayland/wayland-protocols!474
This commit is contained in:
Hiroaki Yamamoto 2025-12-17 13:00:31 +00:00
commit d6644c2d99

View file

@ -27,7 +27,7 @@
THIS SOFTWARE. THIS SOFTWARE.
</copyright> </copyright>
<interface name="ext_workspace_manager_v1" version="1"> <interface name="ext_workspace_manager_v1" version="2">
<description summary="list and control workspaces"> <description summary="list and control workspaces">
Workspaces, also called virtual desktops, are groups of surfaces. A Workspaces, also called virtual desktops, are groups of surfaces. A
compositor with a concept of workspaces may only show some such groups of compositor with a concept of workspaces may only show some such groups of
@ -123,9 +123,20 @@
</description> </description>
</request> </request>
<!-- Version 2 additions -->
<request name="get_toplevel_handle" since="2">
<description summary="get a toplevel handle for workspaces">
Request a toplevel handle for this workspace.
The toplevel handle can be used to associate toplevels with this workspace.
</description>
<arg name="id" type="new_id" interface="ext_workspace_toplevel_handle_v1"/>
<arg name="toplevel_handle" type="object" interface="ext_foreign_toplevel_handle_v1"/>
</request>
</interface> </interface>
<interface name="ext_workspace_group_handle_v1" version="1"> <interface name="ext_workspace_group_handle_v1" version="2">
<description summary="a workspace group assigned to a set of outputs"> <description summary="a workspace group assigned to a set of outputs">
A ext_workspace_group_handle_v1 object represents a workspace group A ext_workspace_group_handle_v1 object represents a workspace group
that is assigned a set of outputs and contains a number of workspaces. that is assigned a set of outputs and contains a number of workspaces.
@ -419,4 +430,55 @@
</description> </description>
</request> </request>
</interface> </interface>
<!-- Version 2 additions -->
<interface name="ext_workspace_toplevel_handle_v1" version="2">
<description summary="toplevel handle for workspaces">
A ext_workspace_toplevel_handle_v1 object represents a handle to
associate a toplevel with workspaces.
</description>
<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.
</description>
<arg name="workspace" type="object" interface="ext_workspace_handle_v1"/>
</request>
<request name="destroy" type="destructor">
<description summary="destroy the ext_workspace_toplevel_handle_v1 object">
Destroys the ext_workspace_toplevel_handle_v1 object.
</description>
</request>
<event name="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>
<enum name="workspace_toplevel_capabilities" bitfield="true">
<entry name="assign_workspace" value="1" summary="assign_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.
The compositor will ignore requests it doesn't support.
Compositors must send this event once after creation of an
ext_workspace_toplevel_handle_v1. When the capabilities change, compositors
must send this event again.
</description>
<arg name="capabilities" type="uint" summary="capabilities" enum="workspace_toplevel_capabilities"/>
</event>
</interface>
</protocol> </protocol>