Virtual desktop protocol
Created by: acrisci
Nearly every window manager has a concept of a "virtual desktop" in their operation.
i3 has the concept of "workspaces" and Awesome has "tags" which are nearly identical concepts. Each output has a currently active workspace that has its own set of visible windows, and inactive workspaces that are hidden. Many workspaces can exist on an output and each output has its own set of workspaces. Outputs can switch workspaces independently of each other.
Xfce and Gnome have "virtual desktops". There is a single set of virtual desktops for the whole screen. This nomenclature comes from the _NET_DESKTOP_*
EWMH root window properties and client requests.
I would like to support both paradigms if possible.
The goal of this protocol is to support out of process bars that can be run on any window manager. This was never possible on X11 because EWMH only supported the "virtual desktop" paradigm.
Required of the protocol:
List all of the workspaces for each output.
This is to display the workspaces on the bar and their active status.
A way to request a change in the active workspace or a create a new workspace
A bar might request this when the user interacts with the bar like clicking a button. The compositor should be able to deny the request.
Workspaces on multiple outputs at once
This is to support the traditional virtual desktop paradigm. This might require desktop status to be double buffered to support changing workspaces on several outputs at once.
The first target compositors are sway and way-cooler.
Let me know if you have concerns. If you like the idea, I'll write some XML.