[Haskell] Haskell | Recent changes | Edit this page | Page history

Printable version | Disclaimers

Not logged in
Log in | Help
 

Xmonad/Notable changes since 0.8

From HaskellWiki

< Xmonad

This page is for keeping a record of significant changes in darcs xmonad and xmonad-contrib since the 0.8.* releases. See 'darcs changes' for more details about miscellaneous feature enhancements, and documentation and bug fixes not noted here.

(0.8.1 was a maintenance release, with no changes to user functionality. It simply included ghc-6.10.1 related updates and a ghc optimization bug workaround for 64-bit users building xmonad-contrib on ghc-6.10.1.)

The idea is to put here a list of things which a user upgrading from 0.8 to 0.9 might like to know, so that they are sure to be included in the 0.9 release notes.

Contents


1 Updates that require changes in xmonad.hs

Modules formerly using Hooks.EventHook now use Event from core.

1.1 EwmhDesktops

Note: EwmhDesktops users must change configuration by removing the obsolete ewmhDesktopsLayout from layoutHook, (it no longer exists), and updating to the current ewmh support which includes a startupHook and handleEventHook. (No need to change config if using ewmh via Config.Desktop, Config.Gnome, etc. Your config will automatically be updated to use current ewmh support so long as your config does not completely replace startupHook, logHook, or handleEventHook. See the change configuration link and Config.Desktop documentation for help merging your customizations with one of the desktop configs.)

See below for details of how to update an EwmhDesktops config.

1.2 DynamicLog

Most DynamicLog users can continue with configs unchanged, but users of the quickbar functions xmobar or dzen will need to change xmonad.hs: their types have changed to allow easier composition with other XConfig modifiers. The dynamicLogDzen and dynamicLogXmobar functions have been removed. For details, see the 0.9 DynamicLog docs.

1.3 WindowGo and safeSpawn

WindowGo or safeSpawn users may need to change command lines due to safeSpawn changes. For details, see Util.Run, and Actions.WindowGo docs.

1.4 Optional changes

People who explicitly use swapMaster in key or mouse bindings should change it to shiftMaster. It's the current default used where swapMaster had been used previously. It works better than swapMaster when using floating and tiled windows together on the same workspace.

People explicitly referencing the "SP" scratchpad workspace in xmonad.hs should change it to the currently used id "NSP" which is also used by the new Util.NamedScratchpad

2 Changes to the xmonad core

3 Changes to xmonad-contrib

3.1 Updated modules

3.1.1 Actions

3.1.2 Config

3.1.3 Hooks

Your config will be automatically upgraded if you're using EWMH via Config.Desktop, Config.Gnome, etc. but people using defaultConfig with explicit EwmhDesktops hooks and the ewmhDesktopsLayout modifier should update their configs as described below.

3.1.4 Layout

3.1.5 Prompt

3.1.6 Util

3.1.7 etc

3.2 New contrib modules

3.2.1 Actions

3.2.2 Hooks

3.2.3 Layout

3.2.4 Util

3.3 Deleted modules

4 Related Projects

xmonad-light allows using a limited version of xmonad without having to have ghc installed. It provides a special syntax to customize a few common options using xmonad.conf instead of xmonad.hs.

xmonad-extras includes some modules with additional dependencies, like a Volume control, an MPD prompt and the xmonad-eval package that uses the hint interpreter to manipulate xmonad state during runtime via arbitrary haskell expressions ala emacs eval.

Bluetile is a tiling window manager based on xmonad which focuses on making the tiling paradigm easily accessible to users coming from traditional window managers by drawing on known conventions and providing both mouse and keyboard access for all features. It also tries to maximize usability 'out of the box', and provides minimal customization. (Aside from its dock, bluetile features are now provided by xmonad-contrib (darcs) extensions, so users wanting custom bluetile-like configs can create them using xmonad.)

dzen-utils provides combinators for creating and processing dzen2 input strings.

hlint parses haskell source and offers suggestions on how to improve it. (Requires >=ghc-6.10)

xmonad log applet allows displaying xmonad logHook output in gnome-panel via dbus.

5 EwmhDesktops 0.9 config updates

Users of defaultConfig that explicitly include EwmhDesktops hooks and the ewmhDesktopsLayout modifier should remove the old layout modifier, then choose one of the following upgrade methods:

darcs xmonad users who already have ewmh log and event hooks will likely choose 2) which will only require them to add ewmhDesktopsStartup to the existing config.

1) To combine your custom non-ewmh hooks with all the current ewmh defaults:

Remove any of the ewmh hooks or modifiers currently in your config*, and instead use the new ewmh function which adds EWMH support to defaultConfig all at once. You should keep avoidStruts and manageDocks if you're using them. If you are using a different WM Name for java, setWMName needs to over-ride part but not all of the ewmh startupHook; use method 2) below.)
* Remove ewmhDesktopsLayout, ewmhDesktopsLogHook, and if you have it, ewmhHandleEventHook, or use method 2 instead.
        import XMonad
        import XMonad.Hooks.EwmhDesktops
 
        main = xmonad $ ewmh defaultConfig {
                -- non-ewmh customizations
                }

2) To override these hooks, customize them or explicitly define them yourself:

Use something like the following example. It overrides logHook completely to use a custom hook that filters the workspaces, and explicitly adds the EwmhDesktops handleEventHook and startupHook, over-riding the default WM name. For more information about modifying these fields see the Hooks.EwmhDesktops and Config.Desktop documentation.
        import XMonad
        import XMonad.Hooks.EwmhDesktops
        
        -- imports needed for this example, but normally not needed
        import Data.Monoid (mappend)
        import XMonad.Actions.SetWMName
        import XMonad.Hooks.FadeInactive
 
        main = xmonad $ defaultConfig {
                  startupHook = ewmhDesktopsStartup >> setWMName "LG3D"
 
                , logHook = ewmhDesktopsLogHookCustom scratchpadFilterOutWorkspace
                -- This completely replaces the config logHook.
                --
                -- Use '>>'  or 'do' to run an ewmh logHook /plus/ your own
                -- chosen logHook(s). Same as for startupHook. For example:
                -- , logHook = logHook gnomeConfig >> fadeInactiveLogHook
 
                , handleEventHook = myCustomEventHook `mappend` ewmhDesktopsEventHook 
                -- handleEventHook combines with mappend or mconcat instead of '>>'       
                }

Retrieved from "http://haskell.org/haskellwiki/Xmonad/Notable_changes_since_0.8"

This page has been accessed 10,763 times. This page was last modified 22:35, 1 March 2010. Recent content is available under a simple permissive license.