Re:call for other views [was Removing wm/pager interaction]




>Spot on again. One solution does need to be integrated to clarify the
>spec, and make it solid. I think all the guys on the mailing list need
>to give input on which approach to take. I think everyone could live
>with either of the solutions (perhaps with refinement) if 5, 10 or even
>20 people had voted one way or the other.

Just another reiteration of my 2 proposals that clarify this part of the
specs. First solution allows for Insertion/Deletion of the desktops in/from
the middle of the list, but is more cumbersom, as it involves burden of
tracking what Desktop Name, root background, etc. goes with what desktop.
Second option is much simplier, but allows only for addition/deletion
of desktops to/from the tail of the list:

APPROACH 1:
 Add property :
<quote>
_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.
</quote>

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 much easier to handle, making
reparenting and updating of this property on ALL the windows placed
on the desk, after the one being deleted unneeded.

Also add something like:

<quote>
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.
</quote>

*****************************************************************
APPROACH 2:

Instead of :
<quote>
A Pager can insert or delete a certain desktop by sending
a _NET_{INSERT/DELETE}_DESKTOP client message to the root window.
</quote>

Specs should read :

<quote>
A Pager can request change in the desktops number by sending
a _NET_SET_NUMBER_OF_DESKTOPS message to the root window:

NET_SET_NUMBER_OF_DESKTOPS
  window = target app window
  message_type = _NET_SET_NUMBER_OF_DESKTOPS
  format = 16
  data.s[0] = new_desktops_number

Window Manager is free to honor or reject this request. If request is
honored
_NET_NUMBER_OF_DESKTOPS will be adjusted to the new number of desktops. If
request is honored, then _NET_VIRTUAL_ROOTS (if supported) has to be
adjusted to
store new number od desktop virtual root window IDs. _NET_DESKTOP_NAMES
property
may remain unchanged as it represents pre-configured static information.
If number of desktops is shrinking and _NET_CURRENT_DESKTOP is out of the
new range
of of available desktops, then current desk must be changed to the very
last available
desktop from the new set, and _NET_CURRENT_DESKTOP must be adjusted
accordingly.
If number of desktops is shrinking then clients that are still present on
desktops,
that are out of the new range, must be moved to the very last desktop from
the new
set.
</quote>

also the following change has sence IMHO, as desktop names are rather
independent from the fact that we increasing or decreasing number of
desktops.As far as it is likely to be preconfigured, and if you first
shrink
desktops list and then grow it  - you will ewant to use same names as
you used before. By keeping this property unchanged you save some
time from unneccessary udates of it.

So Instead of :
<quote>
_NET_DESKTOP_NAMES

The names of all virtual desktops in UTF8 encoding. This property MAY be
changed by a Pager or the Window Mangaer at any time. When a desktop is
added or
removed, the Window Manager MUST update this list.
</quote>

specs should read :

<quote>
_NET_DESKTOP_NAMES

The names of all virtual desktops in UTF8 encoding. This property MAY be
changed by a Pager or the Window Mangaer at any time.
</quote>

>You guys who have implemented the spec - surely you must have made
>assumptions, which need to be added into the spec as requirements -
>what's your opinion ?

Any better ideas ?

>Julian


Sasha





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