Better Virtual Desktops



Ok, Here is an idea that may very well solve most or all of the virtual
desktopping problems
with variable desktops number :

Add property :
<insert>
_NET_ACTIVE_DESKTOPS, CARDINAL[]

This property MUST be set by WM to list numbers of all accessible virtual desktops.
This Property must be updated whenever new desktop is added or removed.
</insert>

all the other per-desktop properties will have the same length, and Ns
element of any of
those properties, will cary information related to the desktop number
stored in Ns element
of _NET_ACTIVE_DESKTOPS property. This approach will allow for dynamic
adding/removing
of the desktops in any order, sequence and with any number, at the same
time it will inform
any Pager or other app, if there are any gaps in desk numbering, that can
indicate that some desk was
removed from the middle of the list. Pagers may provide users with some
visible signs in such a case.

More that that  - it will provide information on what's been delete to
Pager/windowmanager in case it
restarts, and all internal logs are lost. It will also allow for that piece
of info to be carried over to other WMs
if user changes WM without exiting X.

_NET_WM_DESKTOP of any window in that case will be refering to the desktop
number whithin this list,
thus making making situations when desktop is deleted from the middle of
the list mnuch easier to handle,
making reparenting and updating of this property on ALL the windows placed
on the desk, after the one
being deleted unneeded.

Window managers that only maintain virtual desktops based on if there are
any windows
present on particular desktop will have no worries in this case as well (
fvwm and AfterStep ).
At first they will only set this list to contain single desk 0, then it
will be dynamically expanded/shrinked
by Pager requests.

Everybody will be happy

In this case
_NET_NUMBER_OF_DESKTOPS
is not needed but we can leave it there for the heck of it, and set it to
be equal to the number
of elements in _NET_ACTIVE_DESKTOPS.

Also add something like:

<insert>
When desktop is being deleted all the clients from this desktop must be
moved to the next available desktop
with smaller number. If it is not available - then to the next available
desktop with higher number. If no other
desktops are available - request will be denied.
</insert>

This will make INSERT/DELETE messages specs complete enough.

Peace
Sasha Vasko






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