[Xmonad] A plan for the floating layer

Jason Creighton jcreigh at gmail.com
Thu May 31 19:59:05 EDT 2007


On Thu, May 31, 2007 at 07:17:09PM +1000, Donald Bruce Stewart wrote:
> The current floating layer code handles the interface to the outside
> world quite nicely, but interacts strangely with fullscreen mode.
> The problems stem from the fact that windows are lifted into the
> floating layer by setting a bit flag, basically. They are then rendered
> separately if this flag is set. 
> 
> This is good, but means that floating windows keep an implicit position 
> in the tiled ordering -- although they don't physically appear to be in
> the tiled layer. 
> 
> This leads to some oddities:
>     * moving a floating window in fullscreen tiled mode, will shift
>       focus of the tiled layer to the window after the implicit position
>       of the floating mode.
>     * mod-shift-j reorders the implicit position of a floating window
>         in the tiled layer, but this change isn't visible
>
> I think the best way to solve this is to move from an 'implicit'
> floating layer, denoted by flag bits, to an explicit floating layer on
> each workspace:

I agree. I can imagine workarounds for some of those problems, but not
for the most glaring issue, which is that floating breaks layouts which
depend upon focus.

>     data Workspace i a = Workspace  { tag :: !i
>                                     , tiled :: Stack a
>                                     , float :: Stack a }

With that, you know which window has the focus in each layer, but how
would you know which layer has focus? Also, you need to store the
RationalRect with their x/y/w/h information somewhere. Are you thinking
of retaining the "floating" map? Or float :: Stack (a, RationalRect)?

Jason Creighton


More information about the Xmonad mailing list