Hints for swallowed pagers and MacOS-style menus



>Two suggested modifications to the spec:
>
>(1) A new root window property to allow WM-provided pagers and taskbars
(and
>foobars) to be embedded in DE-provided docks and panels.
>
>  _NET_SWALLOW_THIS_WINDOW, XA_WINDOW/32
>.
>.
>.
>Possible problems:
>* What happens to swallowed windows if the panel crashes?

Those windows will be destroyed, since they will be reparented to panel's
own
window. Window Manager must have a logic to handle DestroyNotify for those
windows.
Althou good implementation of swallowing app should take care of
reparenting
swallowed windows back to the root, whenever it is about to
quit/abort/crash.
It also should distinguish between apps launched by WM or other apps and
its
own children, and it should kill children instead of unswallowing them.

Still, swallowing is very tricky thing to do and prone to hazardous
conflicts
whenever WM, swallower and/or owner app do manipulation to the window being
swallowed at the same time. Does not happen very often - mostly on
startups/shutdowns, but can be dangerous nevertheless.

>* What happens if the user has a Gnome panel running on one desktop and a
KDE
>  panel running on another desktop? Only one of them can display the pager

If panel is implemented poorly, effect of "window theft" can be seen in
such cases :
window will get swallowed by one panel, and then when other panel comes up,
it
"steals" window from the first panel, and reswallows it into itself.
So swallowing apps should take care to check if window about to be
swallowed is
not swallowed by some other app. Again the only way to check it is to see
how
deep from the root it is, and that can vary from one WM to another.
Accordingly
some other property or something is needed to indicate that window is
swallowed
already.

>  (but then again, multiple pagers communicating with one window manager
would
>  be worse).

Multiple pagers are not a problem at all, unless it is implemented very
poorly.

>* Maybe this should be a list of window IDs to allow (eg) a pager, a
taskbar
>  and a global menubar to be embedded? That would allow the panel more
>  flexibility when finding the requested space than embedding one huge
window
>  with all three features in it.

Actually it makes much better sence not to cary the list of window's IDs,
but instead, have a configuration option in swallowing app, to define what
windows to swallow by name or class of the window. that scheme is much more
reliable, flexible and user friendly.

>Michael

Cheers
Sasha






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