On Sun, Jun 12, 2016 at 5:02 PM, Adam Sjøgren <asjo@koldfront.dk> wrote:
The documentation is confusing to me - some places '|||' is used to
combine things, other places it isn't.

||| separates layouts. Layouts are complete in and of themselves.

Other things are layout modifiers. As the name suggests, they modify other layouts; the layout to be modified is a parameter, and there may be other parameters which may also be workspaces.

Maybe this will be clearer:

    Full -- this is a layout, it can stand by itself or be modified
    smartBorders Full -- this is a layout modifier applied to a layout
    smartBorders -- this is an error, because it is not applied to a layout. "It is a purple." -- a purple *what*?
    smartBorders ||| Full -- this is an error because you are saying "either use smartBorders or use Full". But smartBorders is not a layout

       , layoutHook = avoidStruts $ layoutHook defaultConfig ||| modWorkspace "3" stoppable (layoutHook defaultConfig)

which doesn't seem to work, as the browser running on workspace 3 (mod-3
takes me there), keeps using 5-8% CPU according to top when another
workspace is active.

I hate their example because it is not clear that it has all the layouts in defaultConfig twice and only the second list has the stop behavior. You need to mod-space 3 times to get to a stoppable layout.

If you want stoppable to always be active on workspace 3:

    layoutHook = avoidStruts $ modWorkspace "3" stoppable $ layoutHook defaultConfig

(I find it interesting that you were able to figure out that modWorkspace applies only to layout modifiers as opposed to layouts, but you couldn't recognize that (|||) only works with layouts, not layout modifiers.)

--
brandon s allbery kf8nh                               sine nomine associates
allbery.b@gmail.com                                  ballbery@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net