Can STRUTS and DoNotCover coexist ?



Hi all

Sorry to put salt on old wounds, but there are some issues with using STRUTS that just don't go away.

Don't get me wrong - I like STRUTS. It is a very good approach to handle any panels that are adjacent to the screen edge, and by no means I want to argue points brought forth by

http://mail.gnome.org/archives/wm-spec-list/1999-October/msg00007.html

Now, what I'd like to point out is the problem of panels/docks/taskbars that are not placed at the edge of the screen. For example if user wants to place kicker/dock/wharf/gpanel/whatever right in the middle of the screen ? Not altogether impossible situation if one owns 21" monitor and in fact does not use much more then bunch of terms opened up at the same time, making maximization to full screen rather undesirable. Besides that somewhat extreme situation, there are a plenty of reasons for placing docks/panels sufficiently off the edge of the screen. Additionally there is that issue of handling situation of several panels/taskbars piled up on one side of the screen.

For all of the above it involves rather ugly hacks to use STRUTS to achieve NoCover semantics, not to say, that sometimes its even impossible. Which brings us back to questionable DoNotCover hint.

Its seems evident that something is needed to compliment STRUTS to cover above mentioned situations. It was suggested long ago that we should add DoNotCover hint , that when set, will cause window manager to avoid placing other windows in entire area covered by the window. Valid concerns here were that when something like that is used for AutoHide panels - that will cause other windows moved/resized when panels unhides. As the result STRUTS was accepted as better alternative.

Here is the idea - instead of proping STRUTS and DoNotCover against each other - why don't we make them compliment each other? Apps that are placed at the edge of the screen and/or using AutoHide should use STRUTS, and those that are in the middle of the screen should use DoNotCover.

Now there is another issue with DoNotCover hint. Thing is that DoNotCover is somewhat implied for window types of _NET_WM_WINDOW_TYPE_DOCK
_NET_WM_WINDOW_TYPE_TOOLBAR

Therefore it is proposed that instead of adding new _NET_WM_STATE atom - we should elaborate more on behaviour of this two types. Adding something like that to the _NET_WM_WINDOW_TYPE section:



NET_WM_WINDOW_TYPE_DOCK,_NET_WM_WINDOW_TYPE_TOOLBAR both imply that Window manager should use Do Not Cover policy for this windows: 1) avoid placing other windows in area occupied by windows with this types. 2) whenever window of this type moves or changes its size - other windows should be moved/resized to avoid occupying new area of the window. 3) if _NET_WM_STRUT or _NET_WM_STRUT_PARTIAL is set on the window of one of this types - it takes precedence, and Do Not Cover policy will be applied to the area specifyed by struts, instead of the whole area of the window.



Sasha Vasko









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