[xmonad] "minimize" + "boringAuto" in Full-layout: focusUp and focusDown don't change focus

Adam Vogt vogt.adam at gmail.com
Sat Dec 19 17:53:43 EST 2009

* On Saturday, December 19 2009, Ralph Hofmann wrote:

>Am Samstag, den 19.12.2009, 10:59 -0500 schrieb Adam Vogt:
> ...
>> In the case of Full, boringAuto is doing exactly as it is supposed to
>> do. I'm not sure that adding a special case to it makes sense to address
>> this situation; that would be more surprising behavior; lets say you
>> minimize all windows except one, should boringAuto now let you focus
>> between windows?
>If all windows except one are minimized, "my" boringAuto would behave
>exactly like the built in: it would skip the minimized windows and show
>only the one not minimized.
>It's probably hard to define which behavour is expected and which is
>surprising, but I think a generel rule could be: the Full-mode should
>follow the same logic of focusing as the tiled mode; unless there is a
>strong reason against it. Is there any reason like that?
>So in my understanding not "my" boringAuto is the "special case", but
>the built in.

Oh, now I understand that you want a distinction made between
non-visible windows, and windows that are minimized. The boringAuto
modifier doesn't catch this because Full lays out the windows such that
all of them will be recognized as boring by boringAuto, before the
minimizing modifier has a chance to remove them.

main> pureLayout Full (Rectangle 0 0 0 0) (W.Stack 0 [1,2,3] [4,5,6])
[(0,Rectangle {rect_x = 0, rect_y = 0, rect_width = 0, rect_height = 0})]

Compare with what XMonad.Layout.Simplest.Simplest which differs from
full only in that it won't signal to boringAuto that all unfocused
windows are boring:

main> pureLayout Simplest (Rectangle 0 0 0 0) (W.Stack 0 [1] [2])
[(1, Rectangle{rect_x = 0, rect_y = 0, rect_width = 0, rect_height = 0}),
 (0, Rectangle{rect_x = 0, rect_y = 0, rect_width = 0, rect_height = 0}),
 (2, Rectangle{rect_x = 0, rect_y = 0, rect_width = 0, rect_height = 0})]

> ...
>Thank you for showing me alternatives. I will have to review some
>haskell tutorial before going on;-)

You could just copy-paste that code anywhere in your config after the
imports and use the fu and fd actions as if they were defined in some
extension module. But on further reading, I think that using Simplest
instead of Full is closer to what you ask than that code (which
basically disregards minimized windows when using Full).


More information about the xmonad mailing list