Quoth Carlos R. Mafra,
I guess that people using xinerama might be annoyed if the panel on one screen makes the corresponding space on the other screen unusable too.
I believe that each head has its own reserved space. If the panel is in one head it shouldn't take up space on another head.
Having proper _NET_WM_STRUT_PARTIAL could be actually very cool if wmaker's dock used it in order to tell windows which space it actually occupies.
The dock has its own code path and its own preference to toggle whether or not it can be covered. Both aspects could be handled with struts, I suppose.
Right now I have a dock which does not occupy the whole right edge of the screen. And yet, if I horizontally maximize a window placed in a vertical position level where there is no more dock icons (ie the space bellow the bottom dockapp) it does not completely maximize horizontally.
For the same reason that I labelled my patch as "partial" support. Right now each head has its own usable area which is just a rectangle. Windows can place or maximise within that area. When a window declares a strut the area is shrunk so that it no longer intersects the strut. That's guaranteed to work because the struts must be placed along edges. It's also good enough most of the time. In your example it may look "wrong" that the horizontally maximised window doesn't extend to the edge of the screen but you'll be grateful that it doesn't if you add more icons to your dock. And my XFCE panel can also grow to accommodate more widgets. Still it could be worth doing for the benefit of people with large screens and small docks.
Have you thought about how much more work would be required to make wmaker respect the full partial strut specification?
I did think about it while working on the struts. To support them, and handle your partially-populated dock, we'd need to change how the reserved space works. Rather than have one placeable rectangle we'd have to find the best area which avoids all struts on the head. Perhaps we can borrow some logic from one of the window managers which already supports them. When maximising we'd have to check if the chosen size intersects a strut and shrink it if so. Somewhat like how Maximusize picks the biggest area it can find and shrinks it until it no longer conflicts with other windows. -- To unsubscribe, send mail to [email protected].
