Changelog for xmonad-contrib-0.14
Change Log / Release Notes
0.14
Breaking Changes
- 
XMonad.Layout.SpacingRewrite XMonad.Layout.Spacing. Borders are no longer uniform but composed of four sides each with its own border width. The screen and window borders are now separate and can be independently toggled on/off. The screen border examines the window/rectangle list resulting from 'runLayout' rather than the stack, which makes it compatible with layouts such as the builtinFull. The child layout will always be called with the screen border. If only a single window is displayed (andsmartBorderenabled), it will be expanded into the original layout rectangle. Windows that are displayed but not part of the stack, such as those created by 'XMonad.Layout.Decoration', will be shifted out of the way, but not scaled (not possible for windows created by XMonad). This isn't perfect, so you might want to disableSpacingon such layouts.
- 
XMonad.Util.SpawnOnce- Added spawnOnOnce,spawnNOnOnceandspawnAndDoOnce. These are useful in startup hooks to shift spawned windows to a specific workspace.
 
- Added 
- 
Adding handling of modifySpacing message in smartSpacing and smartSpacingWithEdge layout modifier 
- 
XMonad.Actions.GridSelect- Added field gs_bordercolortoGSConfigto specify border color.
 
- Added field 
- 
XMonad.Layout.MinimizeThough the interface it offers is quite similar, this module has been almost completely rewritten. The new XMonad.Actions.Minimizecontains several functions that allow interaction with minimization window state. If you are using this module, you must upgrade your configuration to importX.A.Minimizeand usemaximizeWindowandwithLastMinimizedinstead of sending messages toMinimizedlayout.XMonad.Hooks.RestoreMinimizedhas been completely deprecated, and its functions have no effect.
- 
XMonad.Prompt.Unicode- unicodePrompt :: String -> XPConfig -> X ()now additionally takes a filepath to the- UnicodeData.txtfile containing unicode data.
 
- 
XMonad.Actions.PhysicalScreensgetScreen,viewScreen,sendToScreen,onNextNeighbour,onPrevNeighbournow need a extra parameter of typeScreenComparator. This allow the user to specify how he want his screen to be ordered default value are:- def(same as verticalScreenOrderer) will keep previous behavior
- verticalScreenOrderer
- horizontalScreenOrderer
 One can build his custom ScreenOrderer using: - screenComparatorById(allow to order by Xinerama id)
- screenComparatorByRectangle(allow to order by screen coordonate)
- ScreenComparator(allow to mix ordering by screen coordonate and xinerama id)
 
