Xmonad/Notable changes since 0.11

From HaskellWiki

This page is for keeping a record of significant changes in darcs xmonad and xmonad-contrib since the 0.11 releases (Jan 1, 2013). See git log in the source repositories for the patches and more details covering documentation and bug fixes not noted here.

xmonad-contrib 0.11.1 was a release to address a build falure with X11-1.6.1. 0.11.2 addresses a security where window titles sent on to XMonad.Hooks.DynamicLog could contain <action="command"></action> tags, which potentially are executed by xmobar or dzen. 0.11.3 addresses a build failure with ghc-7.8.2 . xmonad-contrib 0.11.4 and xmonad-core-0.11.1 address a build failure with ghc-7.10.1

non-breaking changes[edit]

data-default[edit]

Use of data-default allows using def where previously you had to write defaultConfig, defaultXPConfig defaultFoo.

core[edit]

setlocale[edit]

The setlocale package is now used instead of a binding shipped with xmonad proper. This allows using Main.hs instead of Main.hsc.

bugfixes[edit]

#240, #572, #135

Contrib[edit]

New modules:

 Layout.BinarySpacePartition
 Layout.Dwindle
 Layout.Stoppable
 Prompt.ConfirmPrompt
 Prompt.Pass
 Config.Prime
 more...

breaking changes[edit]

updatePointer[edit]

XMonad.Actions.UpdatePointer.updatePointer arguments were changed. This allows including aspects of both of the TowardsCentre and Relative methods. To keep the same behavior, replace the entry in the left column with the entry on the right:

< 0.12 >= 0.12
updatePointer Nearest updatePointer (0.5, 0.5) (1,1)
updatePointer (Relative x y) updatePointer (x,y) (1,1)
updatePointer (TowardsCentre x y) updatePointer (0.5,0.5) (x,y)

getArgs must be called from main[edit]

If you used the idiom of checking for a first time startup vs. restart of xmonad:

args <- getArgs
when (null args) $ do
  -- stuff to be run only on restart here

this must be changed, because getArgs no longer works from xmonad hooks. (See https://github.com/xmonad/xmonad/commit/307b82a53d519f5c86c009eb1a54044a616e4a5c for details.) You must move the args <- getArgs into main before the invocation of xmonad:

main = do
    -- maybe spawnPipe here
    args <- getArgs
    xmonad someConfig $ {
      -- ...
      startupHook = when (null args) $ do
        -- stuff to be run only on restart here
      -- ...
    }

ManageDocks changes[edit]

XMonad.Hooks.ManageDocks was changed to cache windows with struts, providing significant performance improvements when there are many windows (formerly it was calling XQueryTree() on every re-layout, and there is no way to filter this beyond querying only top level children). Users of ManageDocks must ensure that they have added docksEventHook to their handleEventHook; this used to be optional (and in practice only needed with the KDE4+ Plasma dock and xfce4-panel), but is now mandatory.

*URGENT* Bug in 0.12 ManageDocks[edit]

The above change in the 0.12 release has a bug which results in the first laid-out workspace not having any struts applied. The fix for this is to install the git version of xmonad-contrib. You will also need to add docksStartupHook to your startupHook.