Re: struts, workareas and xinerama



Hello,

On Thu, Jan 24, 2008 at 07:19:10PM +0100, Lubos Lunak wrote:
> On Wednesday 13 of June 2007, Dana Jansens wrote:
> > Secondly, I am in need of some clarification in terms of struts with
> > Xinerama. In the above example, say an application set a strut on the
> > "right side" with a length of the 1st monitor.  Where exactly does
> > this strut reside? It could reside entirely on the first monitor, it
> > could reside on the second monitor (and the nowhereland above it) or
> > it could be split between the two monitors.
> >
> > I expect there is no answer to this question, which is frustrating
> > because this is a real-life setup that one of my users has talked
> > about recently.  Perhaps _NET_WM_STRUT_PARTIAL is just not enough, and
> > needs to be able to specify the monitor as well as start/length.
> 
>  Correct. The strut hints talk about desktop (root window) edges, so they 
> don't support reserved areas "inside". That basically matches _NET_WORKAREA, 
> so if you want to extend one, you probably want to do the same with the other 
> one.

I encountered this issue as well and I got an idea for a simple workaround.
Imagine a screen layout like this:

    11111111
    11111111
    11111111
     222222    <--- strut here
     222222
     222222

We want to place a panel at the top of screen 2. A naive panel application may
set a partial strut where top = top coordinate of screen 2 + height of panel.
This is wrong, as it indicates that the entire screen 1* is covered, *but* the
interpretation may as well be different. If we agree that struts covering an
entire xinerama screen are nonsense, we may interpret such struts as not
covering those screens at all, just those that they don't cover entirely. This
way _NET_WM_STRUT_PARTIAL can be used for struts covering any edge of any
Xinerama screen.

* I know, not really entire screen. Just a horizontal strut whose height is
  greater than the height of screen 1. Please read "entire" as "entire in
  their primary dimension".

This naive way of setting _NET_WM_STRUT_PARTIAL is used in xmobar and I have
implemented this semantics for xmonad:
http://www.haskell.org/pipermail/xmonad/2009-November/009148.html

I can't think of any use for struts that span multiple screens in their primary
dimension (height for horiz. struts, width for vert. struts), personally.
If wm-spec is extended in the way Dana and Lubos said (which didn't happen yet
even though it's been almost 2 years already), I'll be happy to implement it,
but this "hack" seemed easier and compatible with what was in the wild.

What's your opinion?

Regards,
-- 
Tomáš Janoušek, a.k.a. Liskni_si, http://work.lisk.in/



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