[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