Personal tools

Xmonad/Notable changes since 0.11

From HaskellWiki

Jump to: navigation, search

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 darcs changes 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


1 non-breaking changes

1.1 data-default

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

1.1.1 core setlocale

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

#240, #572, #135

1.2 Contrib

New modules:


2 breaking changes

2.1 updatePointer

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)

2.2 getArgs must be called from main

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 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
      -- ...

2.3 ManageDocks changes

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 manageEventHook; this used to be optional (and in practice only needed with the KDE4+ Plasma dock and xfce4-panel), but is now mandatory.

2.3.1 *URGENT* Bug in 0.12 ManageDocks

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.