xmonad-contrib
Community-maintained extensions for xmonad
| LTS Haskell 24.16: | 0.18.1 |
| Stackage Nightly 2025-10-24: | 0.18.1 |
| Latest on Hackage: | 0.18.1 |
xmonad-contrib-0.18.1@sha256:aae0f10f3f12492c9a3f0824c59b1d23982810a3f9fb096b2c3e2a0e417d0b05,22749Module documentation for 0.18.1
- XMonad
- XMonad.Actions
- XMonad.Actions.AfterDrag
- XMonad.Actions.BluetileCommands
- XMonad.Actions.Commands
- XMonad.Actions.ConstrainedResize
- XMonad.Actions.CopyWindow
- XMonad.Actions.CycleRecentWS
- XMonad.Actions.CycleSelectedLayouts
- XMonad.Actions.CycleWS
- XMonad.Actions.CycleWindows
- XMonad.Actions.CycleWorkspaceByScreen
- XMonad.Actions.DeManage
- XMonad.Actions.DwmPromote
- XMonad.Actions.DynamicProjects
- XMonad.Actions.DynamicWorkspaceGroups
- XMonad.Actions.DynamicWorkspaceOrder
- XMonad.Actions.DynamicWorkspaces
- XMonad.Actions.EasyMotion
- XMonad.Actions.FindEmptyWorkspace
- XMonad.Actions.FlexibleManipulate
- XMonad.Actions.FlexibleResize
- XMonad.Actions.FloatKeys
- XMonad.Actions.FloatSnap
- XMonad.Actions.FocusNth
- XMonad.Actions.GridSelect
- XMonad.Actions.GroupNavigation
- XMonad.Actions.KeyRemap
- XMonad.Actions.Launcher
- XMonad.Actions.LinkWorkspaces
- XMonad.Actions.MessageFeedback
- XMonad.Actions.Minimize
- XMonad.Actions.MostRecentlyUsed
- XMonad.Actions.MouseGestures
- XMonad.Actions.MouseResize
- XMonad.Actions.Navigation2D
- XMonad.Actions.NoBorders
- XMonad.Actions.OnScreen
- XMonad.Actions.PerLayoutKeys
- XMonad.Actions.PerWindowKeys
- XMonad.Actions.PerWorkspaceKeys
- XMonad.Actions.PhysicalScreens
- XMonad.Actions.Plane
- XMonad.Actions.Prefix
- XMonad.Actions.Profiles
- XMonad.Actions.Promote
- XMonad.Actions.RandomBackground
- XMonad.Actions.RepeatAction
- XMonad.Actions.Repeatable
- XMonad.Actions.RotSlaves
- XMonad.Actions.RotateSome
- XMonad.Actions.Search
- XMonad.Actions.ShowText
- XMonad.Actions.Sift
- XMonad.Actions.SimpleDate
- XMonad.Actions.SinkAll
- XMonad.Actions.SpawnOn
- XMonad.Actions.Submap
- XMonad.Actions.SwapPromote
- XMonad.Actions.SwapWorkspaces
- XMonad.Actions.TagWindows
- XMonad.Actions.TiledWindowDragging
- XMonad.Actions.ToggleFullFloat
- XMonad.Actions.TopicSpace
- XMonad.Actions.TreeSelect
- XMonad.Actions.UpdateFocus
- XMonad.Actions.UpdatePointer
- XMonad.Actions.Warp
- XMonad.Actions.WindowBringer
- XMonad.Actions.WindowGo
- XMonad.Actions.WindowMenu
- XMonad.Actions.WindowNavigation
- XMonad.Actions.WithAll
- XMonad.Actions.Workscreen
- XMonad.Actions.WorkspaceCursors
- XMonad.Actions.WorkspaceNames
- XMonad.Config
- XMonad.Doc
- XMonad.Hooks
- XMonad.Hooks.BorderPerWindow
- XMonad.Hooks.CurrentWorkspaceOnTop
- XMonad.Hooks.DebugEvents
- XMonad.Hooks.DebugKeyEvents
- XMonad.Hooks.DebugStack
- XMonad.Hooks.DynamicBars
- XMonad.Hooks.DynamicHooks
- XMonad.Hooks.DynamicIcons
- XMonad.Hooks.DynamicLog
- XMonad.Hooks.DynamicProperty
- XMonad.Hooks.EwmhDesktops
- XMonad.Hooks.FadeInactive
- XMonad.Hooks.FadeWindows
- XMonad.Hooks.FloatConfigureReq
- XMonad.Hooks.FloatNext
- XMonad.Hooks.Focus
- XMonad.Hooks.InsertPosition
- XMonad.Hooks.ManageDebug
- XMonad.Hooks.ManageDocks
- XMonad.Hooks.ManageHelpers
- XMonad.Hooks.Minimize
- XMonad.Hooks.Modal
- XMonad.Hooks.OnPropertyChange
- XMonad.Hooks.Place
- XMonad.Hooks.PositionStoreHooks
- XMonad.Hooks.RefocusLast
- XMonad.Hooks.Rescreen
- XMonad.Hooks.ScreenCorners
- XMonad.Hooks.Script
- XMonad.Hooks.ServerMode
- XMonad.Hooks.SetWMName
- XMonad.Hooks.ShowWName
- XMonad.Hooks.StatusBar
- XMonad.Hooks.TaffybarPagerHints
- XMonad.Hooks.ToggleHook
- XMonad.Hooks.UrgencyHook
- XMonad.Hooks.WallpaperSetter
- XMonad.Hooks.WindowSwallowing
- XMonad.Hooks.WorkspaceByPos
- XMonad.Hooks.WorkspaceHistory
- XMonad.Hooks.XPropManage
- XMonad.Layout
- XMonad.Layout.Accordion
- XMonad.Layout.AutoMaster
- XMonad.Layout.AvoidFloats
- XMonad.Layout.BinaryColumn
- XMonad.Layout.BinarySpacePartition
- XMonad.Layout.BorderResize
- XMonad.Layout.BoringWindows
- XMonad.Layout.ButtonDecoration
- XMonad.Layout.CenterMainFluid
- XMonad.Layout.CenteredIfSingle
- XMonad.Layout.CenteredMaster
- XMonad.Layout.Circle
- XMonad.Layout.CircleEx
- XMonad.Layout.Column
- XMonad.Layout.Columns
- XMonad.Layout.Combo
- XMonad.Layout.ComboP
- XMonad.Layout.Cross
- XMonad.Layout.Decoration
- XMonad.Layout.DecorationAddons
- XMonad.Layout.DecorationEx
- XMonad.Layout.DecorationMadness
- XMonad.Layout.Dishes
- XMonad.Layout.DragPane
- XMonad.Layout.DraggingVisualizer
- XMonad.Layout.Drawer
- XMonad.Layout.Dwindle
- XMonad.Layout.DwmStyle
- XMonad.Layout.FixedAspectRatio
- XMonad.Layout.FixedColumn
- XMonad.Layout.FocusTracking
- XMonad.Layout.Fullscreen
- XMonad.Layout.Gaps
- XMonad.Layout.Grid
- XMonad.Layout.GridVariants
- XMonad.Layout.Groups
- XMonad.Layout.Hidden
- XMonad.Layout.HintedGrid
- XMonad.Layout.HintedTile
- XMonad.Layout.IM
- XMonad.Layout.IfMax
- XMonad.Layout.ImageButtonDecoration
- XMonad.Layout.IndependentScreens
- XMonad.Layout.LayoutBuilder
- XMonad.Layout.LayoutCombinators
- XMonad.Layout.LayoutHints
- XMonad.Layout.LayoutModifier
- XMonad.Layout.LayoutScreens
- XMonad.Layout.LimitWindows
- XMonad.Layout.MagicFocus
- XMonad.Layout.Magnifier
- XMonad.Layout.Master
- XMonad.Layout.Maximize
- XMonad.Layout.MessageControl
- XMonad.Layout.Minimize
- XMonad.Layout.Monitor
- XMonad.Layout.Mosaic
- XMonad.Layout.MosaicAlt
- XMonad.Layout.MouseResizableTile
- XMonad.Layout.MultiColumns
- XMonad.Layout.MultiDishes
- XMonad.Layout.MultiToggle
- XMonad.Layout.Named
- XMonad.Layout.NoBorders
- XMonad.Layout.NoFrillsDecoration
- XMonad.Layout.OnHost
- XMonad.Layout.OneBig
- XMonad.Layout.PerScreen
- XMonad.Layout.PerWorkspace
- XMonad.Layout.PositionStoreFloat
- XMonad.Layout.Reflect
- XMonad.Layout.Renamed
- XMonad.Layout.ResizableThreeColumns
- XMonad.Layout.ResizableTile
- XMonad.Layout.ResizeScreen
- XMonad.Layout.Roledex
- XMonad.Layout.ShowWName
- XMonad.Layout.SideBorderDecoration
- XMonad.Layout.SimpleDecoration
- XMonad.Layout.SimpleFloat
- XMonad.Layout.Simplest
- XMonad.Layout.SimplestFloat
- XMonad.Layout.SortedLayout
- XMonad.Layout.Spacing
- XMonad.Layout.Spiral
- XMonad.Layout.Square
- XMonad.Layout.StackTile
- XMonad.Layout.StateFull
- XMonad.Layout.Stoppable
- XMonad.Layout.SubLayouts
- XMonad.Layout.TabBarDecoration
- XMonad.Layout.Tabbed
- XMonad.Layout.TallMastersCombo
- XMonad.Layout.ThreeColumns
- XMonad.Layout.ToggleLayouts
- XMonad.Layout.TrackFloating
- XMonad.Layout.TwoPane
- XMonad.Layout.TwoPanePersistent
- XMonad.Layout.VoidBorders
- XMonad.Layout.WindowArranger
- XMonad.Layout.WindowNavigation
- XMonad.Layout.WindowSwitcherDecoration
- XMonad.Layout.WorkspaceDir
- XMonad.Layout.ZoomRow
- XMonad.Prelude
- XMonad.Prompt
- XMonad.Prompt.AppLauncher
- XMonad.Prompt.AppendFile
- XMonad.Prompt.ConfirmPrompt
- XMonad.Prompt.DirExec
- XMonad.Prompt.Directory
- XMonad.Prompt.Email
- XMonad.Prompt.FuzzyMatch
- XMonad.Prompt.Input
- XMonad.Prompt.Layout
- XMonad.Prompt.Man
- XMonad.Prompt.OrgMode
- XMonad.Prompt.Pass
- XMonad.Prompt.RunOrRaise
- XMonad.Prompt.Shell
- XMonad.Prompt.Ssh
- XMonad.Prompt.Theme
- XMonad.Prompt.Unicode
- XMonad.Prompt.Window
- XMonad.Prompt.Workspace
- XMonad.Prompt.XMonad
- XMonad.Prompt.Zsh
- XMonad.Util
- XMonad.Util.ActionCycle
- XMonad.Util.ActionQueue
- XMonad.Util.ClickableWorkspaces
- XMonad.Util.Cursor
- XMonad.Util.CustomKeys
- XMonad.Util.DebugWindow
- XMonad.Util.Dmenu
- XMonad.Util.DynamicScratchpads
- XMonad.Util.Dzen
- XMonad.Util.EZConfig
- XMonad.Util.ExclusiveScratchpads
- XMonad.Util.ExtensibleConf
- XMonad.Util.ExtensibleState
- XMonad.Util.Font
- XMonad.Util.Grab
- XMonad.Util.Hacks
- XMonad.Util.History
- XMonad.Util.Image
- XMonad.Util.Invisible
- XMonad.Util.Loggers
- XMonad.Util.Minimize
- XMonad.Util.NamedActions
- XMonad.Util.NamedScratchpad
- XMonad.Util.NamedWindows
- XMonad.Util.NoTaskbar
- XMonad.Util.Parser
- XMonad.Util.Paste
- XMonad.Util.PositionStore
- XMonad.Util.Process
- XMonad.Util.PureX
- XMonad.Util.Rectangle
- XMonad.Util.RemoteWindows
- XMonad.Util.Replace
- XMonad.Util.Run
- XMonad.Util.Scratchpad
- XMonad.Util.SessionStart
- XMonad.Util.SpawnNamedPipe
- XMonad.Util.SpawnOnce
- XMonad.Util.Stack
- XMonad.Util.StringProp
- XMonad.Util.Themes
- XMonad.Util.Timer
- XMonad.Util.TreeZipper
- XMonad.Util.Types
- XMonad.Util.Ungrab
- XMonad.Util.WindowProperties
- XMonad.Util.WindowState
- XMonad.Util.WorkspaceCompare
- XMonad.Util.XSelection
- XMonad.Util.XUtils
- XMonad.Actions
xmonad-contrib
Community-maintained extensions for the XMonad window manager.
xmonad core is minimal, stable, yet extensible. xmonad-contrib is home to hundreds of additional tiling algorithms and extension modules. The two combined make for a powerful X11 window-manager with endless customization possibilities. They are, quite literally, libraries for creating your own window manager.
Installation
For installation and configuration instructions, please see:
If you run into any trouble, consult our documentation or ask the community for help.
Contributing
We welcome all forms of contributions:
- bug reports and feature ideas (also to xmonad)
- bug fixes, new features, new extensions (also to xmonad)
- documentation fixes and improvements: xmonad, xmonad-contrib, xmonad-web
- helping others in the community
- financial support: GitHub Sponsors, Open Collective
Please do read the CONTRIBUTING document for more
information about bug reporting and code contributions. For a brief overview
of the architecture and code conventions, see the documentation for the
XMonad.Doc.Developing module. If in doubt, talk to
us.
License
Code submitted to the xmonad-contrib repo is licensed under the same license as xmonad core itself, with copyright held by the authors.
Changes
Change Log / Release Notes
unreleased
0.18.1 (August 20, 2024)
Breaking Changes
-
XMonad.Hooks.StatusBars- Move status bar functions from the
IOto theXmonad to allow them to look up information fromX, like the screen width. Existing configurations may need to useiofromXMonad.CoreorliftIOfromControl.Monad.IO.Classin order to lift any existingIO StatusBarConfigvalues intoX StatusBarConfigvalues.
- Move status bar functions from the
-
XMonad.Prompt- Added an additional
XPConfigargument tohistoryCompletionandhistoryCompletionP. Calls along the lines ofhistoryCompletionP myFuncshould be changed tohistoryCompletionP myConf myFunc. If notmyConfis lying around,defcan be used instead.
- Added an additional
-
XMonad.Actions.GridSelect- Added the
gs_cancelOnEmptyClickfield toGSConfig, which makes mouse clicks into “empty space” cancel the current grid-select. Users explicitly defining their ownGSConfigrecord will have to add this to their definitions. Additionally, the field defaults toTrue—to retain the old behaviour, set it toFalse.
- Added the
New Modules
-
XMonad.Actions.Profiles- Group workspaces by similarity. Useful when one has lots of workspaces and uses only a couple per unit of work.
-
XMonad.Hooks.FloatConfigureReq- Customize handling of floating windows’ move/resize/restack requests (ConfigureRequest). Useful as a workaround for some misbehaving client applications (Steam, rxvt-unicode, anything that tries to restore absolute position of floats).
-
XMonad.Layout.Columns- Organize windows in columns. This layout allows to move/resize windows in every directions.
-
XMonad.Prompt.WindowBringer- Added
copyMenu, a convenient way to copy a window to the current workspace.
- Added
Bug Fixes and Minor Changes
-
Fix build-with-cabal.sh when XDG_CONFIG_HOME is defined.
-
XMonad.Util.EZConfig- Fixed
checkKeymapwarning that all keybindings are duplicates.
- Fixed
-
XMonad.Hooks.ManageHelpers- Added
isNotificationpredicate to check for windows with_NET_WM_WINDOW_TYPEproperty of_NET_WM_WINDOW_TYPE_NOTIFICATION.
- Added
-
XMonad.Prompt.OrgMode- Added
HH:MM-HH:MMandHH:MM+HHsyntax to specify time spans.
- Added
-
XMonad.Prompt- The history file is not extraneously read and written anymore if
the
historySizeis set to 0.
- The history file is not extraneously read and written anymore if
the
-
XMonad.Hooks.EwmhDesktops-
Requests for unmanaged windows no longer cause a refresh. This avoids flicker and also fixes disappearing menus in the Steam client and possibly a few other client applications.
(See also
XMonad.Hooks.FloatConfigureReqand/orXMonad.Util.Hacksfor additional Steam client workarounds.)
-
-
XMonad.Actions.Submap- Added
visualSubmapSortedto enable sorting of the keymap descriptions.
- Added
-
XMonad.Hooks.ScreenCorners- Added screen edge support with
SCTop,SCBottom,SCLeftandSCRight. Now both corners and edges are supported.
- Added screen edge support with
-
XMonad.Actions.WindowNavigation- Improve navigation in presence of floating windows.
- Handle window switching when in
Fulllayout.
Other changes
0.18.0 (February 3, 2024)
Breaking Changes
-
Deprecated
XMonad.Layout.Crossdue to bitrot; refer toXMonad.Layout.CircleandXMonad.Layout.ThreeColumnsfor alternatives. -
Deprecated the
XMonad.Layout.StateFullmodule andXMonad.Layout.TrackFloating.(t|T)rackFloatingin favour ofXMonad.Layout.FocusTracking. -
Dropped support for GHC 8.4.
-
XMonad.Util.ExclusiveScratchpads- Deprecated the module in favour of the (new) exclusive scratchpad
functionality of
XMonad.Util.NamedScratchpad.
- Deprecated the module in favour of the (new) exclusive scratchpad
functionality of
-
XMonad.Actions.CycleWorkspaceByScreen- The type of
repeatableActionhas changed, and it’s deprecated in favour ofX.A.Repeatable.repeatable.
- The type of
-
XMonad.Hooks.DynamicProperty- Deprecated the module in favour of the more aptly named
XMonad.Hooks.OnPropertyChange.
- Deprecated the module in favour of the more aptly named
-
XMonad.Util.Scratchpad:- Deprecated the module; use
XMonad.Util.NamedScratchpadinstead.
- Deprecated the module; use
-
XMonad.Actions.Navigation2D- Removed deprecated function
hybridNavigation.
- Removed deprecated function
-
XMonad.Layout.Spacing- Removed deprecated functions
SpacingWithEdge,SmartSpacing,SmartSpacingWithEdge,ModifySpacing,setSpacing, andincSpacing.
- Removed deprecated functions
-
XMonad.Actions.MessageFeedback- Removed deprecated functions
send,sendSM,sendSM_,tryInOrder,tryInOrder_,tryMessage, andtryMessage_.
- Removed deprecated functions
-
XMonad.Prompt.Window- Removed deprecated functions
windowPromptGoto,windowPromptBring, andwindowPromptBringCopy.
- Removed deprecated functions
-
XMonad.Hooks.ICCCMFocus- Removed deprecated module. This was merged into xmonad.
-
XMonad.Layout.LayoutBuilderP- Removed deprecated module; use
XMonad.Layout.LayoutBuilderinstead.
- Removed deprecated module; use
-
XMonad.Hooks.RestoreMinimized- Removed deprecated module; use
XMonad.Hooks.Minimizeinstead.
- Removed deprecated module; use
-
XMonad.Layout.Named- Deprecated the entire module, use
XMonad.Layout.Renamed(which newly providesnamedfor convenience) instead.
- Deprecated the entire module, use
-
XMonad.Actions.SinkAll- Deprecated the entire module, use
XMonad.Actions.WithAllinstead.
- Deprecated the entire module, use
-
XMonad.Layout.Circle:- Deprecated the entire module, use the
circlefunction fromXMonad.Layout.CircleExinstead.
- Deprecated the entire module, use the
-
XMonad.Hooks.EwmhDesktops_NET_CLIENT_LIST_STACKINGputs windows in the current workspace at the top in bottom-to-top order, followed by visible workspaces, followed by invisible workspaces. Within visible and invisible groups, workspaces are ordered lexicographically, as before. Currently focused window will always be the topmost, meaning the last in the list.
-
XMonad.Util.NamedScratchpad- Added
nsSingleScratchpadPerWorkspace—a logHook to allow only one active scratchpad per workspace.
- Added
-
XMonad.Util.EZConfig- The function
readKeySequencenow returns a non-empty list if it succeeded.
- The function
-
Deprecate
XMonad.Util.Ungrab; it was moved toXMonad.Operationsin core.
New Modules
-
XMonad.Layout.CenterMainFluid- A three column layout with main column in the center and two stack column surrounding it. Master window will be on center column and spaces on the sides are reserved.
-
XMonad.Layout.FocusTracking.- Replaces
X.L.StateFulland half ofX.L.TrackFloating.
- Replaces
-
XMonad.Actions.MostRecentlyUsed- Tab through windows by recency of use. Based on the Alt+Tab behaviour common outside of xmonad.
-
XMonad.Util.History- Track history in O(log n) time. Provides
History, a variation on a LIFO stack with a uniqueness property. In order to achieve the desired asymptotics, the data type is implemented as an ordered Map.
- Track history in O(log n) time. Provides
-
XMonad.Actions.Repeatable- Actions you’d like to repeat. Factors out the shared logic of
X.A.CycleRecentWS,X.A.CycleWorkspaceByScreenandX.A.CycleWindows.
- Actions you’d like to repeat. Factors out the shared logic of
-
XMonad.Hooks.OnPropertyChange:- A new module replicating the functionality of
XMonad.Hooks.DynamicProperty, but with more discoverable names.
- A new module replicating the functionality of
-
XMonad.Actions.ToggleFullFloat:- Fullscreen (float) a window while remembering its original state.
There’s both an action to be bound to a key, and hooks that plug into
XMonad.Hooks.EwmhDesktops.
- Fullscreen (float) a window while remembering its original state.
There’s both an action to be bound to a key, and hooks that plug into
-
XMonad.Layout.CircleEx:- A new window layout, similar to X.L.Circle, but with more possibilities for customisation.
-
XMonad.Layout.DecorationEx:- A new, more extensible, mechanism for window decorations, and some standard types of decorations, including usual bar on top of window, tabbed decorations and dwm-like decorations.
Bug Fixes and Minor Changes
-
XMonad.Layout.Magnifier- Added
magnifyxyto allow for different magnification in the horizontal and vertical directions. Addedmagnifierxy,magnifierxy',magnifierxyOff, andmagnifierxyOff'as particular combinators.
- Added
-
XMonad.Util.Loggers- Added
logClassname,logClassnames,logClassnames',logClassnameOnScreen,logClassnamesOnScreen,logClassnamesOnScreen', andClassnamesFormat. These are all equivalents of theirTitlecounterparts, allowing logging the window classname instead.
- Added
-
XMonad.Hooks.StatusBar.PPdynamicLogStringnow forces its result and produces an error string if it throws an exception. UsedynamicLogString'if for some reason you need the old behavior.
-
XMonad.Util.EZConfig-
Added
remapKeysP, which remaps keybindings from one binding to another. -
Made
additionalKeys{,P},removeKeys{,P},remapKeysP, and{additional,remove}MouseBindingsinfixl 4so they can more easily be concatenated with(++).
-
-
XMonad.Util.NamedScratchpad- Added
addExclusives,resetFocusedNSP,setNoexclusive,resizeNoexclusive, andfloatMoveNoexclusivein order to augment named scratchpads with the exclusive scratchpad functionality ofXMonad.Util.ExclusiveScratchpads.
- Added
-
XMonad.Layout.BorderResize- Added
borderResizeNearas a variant ofborderResizethat can control how many pixels near a border resizing still works.
- Added
-
XMonad.Util.Run-
It is now ensured that all arguments of
executeandevalare quoted. Likewise,executeNoQuoteis added as a version ofexecutethat does not do that. -
Added
findFileas a shorthand to callfind-file. -
Added
listandsaveExcursionto the list of Emacs commands. -
Added
toListto easily lift aStringto anX Input. -
Added
>&&>and>||>to glue together different inputs.
-
-
XMonad.Util.Parser- Added the
gather,count,between,option,optionally,skipMany,skipMany1,chainr,chainr1,chainl,chainl1, andmanyTillfunctions, in order to achieve feature parity withText.ParserCombinators.ReadP.
- Added the
-
XMonad.Actions.FloatKeys- Added
directionMoveWindowanddirectionMoveWindowas more alternatives to the existing functions.
- Added
-
XMonad.Hooks.InsertPosition- Added
setupInsertPositionas a combinator alternative toinsertPosition.
- Added
-
XMonad.Actions.Navigation2D- Added
sideNavigationas a fallback to the default tiling strategy, in caselineNavigationcan’t find a window. This benefits especially users who useXMonad.Layout.Spacing.
- Added
-
XMonad.Prompt.OrgMode-
Added
orgPromptRefileandorgPromptRefileTofor interactive and targeted refiling of the entered note into some existing tree of headings, respectively. -
Allowed the time specification in
HHMMformat.
-
-
XMonad.Actions.Search- Added
aur,flora,ncatlab,protondb,rosettacode,sourcehut,steam,voidpgks_x86_64,voidpgks_x86_64_musl,arXiv,clojureDocs,cratesIo,rustStd,noogle,nixos,homeManager, andzbmathsearch engines.
- Added
-
XMonad.Layout.ResizableThreeColumns- Fixed an issue where the bottom right window would not respond to
MirrorShrinkandMirrorExpandmessages.
- Fixed an issue where the bottom right window would not respond to
-
XMonad.Hooks.EwmhDesktops-
Added
disableEwmhManageDesktopViewportto avoid setting the_NET_DESKTOP_VIEWPORTproperty, as it can lead to issues with some status bars (see this polybar issue). -
Added
setEwmhFullscreenHooksto override the default fullfloat/sink behaviour of_NET_WM_STATE_FULLSCREENrequests. See alsoXMonad.Actions.ToggleFullFloatfor a float-restoring implementation of fullscreening. -
Added
ewmhDesktops(Maybe)ManageHookthat places windows in their preferred workspaces. This is useful when restoring a browser session after a restart.
-
-
XMonad.Hooks.StatusBar- Added
startAllStatusBarsto start the configured status bars.
- Added
-
XMonad.Util.NamedActions- Changed
addDescrKeysandaddDescrKeys'to not discard the keybindings in the current config.
- Changed
-
XMonad.Prompt-
The
emacsLikeXPKeymapandvimLikeXPKeymapkeymaps now treatC-mthe same asReturn. -
Added
prevCompletionKeytoXPConfig, facilitating the ability to cycle through the completions backwards. This is bound toS-<TAB>by default. -
The
vimLikeXPKeymapnow accepts the prompt upon pressing enter in normal mode.
-
-
XMonad.Actions.Prefix- Added
orIfPrefixed, a combinator to decide upon an action based on whether any prefix argument was given.
- Added
-
XMonad.Actions.WorkspaceNames- Enabled prompt completion (from history) in
renameWorkspace.
- Enabled prompt completion (from history) in
-
XMonad.Prompt.Pass- Added
passOTPTypePromptto type out one-time-passwords viaxdotool.
- Added
-
XMonad.Util.Stack- Added
zipperFocusedAtFirstOfto differentiate two lists into a zipper.
- Added
0.17.1 (September 3, 2022)
Breaking Changes
-
XMonad.Util.EZConfig- The functions
parseKey,parseKeyCombo, andparseKeySequencenow return aParser(fromXMonad.Util.Parser) instead of aReadP.
- The functions
-
XMonad.Config.{Arossato,Dmwit,Droundy,Monad,Prime,Saegesser,Sjanssen}- Deprecated all of these modules. The user-specific configuration modules may still be found on the website.
-
XMonad.Util.NamedScratchpad- Scratchpads are now only based on the argument given to
namedScratchpadManageHook; all other scratchpad arguments are, while still present, ignored. Users passing all of their scratchpads to functions likenamedScratchpadAction(as is shown in the module’s documentation) should not notice any difference in behaviour.
- Scratchpads are now only based on the argument given to
-
XMonad.Util.DynamicScratchpads- Deprecated the module; use the new dynamic scratchpad
functionality of
XMonad.Util.NamedScratchpadinstead.
- Deprecated the module; use the new dynamic scratchpad
functionality of
-
XMonad.Hooks.UrgencyHook- Deprecated
urgencyConfig; usedeffrom the newDefaultinstance ofUrgencyConfiginstead.
- Deprecated
New Modules
-
XMonad.Actions.PerLayoutKeysCustomizes a keybinding on a per-layout basis. Based on PerWorkspaceKeys.
-
XMonad.Layout.CenteredIfSingleLayout modifier that, if only a single window is on screen, places that window in the middle of the screen.
-
XMonad.Util.ActionQueuePut XMonad actions in the queue to be executed every time the
logHook(or, alternatively, a hook of your choice) runs. -
XMonad.Hooks.BorderPerWindowWhile XMonad provides config to set all window borders at the same width, this extension lets user set border width for a specific window using a ManageHook.
-
XMonad.Util.ParserA wrapper around the ‘ReadP’ parser combinator, providing behaviour that’s closer to the more popular parser combinator libraries.
-
XMonad.Hooks.StatusBar.WorkspaceScreenIn multi-head setup, it might be useful to have screen information of the visible workspaces combined with the workspace name, for example in a status bar. This module provides utility functions to do just that.
-
XMonad.Hooks.ShowWNameFlashes the name of the current workspace when switching to it. Like
XMonad.Layout.ShowWName, but as a logHook. -
XMonad.Actions.RepeatActionA module for adding a keybinding to repeat the last action, similar to Vim’s
.or Emacs’sdot-mode. -
XMonad.Util.GrabUtilities for making grabbing and ungrabbing keys more convenient.
-
XMonad.Hooks.ModalThis module implements modal keybindings for xmonad.
-
XMonad.Layout.SideBorderDecorationThis module allows for having a configurable border position around windows; i.e., it can move the border to either cardinal direction.
Bug Fixes and Minor Changes
-
XMonad.Prompt.Pass- Added new versions of the
passfunctions that allow user-specified prompts.
- Added new versions of the
-
XMonad.Prompt.AppendFile- Use
XMonad.Prelude.mkAbsolutePathto force names to be relative to the home directory and support~/prefixes.
- Use
-
XMonad.Prompt.OrgMode-
Fixed the date parsing issue such that entries with a format of
todo +d 12 02 2024work. -
Added the ability to specify alphabetic (
#A,#B, and#C) priorities at the end of the input note.
-
-
XMonad.Prompt.Unicode- Fixed the display of non-ASCII characters in the description of Unicode characters
-
XMonad.Prompt-
Added
transposeCharsto interchange the characters around the point and bound it toC-tin the Emacs XPKeymaps. -
Added xft-based font fallback support. This may be used by appending other fonts to the given string:
xft:iosevka-11,FontAwesome-9. Note that this requiresxmonad-contribto be compiled withX11-xftversion 0.3.4 or higher.
-
-
XMonad.Hooks.WindowSwallowing-
Fixed windows getting lost when used in conjunction with
smartBordersand a single window. -
No longer needs
pstreeto detect child/parent relationships. -
Fixed some false positives in child/parent relationship detection.
-
-
XMonad.Actions.SpawnOn- Fixed parsing of
/proc/*/statto correctly handle complex process names.
- Fixed parsing of
-
XMonad.Util.EZConfig- Added support for Modifier Keys
KeySyms for Emacs-likeadditionalKeysP.
- Added support for Modifier Keys
-
XMonad.Hooks.ManageHelpers-
Flipped how
(^?),(~?), and($?)work to more accurately reflect how one uses these operators. -
Added
isMinimized
-
-
XMonad.Actions.WindowNavigation- Fixed navigation getting “stuck” in certain situations for widescreen resolutions.
-
XMonad.Layout.BinarySpacePartition- Hidden windows are now ignored by the layout so that hidden windows in the stack don’t offset position calculations in the layout.
-
XMonad.Layout.MagicFocus- The focused window will always be at the master area in the stack being passed onto the modified layout, even when focus leaves the workspace using the modified layout.
-
XMonad.Actions.TreeSelect- Added xft-based font fallback support. This may be used by
appending other fonts to the given string:
xft:iosevka-11,FontAwesome-9. Note that this requiresxmonad-contribto be compiled withX11-xftversion 0.3.4 or higher.
- Added xft-based font fallback support. This may be used by
appending other fonts to the given string:
-
XMonad.Actions.FloatKeys- Changed type signature of
keysMoveWindowfromD -> Window -> X ()toChangeDim -> Window -> X ()to allow negative numbers without compiler warnings.
- Changed type signature of
-
XMonad.Util.Hacks- Added
trayerPaddingXmobarEventHook(plus generic variants for other trays/panels) to communicate trayer resize events to XMobar so that padding space may be reserved on xmobar for the tray. Requiresxmobarversion 0.40 or higher.
- Added
-
XMonad.Layout.VoidBorders- Added new layout modifier
normalBorderswhich can be used for resetting borders back in layouts where you want borders after callingvoidBorders.
- Added new layout modifier
-
XMonad.Prelude-
Added
keymaskToStringandkeyToStringto show a key mask and a key in the style ofXMonad.Util.EZConfig. -
Added
WindowScreen, which is a type synonym for the specializedScreentype, that results from theWindowSetdefinition inXMonad.Core. -
Modified
mkAbsolutePathto support a leading environment variable, so things like$HOME/NOTESwork. If you want more general environment variable support, comment on this PR.
-
-
XMonad.Util.XUtils- Added
withSimpleWindow,showSimpleWindow,WindowConfig, andWindowRectin order to simplify the handling of simple popup windows.
- Added
-
XMonad.Actions.Submap- Added
visualSubmapto visualise the available keys and their actions when inside a submap.
- Added
-
XMonad.Prompt,XMonad.Actions.TreeSelect,XMonad.Actions.GridSelect- Key bindings now behave similarly to xmonad core:
State of mouse buttons and XKB layout groups is ignored.
Translation of key codes to symbols ignores modifiers, so
Shift-Tabis now just(shiftMap, xK_Tab)instead of(shiftMap, xK_ISO_Left_Tab).
- Key bindings now behave similarly to xmonad core:
State of mouse buttons and XKB layout groups is ignored.
Translation of key codes to symbols ignores modifiers, so
-
XMonad.Util.NamedScratchpad- Added support for dynamic scratchpads in the form of
dynamicNSPActionandtoggleDynamicNSP.
- Added support for dynamic scratchpads in the form of
-
XMonad.Hooks.EwmhDesktops- Added support for
_NET_DESKTOP_VIEWPORT, which is required by some status bars.
- Added support for
-
XMonad.Util.Run- Added an EDSL—particularly geared towards programs like terminals or Emacs—to spawn processes from XMonad in a compositional way.
-
XMonad.Hooks.UrgencyHook- Added a
Defaultinstance forUrgencyConfigandDzenUrgencyHook.
- Added a
Other changes
- Migrated the sample build scripts from the deprecated
xmonad-testingrepo toscripts/build. This will be followed by a documentation update in thexmonadrepo.
0.17.0 (October 27, 2021)
Breaking Changes
-
All modules that export bitmap fonts as their default
-
If xmonad is compiled with XFT support (the default), use an XFT font instead. The previous default expected an X11 misc font (PCF), which is not supported in pango 1.44 anymore and thus some distributions have stopped shipping these.
This fixes the silent
user error (createFontSet); this would break the respective modules.
-
-
XMonad.Prompt-
Now
mkComplFunFromListandmkComplFunFromList'take an additionalXPConfigargument, so that they can take into account the givensearchPredicate. -
A
complCaseSensitivityfield has been added toXPConfig, indicating whether case-sensitivity is desired when performing completion. -
historyCompletionandhistoryCompletionPnow both have anXconstraint (was:IO), due to changes in how the xmonad core handles XDG directories. -
The prompt window now sets a
WM_CLASSproperty. This allows other applications, like compositors, to properly match on it.
-
-
XMonad.Hooks.EwmhDesktops-
It is no longer recommended to use
fullscreenEventHookdirectly. Instead, useewmhFullscreenwhich additionally advertises fullscreen support in_NET_SUPPORTEDand fixes fullscreening of applications that explicitly check it, e.g. mupdf-gl, sxiv, …XMonad.Layout.Fullscreen.fullscreenSupportnow advertises it as well, and no configuration changes are required in this case. -
Deprecated
ewmhDesktopsLogHookCustomandewmhDesktopsEventHookCustom; these are now replaced by a composableXMonad.Util.ExtensibleConf-based interface. Users are advised to just use theewmhXConfig combinator and customize behaviour using the providedaddEwmhWorkspaceSort,addEwmhWorkspaceRenamefunctions, or better still, use integrations provided by modules such asXMonad.Actions.WorkspaceNames.This interface now additionally allows customization of what happens when clients request window activation. This can be used to ignore activation of annoying applications, to mark windows as urgent instead of focusing them, and more. There’s also a new
XMonad.Hooks.Focusmodule extending the ManageHook EDSL with useful combinators. -
Ordering of windows that are set to
_NET_CLIENT_LISTand_NET_CLIENT_LIST_STACKINGwas changed to be closer to the spec. From now these two lists will have differently sorted windows. -
_NET_WM_STATE_DEMANDS_ATTENTIONwas added to the list of supported hints (as per_NET_SUPPORTED). This hint has long been understood byUrgencyHook. This enables certain applications (e.g. kitty terminal emulator) that check whether the hint is supported to use it.
-
-
All modules still exporting a
defaultFooconstructor- All of these were now removed. You can use the re-exported
deffromData.Defaultinstead.
- All of these were now removed. You can use the re-exported
-
XMonad.Hooks.ScriptexecScriptHooknow has anXconstraint (was:MonadIO), due to changes in how the xmonad core handles XDG directories.
-
XMonad.Actions.WorkspaceNames- The type of
getWorkspaceNameswas changed to fit into the newppRenamefield ofPP.
- The type of
-
XMonad.Hooks.StatusBar,XMonad.Hooks.StatusBar.PP(previouslyXMonad.Hooks.DynamicLog) andXMonad.Util.Run-
spawnPipeno longer uses binary mode handles but defaults to the current locale encoding instead.dynamicLogString, the output of which usually goes directly into such a handle, no longer encodes its output in UTF-8, but returns a normalStringof Unicode codepoints instead.When these two are used together, everything should continue to work as it always has, but in isolation behaviour might change.
(To get the old
spawnPipebehaviour,spawnPipeWithNoEncodingcan now be used, andspawnPipeWithUtf8Encodingwas added as well to force UTF-8 regardless of locale. These shouldn’t normally be necessary, though.) -
xmonadPropLogandxmonadPropLog'now encode the String in UTF-8. Again, no change when used together withdynamicLogString, but other uses of these in user configs might need to be adapted.
-
-
XMonad.Actions.TopicSpace-
Deprecated the
maxTopicHistoryfield, as well as thegetLastFocusedTopicsandsetLastFocusedTopicfunctions. It is now recommended to directly useXMonad.Hooks.WorkspaceHistoryinstead. -
Added
TopicItem, as well as the helper functionstopicNames,tiActions,tiDirs,noAction, andinHomefor a more convenient specification of topics.
-
-
XMonad.Actions.CycleRecentWS- Changed the signature of
recentWSto return a[WorkspaceId]instead of a[WindowSet], whilecycleWindowSetsandtoggleWindowSetsnow take a functionWindowSet -> [WorkspaceId]instead of one to[WindowSet]as their first argument. This fixes the interplay between this module and any layout that stores state.
- Changed the signature of
-
XMonad.Layout.LayoutCombinators-
Moved the alternative
(|||)function andJumpToLayoutto the xmonad core. They are re-exported by the module, but do not add any new functionality.NewSelectnow exists as a deprecated type alias toChoose. -
Removed the
WrapandNextLayoutNoWrapdata constructors.
-
-
XMonad.Actions.CycleWS- Deprecated
EmptyWS,HiddenWS,NonEmptyWS,HiddenNonEmptyWS,HiddenEmptyWS,AnyWSandWSTagGroup.
- Deprecated
-
XMonad.Actions.GridSelectcolorRangeFromClassNamenow uses different hash function, so colors of inactive window tiles will be different (but still inside the provided color range).
-
XMonad.Actions.Search-
Removed outdated
isohuntsearch engine. -
Updated URLs for
codesearch,openstreetmap, andthesaurussearch engines. -
Added
githubsearch engine.
-
New Modules
-
XMonad.Layout.FixedAspectRatioLayout modifier for user provided per-window aspect ratios.
-
XMonad.Hooks.TaffybarPagerHintsAdd a module that exports information about XMonads internal state that is not available through EWMH that is used by the taffybar status bar.
-
XMonad.Hooks.StatusBar.PPOriginally contained inside
XMonad.Hooks.DynamicLog, this module provides the pretty-printing abstraction and utilities, used primarly withlogHook.Below are changes from
XMonad.Hooks.DynamicLog, that now are included in this module:-
Added
shortenLeftfunction, like existingshortenbut shortens by truncating from left instead of right. Useful for showing directories. -
Added
shorten'andshortenLeft'functions with customizable overflow markers. -
Added
filterOutWsPPfor filtering out certain workspaces from being displayed. -
Added
xmobarBorderfor creating borders around strings andxmobarFontfor selecting an alternative font. -
Added
ppRenametoPP, which makes it possible for extensions likeworkspaceNamesPP,marshallPPand/orclickablePP(which need to access the originalWorkspaceId) to compose intuitively. -
Added
ppPrinters,WSPPandfallbackPrintersas a generalization of theppCurrent,ppVisible… sextet, which makes it possible for extensions likecopiesPP(which acts as if there was appHiddenWithCopies) to compose intuitively.
-
-
XMonad.Hooks.StatusBarThis module provides a new interface that replaces
XMonad.Hooks.DynamicLog, by providing composoble status bars. Supports property-based as well as pipe-based status bars. -
XMonad.Util.HacksA collection of hacks and fixes that should be easily acessible to users:
-
windowedFullscreenFixfixes fullscreen behaviour of chromium based applications when using windowed fullscreen. -
javaHackhelps when dealing with Java applications that might not work well with xmonad. -
trayerAboveXmobarEventHookreliably stacks trayer on top of xmobar and below other windows
-
-
XMonad.Util.ActionCycleA module providing a simple way to implement “cycling”
Xactions, useful for things like alternating toggle-style keybindings. -
XMonad.Actions.RotateSomeFunctions for rotating some elements around the stack while keeping others anchored in place. Useful in combination with layouts that dictate window visibility based on stack position, such as
XMonad.Layout.LimitWindows.Export
surfaceNextandsurfacePrevactions, which treat the focused window and any hidden windows as a ring that can be rotated through the focused position.Export
rotateSome, a pure function that rotates some elements around a stack while keeping others anchored in place. -
XMonad.Actions.SiftProvide
siftUpandsiftDownactions, which behave likeswapUpandswapDownbut handle the wrapping case by exchanging the windows at either end of the stack instead of rotating the stack. -
XMonad.Hooks.DynamicIconsDynamically augment workspace names logged to a status bar via DynamicLog based on the contents (windows) of the workspace.
-
XMonad.Hooks.WindowSwallowingHandleEventHooks that implement window swallowing or sublayouting: Hide parent windows like terminals when opening other programs (like image viewers) from within them, restoring them once the child application closes.
-
XMonad.Actions.TiledWindowDraggingAn action that allows you to change the position of windows by dragging them around.
-
XMonad.Layout.ResizableThreeColumnsA layout based on
XMonad.Layout.ThreeColumnsbut with each slave window’s height resizable. -
XMonad.Layout.TallMastersComboA layout combinator that support Shrink, Expand, and IncMasterN just as the
Talllayout, and also support operations of two master windows: a main master, which is the original master window; a sub master, the first window of the second pane. This combinator can be nested, and has a good support for usingXMonad.Layout.Tabbedas a sublayout. -
XMonad.Actions.PerWindowKeysCreate actions that run on a
Query Bool, usually associated with conditions on a window, basis. Useful for creating bindings that are excluded or exclusive for some windows. -
XMonad.Util.DynamicScratchpadsDeclare any window as a scratchpad on the fly. Once declared, the scratchpad behaves like
XMonad.Util.NamedScratchpad. -
XMonad.Prompt.ZshA version of
XMonad.Prompt.Shellthat lets you use completions supplied by zsh. -
XMonad.Util.ClickableWorkspacesProvides
clickablePP, which when applied to thePPpretty-printer used byXMonad.Hooks.StatusBar.PP, will make the workspace tags clickable in XMobar (for switching focus). -
XMonad.Layout.VoidBordersProvides a modifier that semi-permanently (requires manual intervention) disables borders for windows from the layout it modifies.
-
XMonad.Hooks.FocusExtends ManageHook EDSL to work on focused windows and current workspace.
-
XMonad.Config.LXQtThis module provides a config suitable for use with the LXQt desktop environment.
-
XMonad.Prompt.OrgModeA prompt for interacting with org-mode. It can be used to quickly save TODOs, NOTEs, and the like with the additional capability to schedule/deadline a task, or use the primary selection as the contents of the note.
-
XMonad.Util.ExtensibleConfExtensible and composable configuration for contrib modules. Allows contrib modules to store custom configuration values inside
XConfig. This lets them create custom hooks, ensure they hook into xmonad core only once, and possibly more. -
XMonad.Hooks.RescreenCustom hooks for screen (xrandr) configuration changes. These can be used to restart/reposition status bars or systrays automatically after xrandr, as well as to actually invoke xrandr or autorandr when an output is (dis)connected.
-
XMonad.Actions.EasyMotionA new module that allows selection of visible screens using a key chord. Inspired by vim-easymotion. See the animation in the vim-easymotion repo to get some idea of the functionality of this EasyMotion module.
Bug Fixes and Minor Changes
-
Add support for GHC 9.0.1.
-
XMonad.Actions.WithAll- Added
killOthers, which kills all unfocused windows on the current workspace.
- Added
-
XMonad.Prompt.XMonad- Added
xmonadPromptCT, which allows you to create an XMonad prompt with a custom title.
- Added
-
XMonad.Actions.DynamicWorkspaceGroups- Add support for
XMonad.Actions.TopicSpacethroughviewTopicGroupandpromptTopicGroupView.
- Add support for
-
XMonad.Actions.TreeSelect-
Fix swapped green/blue in foreground when using Xft.
-
The spawned tree-select window now sets a
WM_CLASSproperty. This allows other applications, like compositors, to properly match on it.
-
-
XMonad.Layout.Fullscreen- Add fullscreenSupportBorder which uses smartBorders to remove window borders when the window is fullscreen.
-
XMonad.Config.Mate-
Split out the logout dialog and add a shutdown dialog. The default behavior remains the same but there are now
mateLogoutandmateShutdownactions available. -
Add mod-d keybinding to open the Mate main menu.
-
-
XMonad.Actions.DynamicProjects-
The
changeProjectDirPromptfunction respects thecomplCaseSensitivityfield ofXPConfigwhen performing directory completion. -
modifyProjectis now exported.
-
-
XMonad.Layout.WorkspaceDir-
The
changeDirfunction respects thecomplCaseSensitivityfield ofXPConfigwhen performing directory completion. -
Chdirmessage is exported, so it’s now possible to change the directory programmaticaly, not just via a user prompt.
-
-
XMonad.Prompt.Directory-
Added
directoryMultipleModes', likedirectoryMultipleModeswith an additionalComplCaseSensitivityargument. -
Directory completions are now sorted.
-
The
Dirconstructor now takes an additionalComplCaseSensitivityargument to indicate whether directory completion is case sensitive.
-
-
XMonad.Prompt.FuzzyMatchfuzzySortwill now accept cases where the input is not a subsequence of every completion.
-
XMonad.Prompt.Shell-
Added
getShellCompl', likegetShellComplwith an additionalComplCaseSensitivityargument. -
Added
compgenDirectoriesandcompgenFilesto get the directory/filename completion matches returned by the compgen shell builtin. -
Added
safeDirPrompt, which is likesafePrompt, but optimized for the use-case of a program that needs a file as an argument.
-
-
XMonad.Prompt.Unicode-
Reworked internally to call
spawnPipe(asynchronous) instead ofrunProcessWithInput(synchronous), which fixestypeUnicodePrompt. -
Now respects
searchPredicateandsorterfrom user-suppliedXPConfig.
-
-
XMonad.Hooks.DynamicLog-
Added
xmobarProp, for property-based alternative toxmobar. -
Add the -dock argument to the dzen spawn arguments
-
The API for this module is frozen: this is now a compatibility wrapper.
-
References for this module are updated to point to
X.H.StatusBarorX.H.StatusBar.PP
-
-
XMonad.Layout.BoringWindows-
Added boring-aware
swapUp,swapDown,siftUp, andsiftDownfunctions. -
Added
markBoringEverywherefunction, to mark the currently focused window boring on all layouts, when usingXMonad.Actions.CopyWindow.
-
-
XMonad.Util.NamedScratchpad-
Added two new exported functions to the module:
customRunNamedScratchpadAction(provides the option to customize theX ()action the scratchpad is launched by)spawnHereNamedScratchpadAction(usesXMonad.Actions.SpawnOn.spawnHereto initially start the scratchpad on the workspace it was launched on)
-
Deprecated
namedScratchpadFilterOutWorkspaceandnamedScratchpadFilterOutWorkspacePP. UseXMonad.Util.WorkspaceCompare.filterOutWsrespectivelyXMonad.Hooks.DynamicLog.filterOutWsPPinstead. -
Exported the
scratchpadWorkspaceTag. -
Added a new logHook
nsHideOnFocusLossfor hiding scratchpads when they lose focus.
-
-
XMonad.Prompt.Window-
Added
allApplicationsfunction which maps application executable names to its underlying window. -
Added a
WithWindowconstructor toWindowPromptto allow executing actions of typeWindow -> X ()on the chosen window.
-
-
XMonad.Prompt.WindowBringer-
Added
windowAppMapfunction which maps application executable names to its underlying window. -
A new field
windowFilterwas added to the config, which allows the user to provide a function which will decide whether each window should be included in the window bringer menu.
-
-
XMonad.Actions.Search-
The
hooglefunction now uses the new URLhoogle.haskell.org. -
Added
promptSearchBrowser'function to only suggest previous searches of the selected search engine (instead of all search engines).
-
-
XMonad.Layout.MouseResizableTile- When we calculate dragger widths, we first try to get the border width of
the focused window, before failing over to using the initial
borderWidth.
- When we calculate dragger widths, we first try to get the border width of
the focused window, before failing over to using the initial
-
XMonad.Actions.CycleRecentWS-
Added
cycleRecentNonEmptyWSfunction which behaves likecycleRecentWSbut is constrainded to non-empty workspaces. -
Added
toggleRecentWSandtoggleRecentNonEmptyWSfunctions which toggle between the current and most recent workspace, and continue to toggle back and forth on repeated presses, rather than cycling through other workspaces. -
Added
recentWSfunction which allows the recency list to be filtered with a user-provided predicate.
-
-
XMonad.Layout.Hidden-
Export
HiddenWindowstype constructor. -
Export
popHiddenWindowfunction restoring a specific window.
-
-
XMonad.Hooks.ManageDocks-
Export
AvoidStrutsconstructor -
Restored compatibility with pre-0.13 configs by making the startup hook unnecessary for correct functioning (strut cache is initialized on-demand).
This is a temporary measure, however. The individual hooks are now deprecated in favor of the
dockscombinator,xmonad --recompilenow reports deprecation warnings, and the hooks will be removed soon. -
Fixed ignoring of strut updates from override-redirect windows, which is default for xmobar.
Previously, if one wanted xmobar to reposition itself after xrandr changes and have xmonad handle that repositioning, one would need to configure xmobar with
overrideRedirect = False, which would disable lowering on start and thus cause other problems. This is no longer necessary.
-
-
XMonad.Hooks.ManageHelpers-
Export
doSink -
Added
doLoweranddoRaise -
Added
shiftToSameandclientLeaderwhich allow a hook to be created that shifts a window to the workspace of other windows of the application (using either theWM_CLIENT_LEADERor_NET_WM_PIDproperty). -
Added
windowTag -
Added
(^?),(~?)and($?)operators as infix versions ofisPrefixOf,isInfixOfandisSuffixOfworking withManageHooks.
-
-
XMonad.Util.EZConfig- Added support for XF86Bluetooth.
-
XMonad.Util.Loggers-
Make
batteryandloadAvgdistro-independent. -
Added
logTitleOnScreen,logCurrentOnScreenandlogLayoutOnScreenas screen-specific variants oflogTitle,logCurrentandlogLayout. -
Added
logWhenActiveto have loggers active only when a certain screen is active. -
Added
logConstto log a constantString, andlogDefault(infix:.|) to combine loggers. -
Added
logTitlesto log all window titles (focused and unfocused ones) on the focused workspace, as well aslogTitlesOnScreenas a screen-specific variant thereof. -
Added
logTitles'andlogTitleOnScreen'. These act likelogTitlesandlogTitlesOnScreenbut use a record as an input to enable logging for more window types. For example, currently urgent windows are additionally supported.
-
-
XMonad.Layout.Minimize- Export
Minimizetype constructor.
- Export
-
XMonad.Actions.WorkspaceNames- Added
workspaceNamesEwmhwhich makes workspace names visible to external pagers.
- Added
-
XMonad.Util.PureX-
Added
focusWindowandfocusNthwhich don’t refresh (and thus possibly flicker) when they happen to be a no-op. -
Added
shiftWinas a refresh tracking version ofW.shiftWin.
-
-
Several
LayoutClassinstances now have an additionalTypeableconstraint which may break some advanced configs. The upside is that we can now addTypeabletoLayoutClassinXMonad.Coreand make it possible to introspect the current layout and its modifiers. -
XMonad.Actions.TopicSpace-
switchTopicnow correctly updates the last used topics. -
setLastFocusedTopicwill now check whether we have exceeded themaxTopicHistoryand prune the topic history as necessary, as well as cons the given topic onto the list before filtering it. -
Added
switchNthLastFocusedExclude, which works likeswitchNthLastFocusedbut is able to exclude certain topics. -
Added
switchTopicWith, which works likeswitchTopic, but one is able to givesetLastFocusedTopica custom filtering function as well. -
Instead of a hand-rolled history, use the one from
XMonad.Hooks.WorkspaceHistory. -
Added the screen-aware functions
getLastFocusedTopicsByScreenandswitchNthLastFocusedByScreen.
-
-
XMonad.Hooks.WorkspaceHistory-
Added
workspaceHistoryModifyto modify the workspace history with a pure function. -
Added
workspaceHistoryHookExcludefor excluding certain workspaces to ever enter the history.
-
-
XMonad.Util.DebugWindow- Fixed a bottom in
debugWindowwhen used on windows with UTF8 encoded titles.
- Fixed a bottom in
-
XMonad.Config.Xfce- Set
terminaltoxfce4-terminal.
- Set
-
XMonad.Hooks.WorkspaceCompare- Added
filterOutWsfor workspace filtering.
- Added
-
XMonad.Prompt-
Accommodate completion of multiple words even when
alwaysHighlightis enabled. -
Made the history respect words that were “completed” by
alwaysHighlightupon confirmation of the selection by the user. -
Fixed a crash when focusing a new window while the prompt was up by allowing pointer events to pass through the custom prompt event loop.
-
The prompt now cycles through its suggestions if one hits the ends of the suggestion list and presses
TABagain. -
Added
maxComplColumnsfield toXPConfig, to limit the number of columns in the completion window. -
Redefine
ComplCaseSensitivityto a proper sum type as opposed to anewtypewrapper aroundBool.
-
-
XMonad.Actions.TreeSelect- Fixed a crash when focusing a new window while the tree select window was up by allowing pointer events to pass through the custom tree select event loop.
-
XMonad.Layout.NoBorders-
Fixed handling of floating window borders in multihead setups that was broken since 0.14.
-
Added
OnlyFloatconstructor toAmbiguityto unconditionally remove all borders on floating windows.
-
-
XMonad.Hooks.UrgencyHook-
It’s now possible to clear urgency of selected windows only using the newly exported
clearUrgents'function. Also, this andclearUrgentsnow clear the_NET_WM_STATE_DEMANDS_ATTENTIONbit as well. -
Added a variant of
filterUrgencyHookthat takes a genericQuery Boolto select which windows should never be marked urgent. -
Added
askUrgentand adoAskUrgentmanage hook helper for marking windows as urgent from inside of xmonad. This can be used as a less intrusive action for windows requesting focus.
-
-
XMonad.Hooks.ServerMode- To make it easier to use, the
xmonadctlclient is now included inscripts/.
- To make it easier to use, the
-
XMonad.Layout.TrackFloating- Fixed a bug that prevented changing focus on inactive workspaces.
-
XMonad.Layout.Magnifier-
Added
magnifierczOffandmagnifierczOff'for custom-size magnifiers that start out with magnifying disabled. -
Added
magnifyas a more general combinator, including the ability to postpone magnifying until there are a certain number of windows on the workspace.
-
-
XMonad.Layout.Renamed- Added
KeepWordsLeftandKeepWordsRightfor keeping certain number of words in left or right direction in layout description.
- Added
-
XMonad.Hooks.WallpaperSetter-
Added
defWPNamesPng, which works likedefWPNamesbut mapsws-nametows-name.pnginstead ofws-name.jpg. -
Added
defWPNamesJpgas an alias todefWPNamesand deprecated the latter.
-
-
XMonad.Layout.SubLayouts- Floating windows are no longer moved to the end of the window stack.
-
XMonad.Layout.BinarySpacePartition- Add the ability to increase/decrease the window size by a custom
rational number. E.g:
sendMessage $ ExpandTowardsBy L 0.02
- Add the ability to increase/decrease the window size by a custom
rational number. E.g:
-
XMonad.Layout.Decoration- The decoration window now sets a
WM_CLASSproperty. This allows other applications, like compositors, to properly match on it.
- The decoration window now sets a
-
XMonad.Layout.IndependentScreens-
Fixed a bug where
marshallPPalways sorted workspace names lexically. This changes the default behaviour ofmarshallPP—the givenppSortnow operates in the physical workspace names. The documentation ofmarshallSortcontains an example of how to get the old behaviour, whereppSortoperates in virtual names, back. -
Added
workspacesOnfor filtering workspaces on the current screen. -
Added
withScreento specify names for a given single screen. -
Added new aliases
PhysicalWindowSpaceandVirtualWindowSpacefor aWindowSpacefor easier to read function signatures. -
Added a few useful utility functions related to simplify using the module; namely
workspaceOnScreen,focusWindow',focusScreen,nthWorkspace, andwithWspOnScreen. -
Fixed wrong type-signature of
onCurrentScreen.
-
-
XMonad.Actions.CopyWindow- Added
copiesPPto make aPPaware of copies of the focused window.
- Added
-
XMonad.Actions.CycleWS-
Added
:&:,:|:andNotdata constructors toWSTypeto logically combine predicates. -
Added
hiddenWS,emptyWSandanyWSto replace deprecated constructors. -
Added
ingoringWSsas aWSTypepredicate to skip workspaces having a tag in a given list.
-
-
XMonad.Actions.DynamicWorkspaceOrder- Added
swapWithCurrentandswapOrderto the list of exported names.
- Added
-
XMonad.Actions.Submap,XMonad.Util.Ungrab:- Fixed issue with keyboard/pointer staying grabbed when a blocking action
like
runProcessWithInputwas invoked.
- Fixed issue with keyboard/pointer staying grabbed when a blocking action
like
-
XMonad.Actions.UpdateFocus- Added
focusUnderPointer, that updates the focus based on pointer position, an inverse ofX.A.UpdatePointer, which moves the mouse pointer to match the focused window). Together these can be used to ensure focus stays in sync with mouse.
- Added
-
XMonad.Layout.MultiToggle- Added
isToggleActivefor querying the toggle state of transformers. Useful to show the state in a status bar.
- Added
-
XMonad.Layout.Spacing- Removed deprecations for
spacing,spacingWithEdge,smartSpacing, andsmartSpacingWithEdge.
- Removed deprecations for
-
XMonad.Actions.DynamicWorkspaces-
Fixed a system freeze when using
X.A.CopyWindow.copyin combination withremoveWorkspace. -
withWorkspacenow honors the userssearchPredicate, for examplefuzzyMatchfromPrompt.FuzzyMatch.
-
0.16
Breaking Changes
-
XMonad.Layout.Decoration- Added
Themerecord fields for controlling decoration border width for active/inactive/urgent windows.
- Added
-
XMonad.Prompt- Prompt ships a vim-like keymap, see
vimLikeXPKeymapandvimLikeXPKeymap'. A reworked event loop supports new vim-like prompt actions. - Prompt supports dynamic colors. Colors are now specified by the
XPColortype inXPStatewhileXPConfigcolors remain unchanged for backwards compatibility. - Fixes
showCompletionOnTab. - The behavior of
moveWordandmoveWord'has changed; brought in line with the documentation and now internally consistent. The old keymaps retain the original behavior; see the documentation to do the same your XMonad configuration.
- Prompt ships a vim-like keymap, see
-
XMonad.Util.Invisble- Requires
MonadFailforReadinstance
- Requires
New Modules
-
XMonad.Layout.TwoPanePersistentA layout that is like TwoPane but keeps track of the slave window that is currently beside the master. In TwoPane, the default behavior when the master is focused is to display the next window in the stack on the slave pane. This is a problem when a different slave window is selected without changing the stack order.
-
XMonad.Util.ExclusiveScratchpadsNamed scratchpads that can be mutually exclusive: This new module extends the idea of named scratchpads such that you can define “families of scratchpads” that are exclusive on the same screen. It also allows to remove this constraint of being mutually exclusive with another scratchpad.
-
XMonad.Actions.PrefixA module that allows the user to use an Emacs-style prefix argument (raw or numeric).
Bug Fixes and Minor Changes
-
XMonad.Layout.TabbedtabbedLeft and tabbedRight will set their tabs’ height and width according to decoHeight/decoWidth
-
XMonad.PromptAdded
sortertoXPConfigused to sort the possible completions by how well they match the search string (example:XMonad.Prompt.FuzzyMatch).Fixes a potential bug where an error during prompt execution would leave the window open and keep the keyboard grabbed. See issue #180.
Fixes issue #217, where using tab to wrap around the completion rows would fail when maxComplRows is restricting the number of rows of output.
-
XMonad.Prompt.PassAdded ‘passOTPPrompt’ to support getting OTP type password. This require pass-otp (https://github.com/tadfisher/pass-otp) has been setup in the running machine.
Added ‘passGenerateAndCopyPrompt’, which both generates a new password and copies it to the clipboard. These two actions are commonly desirable to take together, e.g. when establishing a new account.
Made password prompts traverse symlinks when gathering password names for autocomplete.
-
XMonad.Actions.DynamicProjectsMake the input directory read from the prompt in
DynamicProjectsabsolute wrt the current directory.Before this, the directory set by the prompt was treated like a relative directory. This means that when you switch from a project with directory
foointo a project with directorybar, xmonad actually tries tocdintofoo/bar, instead of~/baras expected. -
XMonad.Actions.DynamicWorkspaceOrderAdd a version of
withNthWorkspacethat takes a[WorkspaceId] -> [WorkspaceId]transformation to apply over the list of workspace tags resulting from the dynamic order. -
XMonad.Actions.GroupNavigationAdd a utility function
isOnAnyVisibleWS :: Query Boolto allow easy cycling between all windows on all visible workspaces. -
XMonad.Hooks.WallpaperSetterPreserve the aspect ratio of wallpapers that xmonad sets. When previous versions would distort images to fit the screen size, it will now find a best fit by cropping instead.
-
XMonad.Util.ThemesAdd adwaitaTheme and adwaitaDarkTheme to match their respective GTK themes.
-
‘XMonad.Layout.BinarySpacePartition’
Add a new
SplitShiftDirectionalmessage that allows moving windows by splitting its neighbours. -
XMonad.Prompt.FuzzyMatchMake fuzzy sort show shorter strings first.
0.15
Breaking Changes
XMonad.Layout.Groups&XMonad.Layout.Groups.HelpersThe layout will no longer perform refreshes inside of its message handling. If you have been relying on it to in your xmonad.hs, you will need to start sending its messages in a manner that properly handles refreshing, e.g. withsendMessage.
New Modules
-
XMonad.Util.PurexUnlike the opaque
IOactions thatXactions can wrap, regular reads from theXConfand modifications to theXStateare fundamentally pure – contrary to the current treatment of such actions in most xmonad code. Pure modifications to theWindowSetcan be readily composed, but due to the need for those modifications to be properly handled bywindows, other pure changes to theXStatecannot be interleaved with those changes to theWindowSetwithout superfluous refreshes, hence breaking composability.This module aims to rectify that situation by drawing attention to it and providing
PureX: a pure type with the same monadic interface to state asX. TheXLiketypeclass enables writing actions generic over the two monads; if pure, existingXactions can be generalised with only a change to the type signature. Various other utilities are provided, in particular thedefilefunction which is needed by end-users.
Bug Fixes and Minor Changes
-
Add support for GHC 8.6.1.
-
XMonad.Actions.MessageHandlingRefresh-performing functions updated to better reflect the newsendMessage.
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.UnicodeunicodePrompt :: String -> XPConfig -> X ()now additionally takes a filepath to theUnicodeData.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 behaviorverticalScreenOrdererhorizontalScreenOrderer
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->sendMessageWithNoRefreshToCurrentBsendSM->sendSomeMessageWithNoRefreshToCurrentBsendSM_->sendSomeMessageWithNoRefreshToCurrenttryInOrder->tryInOrderWithNoRefreshToCurrentBtryInOrder_->tryInOrderWithNoRefreshToCurrenttryMessage->tryMessageWithNoRefreshToCurrentBtryMessage_->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.Hooks.RefocusLastProvides hooks and actions that keep track of recently focused windows on a per workspace basis and automatically refocus the last window on loss of the current (if appropriate as determined by user specified criteria).
-
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.ManageHelpers- Make type of ManageHook combinators more general.
- New manage hook
doSinkfor sinking windows (as upposed to thedoFloatmanage hook)
-
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. - New function
passEditPromptfor editing a password from the store. - 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 viaxdotoolinstead 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. -
XMonad.Hooks.ManageDocksnow requires an additional startup hook to be added to configuration in addition to the other 3 hooks, otherwise docks started before xmonad are covered by windows. It’s recommended to use the newly introduceddocksfunction to add all necessary hooks to xmonad config.
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.
See Also
https://wiki.haskell.org/Xmonad/Notable_changes_since_0.8