Several new modules (patch flood)

Hello XMonad, I apologize for the bulk delivery, these are all things I wrote over the last week and I didn't really want to stop coding to send updates (or eat, or sleep, for that matter --). The basic idea was to implement the layout used in wmii. For those not familiar with it: - Windows grouped in resizable columns - Each column has its own sub-layout, either full, vertical or "stacked decoration" - You can of course move windows between columns, create new columns, etc. This gave rise to a number of modules, which the rest of this mail describes. To get a quick idea, you can also look at the few screenshots I put up: http://ceii.posterous.com/new-xmonad-layout. #1: XMonad.Layout.Groups A generic version of the wmii thing: windows arranged into groups, each with its own sub-layout. You provide both the (starting) layout for new groups, and the layout that arranges the groups themselves on the screen. Tis doesn't fit XMonad's layout interface that well, and indeed I ended up having to completely decouple the layout's idea of window ordering from XMonad's. For this reason, the usual swapUp/Down and focusUp/Down don't work here; the Groups module provides messages that can be used instead, and see #2 for a more flexible interface. #2: XMonad.Layout.Groups.Examples You can do a lot of fun things with the Groups combinator, so I put a few examples in a dedicated module. It also contains many useful X actions for Groups layouts, including focusUp/Down, swapUp/Down, etc. actions that work both for them and for standard layouts (using X.A.MessageFeedback). There are three example layouts: - The wmii layout, pretty faithfully cloned with the exception that I was too lazy to write a stacked layout and used tabs instead. The columns are managed by a ZoomRow (#3), so they can be individually resized and/or maximized. - A "row of columns" layout, with both rows and columns using ZoomRows. - A "tiled tabs" layout that arranges windows into tabbed groups, and the groups themselves according to XMonad's default algorithm (Tall ||| Mirror Tall ||| Full) #3: XMonad.Layout.ZoomRow A layout that arranges its windows into a horizontal row, and allows to freely resize each of them using ZoomMessages. #4: XMonad.Layout.Renamed A LayoutModifier and DSL for modifying the description of a layout. This is for when you want to modify a layout with a dynamic description, and using Named would freeze it. #5: XMonad.Util.Stack I ended up doing quite a bit of non-trivial (Maybe Stack) manipulation, so I wrote a separate module for that. It provides maps, folds, filters and the like, as well as the whole focusUp/Down-swapUp/Down-insertUp/Down suite with consistent types. I've been using these for a few pretty active days now but they are by no means fully tested, feedback is welcome.

I just discovered Adam Vogt's XMonad.Layout.SubLayouts module, which
seems to do pretty much exactly the same thing as my
XMonad.Layout.Groups module. I _did_ spend several dozen minutes
looking through the xmonad-comtrib modules to see if no-one had
implemented this before, but I missed it (of course, there's no way a
mere hour could be enough to find a module in xmonad-contrib >>). Big
"doh" moment.
Anyway, I'm planning on taking a serious look at SubLayouts, seeing in
what ways it differs from my own module, and posting an update once
I've figured things out; these two modules are definitely too similar
for one not to absorb the other.
If Adam has comments to make about this, I'm also all ears.
For now, my patches can definitely be merged, but X.L.Groups should be
considered an unstable interface. The rest won't change even if I move
to X.L.SubLayouts (well, except that X.L.Groups.Examples might get a
name change).
Q. Moser
On Sun, Jan 17, 2010 at 3:20 AM, Don Stewart
Well done!!
moserq:
Hello XMonad,
I apologize for the bulk delivery, these are all things I wrote over the last week and I didn't really want to stop coding to send updates (or eat, or sleep, for that matter --).

