[xmonad] The future of Decoartion

Andrea Rossato mailing_list at istitutocolli.org
Fri Feb 8 05:18:12 EST 2008


On Fri, Feb 08, 2008 at 09:24:57AM +0000, David Chanters wrote:
> How easy?  i've been wanting something like this for ages now.  i like
> the 'tiled' layout but hate the fact that when i close clients, or
> float them, that the rest of the tiled windows resize as a result.

I think this is a tricky issue, since you want the flexibility of a
tiling layout (a layout that will recalculate each window's size every
time the workspace must be refreshed), but, below a certain amount of
windows, the windows' geometry should be fixed.

If that is right (that is to say, if I get your problem correctly) you
could just do that, starting from something like Tall (in the xmonad
library, XMonad/Layout.hs): you check the number of windows in the
stack (you can check it against a parameter of your layout type, so it
can be configured by the layout user) and then you give to each window
its rectangle accordingly, applying a fixed structure for the first,
let's say 3, windows, and the tiling algorithm if the windows are
more.
 

> What i also note is the simplefloat layout modifier does this --
> i.e., i float clients and nothing else is recomputed in the tiled
> layout -- but i do not know how to take that component and add it
> for the tiled layout -- is there a transform for it? Empty pane or
> something?

SimpleFloat is doing that because there's the WindowArranger layer
right *above* the layout: the layout is going to give the window is
rectangle the first time. The WindowArranger will take that rectangle
and store it in its state component. After that, the WindowArranger
will ignore any rectangle produced by the underlying layout (because
it has the ArrangeAll bit - a Bool - set to True, otherwise it will
ignore the underlying layout only *after* the user changed the
window's geometry).

> i dont mind trying to write this extension, but i would need heavy
> pointers as to where to look.  :)

As I said, if my understanding of your problem is correct - and what I
proposed a viable solution - I would start from something like Tall,
or like Accordion (this one is in the contrib library).

I hope this helps.

Cheers,
Andrea


More information about the xmonad mailing list