Re: Removing wm/pager interaction



On Wed, 21 Jun 2000 Sasha_Vasko@osca.state.mo.us wrote:

> 
> >Am Mon, 19 Jun 2000 schrieb Sasha_Vasko@osca.state.mo.us:
> >> <snip>
> >> >So yes, the hints are indeed very important for many desktops. Luckily
> we
> >> >agreed on them long time ago and luckily the end-users will be able to
> use
> >> >tools like "kicker" with any window manager they want in the future.
> >>
> >> Unluckily there is a sufficient amount of problems with agreed specs:
> >> 1) INSERT/DELETE DESKTOP message has no defined behaviour in specs, and
> >> either
> >> way to define it you'll get into other problems.
> 
> >I disagree. Those hints are totally independent.
> 
> eh? Independant from what ?? Specs reads :
> <quote>
> A Pager can insert or delete a certain desktop by sending a
> _NET_{INSERT/DELETE}_DESKTOP client message to the root window.
> </quote>
> 
> But there is no definition as to what is supposed to happen when
> desktop is inserted/deleted. What name to use with it ? what root background ?
> what to do with windows that are on the desk being deleted ? What happen
> if Pager requests addition of the desktop 7 when we only have 0, 1, 2, 3 ?
> etc. etc. etc.  All of that has to be defined some way or another if this really is
> a WM compatibility specs.


that depends on the window manager actually.
to clarify some issues here, window managers that don't support
multiple desktops will ignore _NET_INSERT_DESKTOP and
_NET_DELETE_DESKTOP requests.
the desktop number in _NET_INSERT_DESKTOP should actually be
a _hint_, so a window manager that only supports appending
desktops will append one. if it can insert, then it should do
that at the position specified by the hint.
for _NET_DELETE_DESKTOP, if the window manager finds that
desktop undeletable, e.g. because tehre are windows on it and
it can't move them, or because the desktop requested for
deletion is in the middle of other desktops and it can only
remove/append at the list end, then it should ignore it.

for the desktop names, those should actually be maintained by
the window manager, you also wrote the spec still contains:

<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>

that needs to be changed, for one we need one application to store the
desktop names on disk across sessions, and also we need one mandatory
entity to administrate this list. as there maybe multiple/no pagers
around, but always a window manager, that entity should be the window
manager. upon desktop insertions, i would probably set the name
for that desktop to NUL (and if you have 7 desktops, the third being
named "Irc clients" and the pager requests deletion of 3 and then
insertion of 3, 3 will have a NUL name).
desktop name changes need to be routed through client messages to
the root window and then the window manager has to update that property
and take care to save it accross sessions.

as to what the root window will look like for newly inserted desktops,
i think we have a property in the spec that specifies if the window
manager should set the background at all. if not, then it's up to the
desktop environment to set backgrounds on new root windows, otherwise
you use your normal window manger logic for choosing backgrounds.

> Please understand that I don't raise these questions out of idle interest -
> I am trying to implement support for this specs in AfterStep and I'm literarly
> stuck not knowing what should be implemented.

i think john harper mentioned at some point that he was already implementing
the spec for sawfish, so maybe he could speak up how he implemented certain
details.
also note that this spec is some arbitrary feature set that a bunch of
unexperienced people cooked up. for the most part the suggestions came from
window manager authors, and a bunch of the pager hints steemed from problems
that i ran into when implementing gnome's new window manager independant
pager.

---
ciaoTJ





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