[openbox] Two x displays (not xinerama) support

Andrew Gallant jamslam at gmail.com
Tue Aug 9 13:31:23 EDT 2011


On Tue, Aug 9, 2011 at 12:53 PM, Brian Mattern <rephorm at rephorm.com> wrote:
> On Mon, 08 Aug 2011, Andrew Gallant wrote:
>
>> After failing to build my own window manager (using Python), I am
>> currently modifying Openbox to support the original idea in this
>> thread: changing desktops on a per monitor basis. I've been wanting
>> this feature for so long, and since I added a third monitor to my
>> setup, I've found it to be nearly essential. It's going to be a bit
>> more than a post-move hook :-)
>>
>> As Mikael mentioned, this violates the EWMH spec and is essentially
>> incompatible with all existing pagers. (I need to make one of those
>> too.) I'm adding a new property called _NET_VISIBLE_DESKTOPS that
>> should provide all the information an outside application (like a
>> pager) needs. (Maybe I'll submit it to the EWMH people, but they
>> haven't updated the spec in a long time...) The _NET_CURRENT_DESKTOP
>> property is still relevant, I think.
>>
>> Ideally, this should only change behavior on multi-head setups using
>> Xinerama. Hopefully I'll make a public branch of Openbox available
>> soon; I plan on keeping it up to date with Dana's master branch.
>>
>> The only window managers I know of that exhibit this feature are
>> Xmonad and i3; except the latter ties each desktop to a specific
>> monitor that can't be used on other monitors. That is, only Xmonad
>> gets this right in my opinion.
>
>
> Enlightenment DR17 (www.enlightenment.org) implements
> monitor-independent desktops as well.

Ah, I didn't know about that one. Thanks for the info, I'll check it
out, but I'll definitely stick to modifying Openbox to get this
behavior.

> I once (as proof of concept)
> forcibly implemented this type of behavior in compiz's wall desktop
> switcher as well.  Unfortunately, I got too lazy to also go "fix" all
> the other pager / switcher plugins in compiz, resulting in a thoroughly
> broken desktop. (Then openbox cured me of compiz.)

Yeah, I think that _NET_VISIBLE_DESKTOPS is enough info for a pager to
do its work. But it's a pretty fundamental change. Here is what I
think my pager will do when I make it:

- Show one rectangle for each desktop, but instead of making them
correspond to the width of _NET_DESKTOP_GEOMETRY (or _NET_WORKAREA),
make them correspond to the width of a single head. (I think a
sacrifice will need to be made when there are multiple heads with
different resolutions. That is, use ratios instead.)

- Group or signal which desktops are visible.

> I think that this feature is extremely useful, and would love to see it
> added to openbox. It would be nice if
> there were a standard way of implementing it so that external pagers
> could get on board.

Absolutely. I'll see what I can do about submitting this to EWMH once
the dust has cleared. Right now I'm using a simple (and
non-interactive) text-based pager that I built for use with Xmonad.

I've found that I can get by without this feature on dual monitors,
but that it is absolutely essential (for me) with three monitors. It
makes things work so much smoother.

Kudos to the Openbox dev team by the way, after only a few days of
hacking I've made some really great progress. The code is really
well-written/designed.

> (Although the topology of the "virtual desktop"
> changes quite a bit compared to traditional xinerama, so some pagers may
> simply not be compatible.)

I'm not sure what you mean here. I think all pagers will be rendered
useless with this kind of change?

- Andrew


More information about the openbox mailing list