I had been trying something similar, here's the config I've been using
for a while that combines tiled and tabbed layouts. I haven't split
this out into a separate file, so it's unfortunately mixed up with my
other customizations :-/
More details (and crude ASCII graphics) are in the file.
-Klaus
On Tue, Jan 19, 2010 at 9:45 AM, Quentin Moser
I just discovered Adam Vogt's XMonad.Layout.SubLayouts module, which seems to do pretty much exactly the same thing as my XMonad.Layout.Groups module. I _did_ spend several dozen minutes looking through the xmonad-comtrib modules to see if no-one had implemented this before, but I missed it (of course, there's no way a mere hour could be enough to find a module in xmonad-contrib >>). Big "doh" moment.
Anyway, I'm planning on taking a serious look at SubLayouts, seeing in what ways it differs from my own module, and posting an update once I've figured things out; these two modules are definitely too similar for one not to absorb the other.
If Adam has comments to make about this, I'm also all ears.
For now, my patches can definitely be merged, but X.L.Groups should be considered an unstable interface. The rest won't change even if I move to X.L.SubLayouts (well, except that X.L.Groups.Examples might get a name change).
Q. Moser
On Sun, Jan 17, 2010 at 3:20 AM, Don Stewart
wrote: Well done!!
moserq:
Hello XMonad,
I apologize for the bulk delivery, these are all things I wrote over the last week and I didn't really want to stop coding to send updates (or eat, or sleep, for that matter --).
_______________________________________________ xmonad mailing list xmonad@haskell.org http://www.haskell.org/mailman/listinfo/xmonad

This 10-patches bundle was just applied to http://code.haskell.org/XMonadContrib:
20100117002104 quentin.moser@unifr.ch
* New module: X.U.Stack
Utility functions for working with Maybe Stacks, including:
- useful conversions to and from lists
- insertUp/Down, swapUp/Down, focusUp/Down, etc
- maps, filters and folds
20100117002612 quentin.moser@unifr.ch
* New module: X.L.Renamed
20100117003939 quentin.moser@unifr.ch
* New module: X.L.ZoomRow
Row layout with individually resizable elements.
20100117002104 quentin.moser@unifr.ch
* New module: X.U.Stack
Utility functions for working with Maybe Stacks, including:
- useful conversions to and from lists
- insertUp/Down, swapUp/Down, focusUp/Down, etc
- maps, filters and folds
20100117005301 quentin.moser@unifr.ch
* New module: X.L.Groups
The mother of all layout combinators.
20091107173820 Spencer Janssen

* On Tuesday, March 30 2010, darcswatch@nomeata.de wrote: >This 10-patches bundle was just applied to http://code.haskell.org/XMonadContrib: > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >20091107173820 Spencer Janssen> * Add XMonad.Util.SpawnOnce >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ... >-- >This message was brought to you by DarcsWatch >http://darcswatch.nomeata.de/repo_http:__code.haskell.org_XMonadContrib.html#bundle-1a018ba57c685c3e70127dd591b0c87809e6dc01 I'm confused as to how this patch is listed here. It also seems to have had an empty diff too. -- Adam

X.L.Named already provides some of the functionality in X.L.Renamed, but Renamed has a lot more. Might it be a good idea to change the implementation of Named to use Renamed and deprecate Named? We can still keep it around so we don't break configs. On Tue, Mar 30, 2010 at 20:12, Adam Vogtwrote: > * On Tuesday, March 30 2010, darcswatch@nomeata.de wrote: > >>This 10-patches bundle was just applied to http://code.haskell.org/XMonadContrib: >> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>20091107173820 Spencer Janssen >> * Add XMonad.Util.SpawnOnce >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > ... >>-- >>This message was brought to you by DarcsWatch >>http://darcswatch.nomeata.de/repo_http:__code.haskell.org_XMonadContrib.html#bundle-1a018ba57c685c3e70127dd591b0c87809e6dc01 > > I'm confused as to how this patch is listed here. It also seems to have > had an empty diff too. > > -- > Adam > _______________________________________________ > xmonad mailing list > xmonad@haskell.org > http://www.haskell.org/mailman/listinfo/xmonad >

* On Tuesday, March 30 2010, Anders Engström wrote:
X.L.Named already provides some of the functionality in X.L.Renamed, but Renamed has a lot more. Might it be a good idea to change the implementation of Named to use Renamed and deprecate Named? We can still keep it around so we don't break configs.
Sounds reasonable. You could supply a patch for this? These sorts of cleanups may eventually be handled with XMonadConfigUpdater. Hopefully the couple remaining features will be ready before the next release of xmonad: http://www.haskell.org/pipermail/xmonad/2010-March/009948.html -- Adam
participants (6)
-
Adam Vogt
-
Anders Engström
-
darcswatch@nomeata.de
-
Don Stewart
-
Klaus Weidner
-
Quentin Moser