Re: _NET_WORKAREA and dual head

On Fri, 2004-03-12 at 10:59 -0600, Billy Biggs wrote:

>   Just looking around at the dual head setups here, people seem to like
> panels on the inner edges of the monitors since it's quick to access
> from both displays.

Really?  I've never seen anybody do this.  This setup is not
well-supported right now because of the way the struts work.

>  You can determine this simply using the XINERAMA information and the
> strut rectangles.

Actually, you can't.  The way the specification is defined the struts
are specified in root window coordinates, and are not limited to an
xinerama.  If you have two monitors at 800x600 and you have a strut on
the right edge of the left monitor, you would end up specifying a strut
of something like 850, which corresponds to a very large panel taking up
all of the right monitor and 50 pixels of the left monitor.  There is no
way to distinguish this situation from the case of a panel that is
simply on an internal edge.  The other option would be to set a strut of
50, and hope that the window manager will notice which monitor the
strut-setting client is on.  But note that the strut does _not_ have to
correspond to the actual position of the client window.  The client
window could, for example, have some sort of override redirect
thingamabob that the window manager doesn't know about docked to an edge
of the screen, and setting a strut would still work.  So if you have a
panel on the right edge of the left monitor, and you set a right strut
of 50, then you will end up with a strut of 50 on the right edge of the
right monitor.

As current written, the specification does not allow internal struts
with anything like reasonable semantics.

We have the _STRUT_PARTIAL property that have sufficient flexibility to
enable full-fledged struts on non-internal xinerama edges, though it
requires a fair bit of algorithmic sophistication to implement this in
the window manager and is a bit of a pain to do correctly for a client
as well.  At the time, however, we didn't deem internal edge struts
sufficiently important.


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