shell: Introduce workspace manager interface

The workspace manager interface purpose is to provide clients with
control and knowledge about the current workspace state. Initially only
one function and one event exists; moving a surface and state updated
event. A workspace is represented as an index in a 1 dimensional array.

A client keeps track of the state by being broadcasted events when the
state changes, currently limited to current workspace or number of
workspaces available.

A client can send an asynchronous request to the manager asking to move
a surface to workspace identified by an index. It is up to the shell to
actually move it.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
This commit is contained in:
Jonas Ådahl
2012-08-29 22:13:01 +02:00
committed by Kristian Høgsberg
parent 8de6a1ddae
commit e9d2250549
4 changed files with 142 additions and 5 deletions
+3 -2
View File
@@ -2,5 +2,6 @@ EXTRA_DIST = \
desktop-shell.xml \
screenshooter.xml \
tablet-shell.xml \
xserver.xml \
text.xml
xserver.xml \
text.xml \
workspaces.xml
+27
View File
@@ -0,0 +1,27 @@
<protocol name="workspaces">
<interface name="workspace_manager" version="1">
<description summary="workspaces manager">
An interface for managing surfaces in workspaces.
</description>
<request name="move_surface">
<description summary="move surface to workspace">
Move the given surface to the specified workspace.
</description>
<arg name="surface" type="object" interface="wl_surface"/>
<arg name="workspace" type="uint"/>
</request>
<event name="state">
<description summary="workspace state">
The current workspace state, such as current workspace and workspace
count, has changed.
</description>
<arg name="current" type="uint"/>
<arg name="count" type="uint"/>
</event>
</interface>
</protocol>