- 
XMonad.Util.WorkspaceComparegetXineramaPhysicalWsComparenow need a extra argument of typeScreenComparatordefined inXMonad.Actions.PhysicalScreens(see changelog of this module for more information)
- 
XMonad.Hooks.EwmhDesktops- Simplify ewmhDesktopsLogHookCustom, and remove the gnome-panel specific remapping of all visible windows to the active workspace (#216).
- Handle workspace renames that might be occuring in the custom function that is provided to ewmhDesktopsLogHookCustom.
 
- 
XMonad.Hooks.DynamicLog- Support xmobar's <action> and <raw> tags; see xmobarActionandxmobarRaw.
 
- Support xmobar's <action> and <raw> tags; see 
- 
XMonad.Layout.NoBordersThe layout now maintains a list of windows that never have borders, and a list of windows that always have borders. Use BorderMessageto manage these lists and the accompanying event hook (borderEventHook) to remove destroyed windows from them. Also provides thehasBordermanage hook.Two new conditions have been added to Ambiguity:OnlyLayoutFloatandOnlyLayoutFloatBelow;OnlyFloatwas renamed toOnlyScreenFloat. See the documentation for more information.The type signature of hiddenswas changed to accept a newRectangleparameter representing the bounds of the parent layout, placed after theWindowSetparameter. Anyone defining a new instance ofSetsAmbiguouswill need to update their configuration. For example, replace "hiddens amb wset mst wrs =" either with "hiddens amb wset _ mst wrs =" or to make use of the new parameter with "hiddens amb wset lr mst wrs =".
- 
XMonad.Actions.MessageFeedback- Follow the naming conventions of XMonad.Operations. Functions returningX ()are named regularly (previously these ended in underscore) while those returningX Boolare suffixed with an uppercase 'B'.
- Provide all X BoolandSomeMessagevariations forsendMessageandsendMessageWithNoRefresh, not justsendMessageWithNoRefreshToCurrent(renamed fromsend).
- The new tryInOrderBandtryMessageBfunctions accept a parameter of typeSomeMessage -> X Bool, which means you are no longer constrained to the behavior of thesendMessageWithNoRefreshToCurrentdispatcher.
- The send*Messages*family of funtions allows for sequencing arbitrary sets of messages with minimal refresh. It makes little sense for these functions to support custom message dispatchers.
- Remain backwards compatible. Maintain deprecated aliases of all renamed
functions:
- send->- sendMessageWithNoRefreshToCurrentB
- sendSM->- sendSomeMessageWithNoRefreshToCurrentB
- sendSM_->- sendSomeMessageWithNoRefreshToCurrent
- tryInOrder->- tryInOrderWithNoRefreshToCurrentB
- tryInOrder_->- tryInOrderWithNoRefreshToCurrent
- tryMessage->- tryMessageWithNoRefreshToCurrentB
- tryMessage_->- tryMessageWithNoRefreshToCurrent
 
 
- Follow the naming conventions of 
New Modules
- 
XMonad.Layout.MultiToggle.TabBarDecorationProvides a simple transformer for use with XMonad.Layout.MultiToggleto dynamically toggleXMonad.Layout.TabBarDecoration.
- 
XMonad.Layout.StateFullProvides StateFull: a stateful form ofFullthat does not misbehave when floats are focused, and theFocusTrackinglayout transformer by means of whichStateFullis implemented.FocusTrackingsimply holds onto the last true focus it was given and continues to use it as the focus for the transformed layout until it sees another. It can be used to improve the behaviour of a child layout that has not been given the focused window.
- 
XMonad.Actions.SwapPromoteModule for tracking master window history per workspace, and associated functions for manipulating the stack using such history. 
- 
XMonad.Actions.CycleWorkspaceByScreenA new module that allows cycling through previously viewed workspaces in the order they were viewed most recently on the screen where cycling is taking place. Also provides the repeatableActionhelper function which can be used to build actions that can be repeated while a modifier key is held down.
- 
XMonad.Prompt.FuzzyMatchProvides a predicate fuzzyMatchthat is much more lenient in matching completions inXMonad.Promptthan the default prefix match. Also provides a functionfuzzySortthat allows sorting the fuzzy matches by "how well" they match.
- 
XMonad.Utils.SessionStartA new module that allows to query if this is the first time xmonad is started of the session, or a xmonad restart. Currently needs manual setting of the session start flag. This could be automated when this moves to the core repository. 
- 
XMonad.Layout.MultiDishesA new layout based on Dishes, however it accepts additional configuration to allow multiple windows within a single stack. 
- 
XMonad.Util.RectangleA new module for handling pixel rectangles. 
- 
XMonad.Layout.BinaryColumnA new module which provides a simple grid layout, halving the window sizes of each window after master. This is similar to Column, but splits the window in a way that maintains window sizes upon adding & removing windows as well as the option to specify a minimum window size. 
Bug Fixes and Minor Changes
- 
XMonad.Layout.GridFix as per issue #223; Grid will no longer calculate more columns than there are windows. 
- 
XMonad.Hooks.FadeWindowsAdded support for GHC version 8.4.x by adding a Semigroup instance for Monoids 
- 
XMonad.Hooks.WallpaperSetterAdded support for GHC version 8.4.x by adding a Semigroup instance for Monoids 
- 
XMonad.Hooks.MosaicAdded support for GHC version 8.4.x by adding a Semigroup instance for Monoids 
- 
XMonad.Actions.Navigation2DAdded sideNavigationand a parameterised variant, providing a navigation strategy with fewer quirks for tiled layouts using X.L.Spacing.
- 
XMonad.Layout.FullscreenThe fullscreen layouts will now not render any window that is totally obscured by fullscreen windows. 
- 
XMonad.Layout.GapsExtended the sendMessage interface with ModifyGapsto allow arbitrary modifications to theGapSpec.
- 
XMonad.Layout.GroupsAdded a new ModifyXmessage type that allows the modifying function to return values in theXmonad.
- 
XMonad.Actions.Navigation2DGeneralised (and hence deprecated) hybridNavigation to hybridOf. 
- 
XMonad.Layout.LayoutHintsPreserve the window order of the modified layout, except for the focused window that is placed on top. This fixes an issue where the border of the focused window in certain situations could be rendered below borders of unfocused windows. It also has a lower risk of interfering with the modified layout. 
- 
XMonad.Layout.MultiColumnsThe focused window is placed above the other windows if they would be made to overlap due to a layout modifier. (As long as it preserves the window order.) 
- 
XMonad.Actions.GridSelect- The vertical centring of text in each cell has been improved.
 
- 
XMonad.Actions.SpawnOn- Bind windows spawns by child processes of the original window to the same workspace as the original window.
 
- 
XMonad.Util.WindowProperties- Added the ability to test if a window has a tag from
XMonad.Actions.TagWindows
 
- Added the ability to test if a window has a tag from
- 
XMonad.Layout.Magnifier- Handle IncMasterNmessages.
 
- Handle 
- 
XMonad.Util.EZConfig- Can now parse Latin1 keys, to better accommodate users with non-US keyboards.
 
- 
XMonad.Actions.SubmapEstablish pointer grab to avoid freezing X, when button press occurs after submap key press. And terminate submap at button press in the same way, as we do for wrong key press. 
- 
XMonad.Hooks.SetWMNameAdd function getWMName.
- 
XMonad.Hooks.ManageHelpersMake type of ManageHook combinators more general. 
- 
XMonad.PromptExport insertString.
- 
XMonad.Prompt.Window- New function: windowMultiPromptfor usingmkXPromptWithModeswith window prompts.
 
- New function: 
- 
XMonad.Hooks.WorkspaceHistory- Now supports per screen history.
 
- 
XMonad.Layout.ComboP- New PartitionWinsmessage to re-partition all windows into the configured sub-layouts. Useful when window properties have changed and you want to re-sort windows into the appropriate sub-layout.
 
- New 
- 
XMonad.Actions.Minimize- Now has withFirstMinimizedandwithFirstMinimized'so you can perform actions with both the last and first minimized windows easily.
 
- Now has 
- 
XMonad.Config.Gnome- Update logout key combination (modm+shift+Q) to work with modern
 
- 
XMonad.Prompt.Pass- New function passTypePromptwhich usesxdotoolto type in a password from the store, bypassing the clipboard.
- Now handles password labels with spaces and special characters inside them.
 
- New function 
- 
XMonad.Prompt.Unicode- Persist unicode data cache across XMonad instances due to
ExtensibleStatenow used instead ofunsafePerformIO.
- typeUnicodePrompt :: String -> XPConfig -> X ()provided to insert the Unicode character via- xdotoolinstead of copying it to the paste buffer.
- mkUnicodePrompt :: String -> [String] -> String -> XPConfig -> X ()acts as a generic function to pass the selected Unicode character to any program.
 
- Persist unicode data cache across XMonad instances due to
- 
XMonad.Prompt.AppendFile- New function appendFilePrompt'which allows for transformation of the string passed by a user before writing to a file.
 
- New function 
- 
XMonad.Hooks.DynamicLog- Added a new function dzenWithFlagswhich allows specifying the arguments passed todzen2invocation. The behaviour of currentdzenfunction is unchanged.
 
- Added a new function 
- 
XMonad.Util.Dzen- Now provides functions fgColorandbgColorto specify foreground and background color,alignandslaveAlignto set text alignment, andlineCountto enable a second (slave) window that displays lines beyond the initial (title) one.
 
- Now provides functions 
- 
XMonad.Hooks.DynamicLog- Added optional ppVisibleNoWindowsto differentiate between empty and non-empty visible workspaces in pretty printing.
 
- Added optional 
- 
XMonad.Actions.DynamicWorkspaceOrder- Added updateNameandremoveNameto better control ordering when workspace names are changed or workspaces are removed.
 
- Added 
- 
XMonad.Config.Azerty- Added belgianConfigandbelgianKeysto support Belgian AZERTY keyboards, which are slightly different from the French ones in the top row.
 
- Added 
0.13 (February 10, 2017)
Breaking Changes
- 
The type of completionKey(ofXPConfigrecord) has been changed fromKeySymto(KeyMask, KeySym). The default value for this is still bound to theTabkey.
- 
New constructor CenteredAt Rational Rationaladded forXMonad.Prompt.XPPosition.
- 
XMonad.Promptnow stores its history file in the XMonad cache directory in a file namedprompt-history.
New Modules
- 
XMonad.Layout.SortedLayoutA new LayoutModifier that sorts a given layout by a list of properties. The order of properties in the list determines the order of windows in the final layout. Any unmatched windows go to the end of the order. 
- 
XMonad.Prompt.UnicodeA prompt to search a unicode character by its name, and put it into the clipboard. 
- 
XMonad.Util.UngrabRelease xmonad's keyboard and pointer grabs immediately, so screen grabbers and lock utilities, etc. will work. Replaces the short sleep hackaround. 
- 
XMonad.Util.Loggers.NamedScratchpadA collection of Loggers (see XMonad.Util.Loggers) for NamedScratchpads (seeXMonad.Util.NamedScratchpad).
- 
XMonad.Util.NoTaskbarUtility function and ManageHookto mark a window to be ignored by EWMH taskbars and pagers. Useful forNamedScratchpadwindows, since you will usually be taken to theNSPworkspace by them.
Bug Fixes and Minor Changes
- 
XMonad.Hooks.ManageDocks,- 
Fix a very annoying bug where taskbars/docs would be covered by windows. 
- 
Also fix a bug that caused certain Gtk and Qt application to have issues displaying menus and popups. 
 
- 
- 
XMonad.Layout.LayoutBuilderMerge all functionality from XMonad.Layout.LayoutBuilderPintoXMonad.Layout.LayoutBuilder.
- 
XMonad.Actions.WindowGo- Fix raiseNextMaybecycling between 2 workspaces only.
 
- Fix 
- 
XMonad.Actions.UpdatePointer- Fix bug when cursor gets stuck in one of the corners.
 
- 
XMonad.Actions.DynamicProjects- 
Switching away from a dynamic project that contains no windows automatically deletes that project's workspace. The project itself was already being deleted, this just deletes the workspace created for it as well. 
- 
Added function to change the working directory ( changeProjectDirPrompt)
- 
All of the prompts are now multiple mode prompts. Try using the changeModeKeyin a prompt and see what happens!
 
- 
0.12 (December 14, 2015)
Breaking Changes
- 
XMonad.Actions.UpdatePointer.updatePointerarguments were changed. This allows including aspects of both of theTowardsCentreandRelativemethods. To keep the same behavior, replace the entry in the left column with the entry on the right:< 0.12 >= 0.12 updatePointer NearestupdatePointer (0.5, 0.5) (1,1)updatePointer (Relative x y)updatePointer (x,y) (0,0)updatePointer (TowardsCentre x y)updatePointer (0.5,0.5) (x,y)
New Modules
- 
XMonad.Actions.AfterDragPerform an action after the current mouse drag is completed. 
- 
XMonad.Actions.DynamicProjectsImbues workspaces with additional features so they can be treated as individual project areas. 
- 
XMonad.Actions.LinkWorkspacesProvides bindings to add and delete links between workspaces. It is aimed at providing useful links between workspaces in a multihead setup. Linked workspaces are viewed at the same time. 
- 
XMonad.Config.BepoThis module fixes some of the keybindings for the francophone among you who use a BEPO keyboard layout. Based on XMonad.Config.Azerty
- 
XMonad.Config.DmwitDaniel Wagner's configuration. 
- 
XMonad.Config.MateThis module provides a config suitable for use with the MATE desktop environment. 
- 
XMonad.Config.PrimeA draft of a brand new config syntax for xmonad. 
- 
XMonad.Hooks.DynamicPropertyModule to apply a ManageHookto an already-mapped window when a property changes. This would commonly be used to match browser windows by title, since the final title will only be set after (a) the window is mapped, (b) its document has been loaded, (c) all load-time scripts have run.
- 
XMonad.Hooks.ManageDebugA manageHookand associatedlogHookfor debuggingManageHooks. Simplest usage: wrap your xmonad config in thedebugManageHookcombinator. Or usedebugManageHookOnfor a triggerable version, specifying the triggering key sequence inXMonad.Util.EZConfigsyntax. Or use the individual hooks in whatever way you see fit.
- 
XMonad.Hooks.WallpaperSetterLog hook which changes the wallpapers depending on visible workspaces. 
- 
XMonad.Hooks.WorkspaceHistoryKeeps track of workspace viewing order. 
- 
XMonad.Layout.AvoidFloatsFind a maximum empty rectangle around floating windows and use that area to display non-floating windows. 
- 
XMonad.Layout.BinarySpacePartitionLayout where new windows will split the focused window in half, based off of BSPWM. 
- 
XMonad.Layout.DwindleThree layouts: The first, Spiral, is a reimplementation ofXMonad.Layout.Spiral.spiralwith, at least to me, more intuitive semantics. The second,Dwindle, is inspired by a similar layout in awesome and produces the same sequence of decreasing window sizes as Spiral but pushes the smallest windows into a screen corner rather than the centre. The third,Squeezearranges all windows in one row or in one column, with geometrically decreasing sizes.
- 
XMonad.Layout.HiddenSimilar to XMonad.Layout.Minimizebut completely removes windows from the window set soXMonad.Layout.BoringWindowsisn't necessary. Perfect companion toXMonad.Layout.BinarySpacePartitionsince it can be used to move windows to another part of the BSP tree.
- 
XMonad.Layout.IfMaxProvides IfMaxlayout, which will run one layout if there are maximumNwindows on workspace, and another layout, when number of windows is greater thanN.
- 
XMonad.Layout.PerScreenConfigure layouts based on the width of your screen; use your favorite multi-column layout for wide screens and a full-screen layout for small ones. 
- 
XMonad.Layout.StoppableThis module implements a special kind of layout modifier, which when applied to a layout, causes xmonad to stop all non-visible processes. In a way, this is a sledge-hammer for applications that drain power. For example, given a web browser on a stoppable workspace, once the workspace is hidden the web browser will be stopped. 
- 
XMonad.Prompt.ConfirmPromptA module for setting up simple confirmation prompts for keybindings. 
- 
XMonad.Prompt.PassThis module provides 3 XMonad.Prompts to ease passwords manipulation (generate, read, remove) via pass.
- 
XMonad.Util.RemoteWindowsThis module implements a proper way of finding out whether the window is remote or local. 
- 
XMonad.Util.SpawnNamedPipeA module for spawning a pipe whose Handlelives in the xmonad state.
- 
XMonad.Util.WindowStateFunctions for saving per-window data. 
Miscellaneous Changes
- 
Fix issue #9: XMonad.Prompt.ShellsearchPredicateis ignored, defaults toisPrefixOf
- 
Fix moveHistory when alwaysHighlight is enabled 
- 
XMonad.Actions.DynamicWorkspaceGroupsnow exportsaddRawWSGroup
- 
Side tabs were added to the tabbed layout 
- 
XMonad/Layout/IndependentScreensnow exportsmarshallSort
- 
XMonad/Hooks/UrgencyHooknow exportsclearUrgency
- 
Exceptions are now caught when finding commands on PATHinPrompt.Shell
- 
Switched to Data.Defaultwherever possible
- 
XMonad.Layout.IndependentScreensnow exportswhenCurrentOn
- 
XMonad.Util.NamedActionsnow exportsaddDescrKeys'
- 
EWMH DEMANDS_ATTENTIONsupport added toUrgencyHook
- 
New useTransientFormodifier inXMonad.Layout.TrackFloating
- 
Added the ability to remove arbitrary workspaces 
0.9 (October 26, 2009)
Updates that Require Changes in xmonad.hs
- 
XMonad.Hooks.EwmhDesktopsno longer useslayoutHook, theewmhDesktopsLayoutmodifier has been removed from xmonad-contrib. It useslogHook,handleEventHook, andstartupHookinstead and provides a convenient functionewmhto add EWMH support to adefaultConfig.
- 
Most DynamicLogusers can continue with configs unchanged, but users of the quickbar functionsxmobarordzenwill need to changexmonad.hs: their types have changed to allow easier composition with otherXConfigmodifiers. ThedynamicLogDzenanddynamicLogXmobarfunctions have been removed.
- 
WindowGoorsafeSpawnusers may need to change command lines due tosafeSpawnchanges.
- 
People explicitly referencing the "SP" scratchpad workspace should change it to "NSP" which is also used by the new Util.NamedScratchpadmodule.
- 
(Optional) People who explicitly use swapMasterin key or mouse bindings should change it toshiftMaster. It's the current default used whereswapMasterhad been used previously. It works better thanswapMasterwhen using floating and tiled windows together on the same workspace.