This is an updated version of the
Original work here: https://github.com/swaywm/wlr-protocols/pull/35
Pending PRs for implementation in compositors (wlroots, Wayfire, Sway): https://github.com/swaywm/wlroots/pull/2357 https://github.com/WayfireWM/wayfire/pull/647 https://github.com/swaywm/sway/pull/5597
There is also a person who is starting/has started to implement this protocol in Waybar: https://github.com/Alexays/Waybar/issues/762, I will update this MR with a link to it as soon as it is ready.
Note that the protocol inside is still in the
zwlr namespace, which I will obviously rename to
ext if the protocol is approved.
The intention of the protocol is to expose information about workspaces in the compositor and associate them with outputs:
- A compositor exposes one or more workspace groups
- Each workspace group is comprised of several workspaces
- Each workspace group is "visible" on a few outputs
For example, in Wayfire, there is one workspace group per output, because the workspaces on each output are independent.
In GNOME, one would probably also have a workspace group per output, and all of them except the primary output's workspace group will have just one workspace.
Clients would be able to use this protocol to implement workspace switching widgets in panels, command line tools used to focus a workspace and similar. This would also make it possible to modify the
wlr-foreign-toplevel-management protocol understand on which workspace(s) toplevels are visible.