Workspace implementation notes

There are two other ways to implement multiple desktops (workspaces),
both of which are ICCCM-compliant (afaict). They are slight variations
on the 'virtual root' method.

One is to use _NET_WM_WINDOW_TYPE_DESKTOP windows to obscure windows not
on the current workspace. When there is no such window, the window manager
can create one for this purpose in the ordinary virtual root manner.
All other operation is similar to the virtual root method where windows
are not children of the virtual root. Changing workspaces would be acheived
by changing the stacking so that window on the workspace are above the desktop
and the rest are below it. This can also be used so that the desktop window
is set per workspace; thus allowing more specialized workspaces.
If this is unclear, I hope the ascii figures below will clarify it.

Another method is to use a workspace manager protocol similar to the Motif
one. This could take any number of forms and could allow the owner of the
_NET_WM_WINDOW_TYPE_DESKTOP window to be the workspace manager.

Figure 1 - A single desktop window for all workspaces

  [              ]  Windows on current workspace

  ----------------  _NET_WM_WINDOW_TYPE_DESKTOP or special WM window

  [              ]  Windows not on current workspace

      --------      Root

Figure 2 - Multiple desktop windows

  [              ]  Windows on current workspace

  ----------------  _NET_WM_WINDOW_TYPE_DESKTOP on current workspace

  [              ]  Windows on workspace N

  ----------------  _NET_WM_WINDOW_TYPE_DESKTOP on workspace N

  [              ]  Windows on workspace N - 1

  ----------------  _NET_WM_WINDOW_TYPE_DESKTOP on workspace N - 1

  [              ]  Windows on workspace N - 2

  ----------------  _NET_WM_WINDOW_TYPE_DESKTOP on workspace N - 2

  [              ]  Windows on workspace N - 3

  ----------------  _NET_WM_WINDOW_TYPE_DESKTOP on workspace N - 3

      --------      Root

(Yeah, the root is smaller than the others. These are large workspaces. ;-)

Greg Merchan

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]