Xmonad/Notable changes since 0.8
This page is for keeping a record of significant changes in darcs xmonad and xmonad-contrib since the 0.8 release. See 'darcs changes' for more details about miscellaneous feature improvements, or documentation and bug fixes not noted here.
(0.8.1 was a maintenance release, with no changes to user functionality. It simply includes 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.
Changes to the xmonad core
- Spawned processes are now handled by xmonad. Using 'exec xmonad' in startup files now "does the right thing."
- New --restart command line flag to restart a running xmonad process.
- Focus changes across screens with mouse, even for empty workspaces.
- XMonad now exports (.|.), no need to import Data.Bits.
- StackSet exports focusUp', focusDown' for Stack in addition to focusUp/Down StackSet versions.
handleEventHook:: Event -> X Allfield supporting custom event hooks. The function should return (All True) to have the default handler run afterward. (See Graphics.X11.Xlib.Extras Event, Core.hs, Main.hs)
- X is now typeable. (Enables Language.Haskell.Interpreter, i.e.
hintintegration, see xmonad-eval project below.)
Changes to xmonad-contrib
Modules formerly using Hooks.EventHook now use Event from core. Note: EwmhDesktops users must change configuration by adding a handleEventHook to XConfig.
- Actions.CycleWS now includes HiddenWS type.
- Actions.Submap now supports a default action, enabling looping to, e.g., set volume, or use an explicit 'exit submap' key.
- Actions.Plane has a planeKeys function to automatically set up default workspace navigation.
- Actions.Search has more searches.
- Actions.WindowBringer now works with external programs other than dmenu, such as nafai's gtkmenu
- Actions.CopyWindow has new runOrCopy
- Actions.WindowGo has raiseMaster variant of runOrRaiseMaster
- Hooks.EwmhDesktops requires new handleEventHook = ewmhDesktopsEventHook, added to defaultConfig.
- Hooks.DynamicLog module has a new 'statusBar' function to simplify status bar configuration. Similar 'dzen' and 'xmobar' quick bar functions have changed type to allow better compositionality.The 'dynamicLogDzen' and 'dynamicLogXmobar' have been removed. Format stripping functions for xmobar and dzen have been added to allow independent formatting for ppHidden and ppUrgent.
- Hooks.UrgencyHook now can be configured with reminders at intervals, and urgency can be cleared with a keybinding even without "visiting" the urgent window.
- Layout.Grid has configurable aspect ratio.
- Layout.Master is now a layout modifier rather than layout; backward compatible with old Master.
- Util.EZConfig includes <Print>, and on systems with X11 that supports them, multimedia keys.
- Util.Scratchpad has general spawn action allowing user to specify how to set resource to "scratchpad", allows use of gnome-terminal, etc. as scratchpads. Also new NamedScratchpad module now allows multiple summon/banishable applications.
- Util.WindowProperties has general getProp32* helpers and doc improvements
- Util.XSelection has new functions to allow transforming the selection before acting on it.
- Config.Kde has optional KDE 4 specific settings.
- XMonad.Prompt has more tab completion settings, configurable history filter, several bug fixes.
New contrib modules
- Actions.GridSelect -- Graphically go to, select, do things with windows. With additional colourizers and documentation.
- Actions.SpawnOn -- Binding actions, hook, and prompts to spawn on given or current workspace.
- Actions.WithAll -- apply functions to all windows on a workspace.
- Actions.CycleWindows -- cycle recent windows, cycle custom window order, focus nth window, change focused or unfocused window order. Esp. useful with layouts that hide some windows.
- Layout.CenteredMaster -- Sort of a combination of Master's mastered modifier with Magnifier, adding a master frame above tiled windows that is centered or at the top right of the screen.
- Layout.Cross -- Similar to Circle, but with a resizable center pane. Limits visible windows to five. Cycles the focused window into the main window keeping visible two above and two below in stack order.
- Layout.FixedColumn -- Neat variation on Tall, using window hints to decide master width, e.g. have your terminal automatically be 80 columns wide in the master.
- Layout.GridVariants -- More customizable Grid, and very fine SplitGrid, see xm-contrib documentation (once 0.9 is released)
- Layout.IndependentScreens -- Utilities to simulate dwm's screen model, where each physical screen has its own set of the defined workspaces.
- Layout.Monitor -- Many useful functions for gkrellm, clock, widget type windows
- Layout.TabbedModifier -- (not yet applied see darcswatch for patch) Experimental layout modifier to tab windows within frames (panes) of an "outer" layout.
- Layout.ThreeColumnsMiddle -- Master in center three column layout
- Layout.Mosaic -- Very versatile, easy to configure, fun layout that can yield anything from Full to TwoPane to Spiral to Grid. It sizes panes based on the relative sizes of a list of numbers. The number of visible windows is limited to the number of list elements.
- Util.Paste -- For pasting strings to windows.
- Util.NamedScratchpad allows multiple summon/banishable application windows each with its own float configuration.
- Config.PlainConfig is now a separate project, shepheb's xmonad-light.
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.
For users of >=ghc-6.10, the hlint package parses haskell source and offers suggestions on how to improve it.