xmonad-contrib v0.17.1 Release Notes
Release Date: 2022-09-03 // about 2 years ago-
💥 Breaking Changes
XMonad.Util.EZConfig
- The functions
parseKey
,parseKeyCombo
, andparseKeySequence
now 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.NamedScratchpad
instead.
- Deprecated the module; use the new dynamic scratchpad
functionality of
XMonad.Hooks.UrgencyHook
- Deprecated
urgencyConfig
; usedef
from the newDefault
instance ofUrgencyConfig
instead.
- Deprecated
🔧 [on the website]: https://xmonad.org/configurations.html
🆕 New Modules
XMonad.Actions.PerLayoutKeys
Customizes a keybinding on a per-layout basis. Based on PerWorkspaceKeys.
XMonad.Layout.CenteredIfSingle
Layout modifier that, if only a single window is on screen, places that window in the middle of the screen.
XMonad.Util.ActionQueue
Put XMonad actions in the queue to be executed every time the
logHook
(or, alternatively, a hook of your choice) runs.XMonad.Hooks.BorderPerWindow
While 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.Parser
A wrapper around the 'ReadP' parser combinator, providing behaviour that's closer to the more popular parser combinator libraries.
XMonad.Hooks.StatusBar.WorkspaceScreen
In 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.ShowWName
Flashes the name of the current workspace when switching to it. Like
XMonad.Layout.ShowWName
, but as a logHook.XMonad.Actions.RepeatAction
A module for adding a keybinding to repeat the last action, similar to Vim's
.
or Emacs'sdot-mode
.XMonad.Util.Grab
Utilities for making grabbing and ungrabbing keys more convenient.
XMonad.Hooks.Modal
This module implements modal keybindings for xmonad.
XMonad.Layout.SideBorderDecoration
This 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
pass
functions that allow user-specified prompts.
- Added new versions of the
XMonad.Prompt.AppendFile
- Use
XMonad.Prelude.mkAbsolutePath
to 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 2024
work. - Added the ability to specify alphabetic (
#A
,#B
, and#C
) priorities at the end of the input note.
- Fixed the date parsing issue such that entries with a format of
XMonad.Prompt.Unicode
- Fixed the display of non-ASCII characters in the description of Unicode characters
XMonad.Prompt
- Added
transposeChars
to interchange the characters around the point and bound it toC-t
in 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-contrib
to be compiled withX11-xft
version 0.3.4 or higher.
- Added
XMonad.Hooks.WindowSwallowing
- Fixed windows getting lost when used in conjunction with
smartBorders
and a single window. - No longer needs
pstree
to detect child/parent relationships. - Fixed some false positives in child/parent relationship detection.
- Fixed windows getting lost when used in conjunction with
XMonad.Actions.SpawnOn
- Fixed parsing of
/proc/*/stat
to correctly handle complex process names.
- Fixed parsing of
XMonad.Util.EZConfig
- Added support for Modifier Keys
KeySym
s 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
- Flipped how
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-contrib
to be compiled withX11-xft
version 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
keysMoveWindow
fromD -> 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. Requiresxmobar
version 0.40 or higher.
- Added
XMonad.Layout.VoidBorders
- Added new layout modifier
normalBorders
which can be used for resetting borders back in layouts where you want borders after callingvoidBorders
.
- Added new layout modifier
XMonad.Prelude
- Added
keymaskToString
andkeyToString
to show a key mask and a key in the style ofXMonad.Util.EZConfig
. - Added
WindowScreen
, which is a type synonym for the specializedScreen
type, that results from theWindowSet
definition inXMonad.Core
. - Modified
mkAbsolutePath
to support a leading environment variable, so things like$HOME/NOTES
work. If you want more general environment variable support, comment on this PR.
- Added
XMonad.Util.XUtils
- Added
withSimpleWindow
,showSimpleWindow
,WindowConfig
, andWindowRect
in order to simplify the handling of simple popup windows.
- Added
XMonad.Actions.Submap
- Added
visualSubmap
to 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-Tab
is 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
dynamicNSPAction
andtoggleDynamicNSP
.
- 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
Default
instance forUrgencyConfig
andDzenUrgencyHook
.
- Added a
Other changes
- Migrated the sample build scripts from the deprecated
xmonad-testing
repo toscripts/build
. This will be followed by a documentation update in thexmonad
repo.
Previous changes from v0.17.0
-
💥 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
mkComplFunFromList
andmkComplFunFromList'
take an additionalXPConfig
argument, so that they can take into account the givensearchPredicate
. - A
complCaseSensitivity
field has been added toXPConfig
, indicating whether case-sensitivity is desired when performing completion. historyCompletion
andhistoryCompletionP
now both have anX
constraint (was:IO
), due to changes in how the xmonad core handles XDG directories.- The prompt window now sets a
WM_CLASS
property. This allows other applications, like compositors, to properly match on it.
- Now
XMonad.Hooks.EwmhDesktops
- It is no longer recommended to use
fullscreenEventHook
directly. Instead, useewmhFullscreen
which additionally advertises fullscreen support in_NET_SUPPORTED
and fixes fullscreening of applications that explicitly check it, e.g. mupdf-gl, sxiv, …
XMonad.Layout.Fullscreen.fullscreenSupport
now advertises it as well, and no configuration changes are required in this case.- Deprecated
ewmhDesktopsLogHookCustom
andewmhDesktopsEventHookCustom
; these are now replaced by a composableXMonad.Util.ExtensibleConf
-based interface. Users are advised to just use theewmh
XConfig combinator and customize behaviour using the providedaddEwmhWorkspaceSort
,addEwmhWorkspaceRename
functions, 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.Focus
module extending the ManageHook EDSL with useful combinators.- Ordering of windows that are set to
_NET_CLIENT_LIST
and_NET_CLIENT_LIST_STACKING
was changed to be closer to the spec. From now these two lists will have differently sorted windows. _NET_WM_STATE_DEMANDS_ATTENTION
was 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.
- It is no longer recommended to use
All modules still exporting a
defaultFoo
constructor- All of these were now removed. You can use the re-exported
def
fromData.Default
instead.
- All of these were now removed. You can use the re-exported
XMonad.Hooks.Script
execScriptHook
now has anX
constraint (was:MonadIO
), due to changes in how the xmonad core handles XDG directories.
XMonad.Actions.WorkspaceNames
- The type of
getWorkspaceNames
was changed to fit into the newppRename
field ofPP
.
- The type of
XMonad.Hooks.StatusBar
,XMonad.Hooks.StatusBar.PP
(previouslyXMonad.Hooks.DynamicLog
) andXMonad.Util.Run
spawnPipe
no 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 normalString
of 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
spawnPipe
behaviour,spawnPipeWithNoEncoding
can now be used, andspawnPipeWithUtf8Encoding
was added as well to force UTF-8 regardless of locale. These shouldn't normally be necessary, though.)xmonadPropLog
andxmonadPropLog'
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
maxTopicHistory
field, as well as thegetLastFocusedTopics
andsetLastFocusedTopic
functions. It is now recommended to directly useXMonad.Hooks.WorkspaceHistory
instead. - Added
TopicItem
, as well as the helper functionstopicNames
,tiActions
,tiDirs
,noAction
, andinHome
for a more convenient specification of topics.
- Deprecated the
XMonad.Actions.CycleRecentWS
- Changed the signature of
recentWS
to return a[WorkspaceId]
instead of a[WindowSet]
, whilecycleWindowSets
andtoggleWindowSets
now 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 andJumpToLayout
to the xmonad core. They are re-exported by the module, but do not add any new functionality.NewSelect
now exists as a deprecated type alias toChoose
. - Removed the
Wrap
andNextLayoutNoWrap
data constructors.
- Moved the alternative
XMonad.Actions.CycleWS
- Deprecated
EmptyWS
,HiddenWS
,NonEmptyWS
,HiddenNonEmptyWS
,HiddenEmptyWS
,AnyWS
andWSTagGroup
.
- Deprecated
XMonad.Actions.GridSelect
colorRangeFromClassName
now 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
isohunt
search engine. - Updated URLs for
codesearch
,openstreetmap
, andthesaurus
search engines. - Added
github
search engine.
- Removed outdated
🆕 New Modules
XMonad.Layout.FixedAspectRatio
Layout modifier for user provided per-window aspect ratios.
XMonad.Hooks.TaffybarPagerHints
Add 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.PP
Originally 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
shortenLeft
function, like existingshorten
but shortens by truncating from left instead of right. Useful for showing directories. - Added
shorten'
andshortenLeft'
functions with customizable overflow markers. - Added
filterOutWsPP
for filtering out certain workspaces from being displayed. - Added
xmobarBorder
for creating borders around strings andxmobarFont
for selecting an alternative font. - Added
ppRename
toPP
, which makes it possible for extensions likeworkspaceNamesPP
,marshallPP
and/orclickablePP
(which need to access the originalWorkspaceId
) to compose intuitively. - Added
ppPrinters
,WSPP
andfallbackPrinters
as a generalization of theppCurrent
,ppVisible
… sextet, which makes it possible for extensions likecopiesPP
(which acts as if there was appHiddenWithCopies
) to compose intuitively.
- Added
XMonad.Hooks.StatusBar
This 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.Hacks
A collection of hacks and fixes that should be easily acessible to users:
windowedFullscreenFix
fixes fullscreen behaviour of chromium based applications when using windowed fullscreen.javaHack
helps when dealing with Java applications that might not work well with xmonad.trayerAboveXmobarEventHook
reliably stacks trayer on top of xmobar and below other windows
XMonad.Util.ActionCycle
A module providing a simple way to implement "cycling"
X
actions, useful for things like alternating toggle-style keybindings.XMonad.Actions.RotateSome
Functions 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
surfaceNext
andsurfacePrev
actions, 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.Sift
Provide
siftUp
andsiftDown
actions, which behave likeswapUp
andswapDown
but handle the wrapping case by exchanging the windows at either end of the stack instead of rotating the stack.XMonad.Hooks.DynamicIcons
Dynamically augment workspace names logged to a status bar via DynamicLog based on the contents (windows) of the workspace.
XMonad.Hooks.WindowSwallowing
HandleEventHooks 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.TiledWindowDragging
An action that allows you to change the position of windows by dragging them around.
XMonad.Layout.ResizableThreeColumns
A layout based on
XMonad.Layout.ThreeColumns
but with each slave window's height resizable.XMonad.Layout.TallMastersCombo
A layout combinator that support Shrink, Expand, and IncMasterN just as the
Tall
layout, 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.Tabbed
as a sublayout.XMonad.Actions.PerWindowKeys
Create 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.DynamicScratchpads
Declare any window as a scratchpad on the fly. Once declared, the scratchpad behaves like
XMonad.Util.NamedScratchpad
.XMonad.Prompt.Zsh
A version of
XMonad.Prompt.Shell
that lets you use completions supplied by zsh.XMonad.Util.ClickableWorkspaces
Provides
clickablePP
, which when applied to thePP
pretty-printer used byXMonad.Hooks.StatusBar.PP
, will make the workspace tags clickable in XMobar (for switching focus).XMonad.Layout.VoidBorders
Provides a modifier that semi-permanently (requires manual intervention) disables borders for windows from the layout it modifies.
XMonad.Hooks.Focus
Extends ManageHook EDSL to work on focused windows and current workspace.
XMonad.Config.LXQt
This module provides a config suitable for use with the LXQt desktop environment.
XMonad.Prompt.OrgMode
A 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.ExtensibleConf
Extensible 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.Rescreen
Custom 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.EasyMotion
A 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.TopicSpace
throughviewTopicGroup
andpromptTopicGroupView
.
- Add support for
XMonad.Actions.TreeSelect
- Fix swapped green/blue in foreground when using Xft.
- The spawned tree-select window now sets a
WM_CLASS
property. 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
mateLogout
andmateShutdown
actions available. - Add mod-d keybinding to open the Mate main menu.
- Split out the logout dialog and add a shutdown dialog. The default behavior
remains the same but there are now
XMonad.Actions.DynamicProjects
- The
changeProjectDirPrompt
function respects thecomplCaseSensitivity
field ofXPConfig
when performing directory completion. modifyProject
is now exported.
- The
XMonad.Layout.WorkspaceDir
- The
changeDir
function respects thecomplCaseSensitivity
field ofXPConfig
when performing directory completion. Chdir
message is exported, so it's now possible to change the directory programmaticaly, not just via a user prompt.
- The
XMonad.Prompt.Directory
- Added
directoryMultipleModes'
, likedirectoryMultipleModes
with an additionalComplCaseSensitivity
argument. - Directory completions are now sorted.
- The
Dir
constructor now takes an additionalComplCaseSensitivity
argument to indicate whether directory completion is case sensitive.
- Added
XMonad.Prompt.FuzzyMatch
fuzzySort
will now accept cases where the input is not a subsequence of every completion.
XMonad.Prompt.Shell
- Added
getShellCompl'
, likegetShellCompl
with an additionalComplCaseSensitivity
argument. - Added
compgenDirectories
andcompgenFiles
to 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.
- Added
XMonad.Prompt.Unicode
- Reworked internally to call
spawnPipe
(asynchronous) instead ofrunProcessWithInput
(synchronous), which fixestypeUnicodePrompt
. - Now respects
searchPredicate
andsorter
from user-suppliedXPConfig
.
- Reworked internally to call
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.StatusBar
orX.H.StatusBar.PP
- Added
XMonad.Layout.BoringWindows
- Added boring-aware
swapUp
,swapDown
,siftUp
, andsiftDown
functions. - Added
markBoringEverywhere
function, to mark the currently focused window boring on all layouts, when usingXMonad.Actions.CopyWindow
.
- Added boring-aware
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.spawnHere
to initially start the scratchpad on the workspace it was launched on)
- Deprecated
namedScratchpadFilterOutWorkspace
andnamedScratchpadFilterOutWorkspacePP
. UseXMonad.Util.WorkspaceCompare.filterOutWs
respectivelyXMonad.Hooks.DynamicLog.filterOutWsPP
instead. - Exported the
scratchpadWorkspaceTag
. - Added a new logHook
nsHideOnFocusLoss
for hiding scratchpads when they lose focus.
- Added two new exported functions to the module:
XMonad.Prompt.Window
- Added
allApplications
function which maps application executable names to its underlying window. - Added a
WithWindow
constructor toWindowPrompt
to allow executing actions of typeWindow -> X ()
on the chosen window.
- Added
XMonad.Prompt.WindowBringer
- Added
windowAppMap
function which maps application executable names to its underlying window. - A new field
windowFilter
was 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.
- Added
XMonad.Actions.Search
- The
hoogle
function 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).
- The
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
cycleRecentNonEmptyWS
function which behaves likecycleRecentWS
but is constrainded to non-empty workspaces. - Added
toggleRecentWS
andtoggleRecentNonEmptyWS
functions 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
recentWS
function which allows the recency list to be filtered with a user-provided predicate.
- Added
XMonad.Layout.Hidden
- Export
HiddenWindows
type constructor. - Export
popHiddenWindow
function restoring a specific window.
- Export
XMonad.Hooks.ManageDocks
- Export
AvoidStruts
constructor - 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
docks
combinator,xmonad --recompile
now 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.- Export
XMonad.Hooks.ManageHelpers
- Export
doSink
- Added
doLower
anddoRaise
- Added
shiftToSame
andclientLeader
which allow a hook to be created that shifts a window to the workspace of other windows of the application (using either theWM_CLIENT_LEADER
or_NET_WM_PID
property). - Added
windowTag
- Added
(^?)
,(~?)
and($?)
operators as infix versions ofisPrefixOf
,isInfixOf
andisSuffixOf
working withManageHook
s.
- Export
XMonad.Util.EZConfig
- Added support for XF86Bluetooth.
XMonad.Util.Loggers
- Make
battery
andloadAvg
distro-independent. - Added
logTitleOnScreen
,logCurrentOnScreen
andlogLayoutOnScreen
as screen-specific variants oflogTitle
,logCurrent
andlogLayout
. - Added
logWhenActive
to have loggers active only when a certain screen is active. - Added
logConst
to log a constantString
, andlogDefault
(infix:.|
) to combine loggers. - Added
logTitles
to log all window titles (focused and unfocused ones) on the focused workspace, as well aslogTitlesOnScreen
as a screen-specific variant thereof. - Added
logTitles'
andlogTitleOnScreen'
. These act likelogTitles
andlogTitlesOnScreen
but use a record as an input to enable logging for more window types. For example, currently urgent windows are additionally supported.
- Make
XMonad.Layout.Minimize
- Export
Minimize
type constructor.
- Export
XMonad.Actions.WorkspaceNames
- Added
workspaceNamesEwmh
which makes workspace names visible to external pagers.
- Added
XMonad.Util.PureX
- Added
focusWindow
andfocusNth
which don't refresh (and thus possibly flicker) when they happen to be a no-op. - Added
shiftWin
as a refresh tracking version ofW.shiftWin
.
- Added
Several
LayoutClass
instances now have an additionalTypeable
constraint which may break some advanced configs. The upside is that we can now addTypeable
toLayoutClass
inXMonad.Core
and make it possible to introspect the current layout and its modifiers.XMonad.Actions.TopicSpace
switchTopic
now correctly updates the last used topics.setLastFocusedTopic
will now check whether we have exceeded themaxTopicHistory
and prune the topic history as necessary, as well as cons the given topic onto the list before filtering it.- Added
switchNthLastFocusedExclude
, which works likeswitchNthLastFocused
but is able to exclude certain topics. - Added
switchTopicWith
, which works likeswitchTopic
, but one is able to givesetLastFocusedTopic
a custom filtering function as well. - Instead of a hand-rolled history, use the one from
XMonad.Hooks.WorkspaceHistory
. - Added the screen-aware functions
getLastFocusedTopicsByScreen
andswitchNthLastFocusedByScreen
.
XMonad.Hooks.WorkspaceHistory
- Added
workspaceHistoryModify
to modify the workspace history with a pure function. - Added
workspaceHistoryHookExclude
for excluding certain workspaces to ever enter the history.
- Added
XMonad.Util.DebugWindow
- Fixed a bottom in
debugWindow
when used on windows with UTF8 encoded titles.
- Fixed a bottom in
XMonad.Config.Xfce
- Set
terminal
toxfce4-terminal
.
- Set
XMonad.Hooks.WorkspaceCompare
- Added
filterOutWs
for workspace filtering.
- Added
XMonad.Prompt
- Accommodate completion of multiple words even when
alwaysHighlight
is enabled. - Made the history respect words that were "completed" by
alwaysHighlight
upon 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
TAB
again. - Added
maxComplColumns
field toXPConfig
, to limit the number of columns in the completion window. - Redefine
ComplCaseSensitivity
to a proper sum type as opposed to anewtype
wrapper aroundBool
.
- Accommodate completion of multiple words even when
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
OnlyFloat
constructor toAmbiguity
to 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 andclearUrgents
now clear the_NET_WM_STATE_DEMANDS_ATTENTION
bit as well. - Added a variant of
filterUrgencyHook
that takes a genericQuery Bool
to select which windows should never be marked urgent. - Added
askUrgent
and adoAskUrgent
manage hook helper for marking windows as urgent from inside of xmonad. This can be used as a less intrusive action for windows requesting focus.
- It's now possible to clear urgency of selected windows only using the
newly exported
XMonad.Hooks.ServerMode
- To make it easier to use, the
xmonadctl
client 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
magnifierczOff
andmagnifierczOff'
for custom-size magnifiers that start out with magnifying disabled. - Added
magnify
as a more general combinator, including the ability to postpone magnifying until there are a certain number of windows on the workspace.
- Added
XMonad.Layout.Renamed
- Added
KeepWordsLeft
andKeepWordsRight
for keeping certain number of words in left or right direction in layout description.
- Added
XMonad.Hooks.WallpaperSetter
- Added
defWPNamesPng
, which works likedefWPNames
but mapsws-name
tows-name.png
instead ofws-name.jpg
. - Added
defWPNamesJpg
as an alias todefWPNames
and deprecated the latter.
- Added
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_CLASS
property. This allows other applications, like compositors, to properly match on it.
- The decoration window now sets a
XMonad.Layout.IndependentScreens
- Fixed a bug where
marshallPP
always sorted workspace names lexically. This changes the default behaviour ofmarshallPP
—the givenppSort
now operates in the physical workspace names. The documentation ofmarshallSort
contains an example of how to get the old behaviour, whereppSort
operates in virtual names, back. - Added
workspacesOn
for filtering workspaces on the current screen. - Added
withScreen
to specify names for a given single screen. - Added new aliases
PhysicalWindowSpace
andVirtualWindowSpace
for aWindowSpace
for 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
.
- Fixed a bug where
XMonad.Actions.CopyWindow
- Added
copiesPP
to make aPP
aware of copies of the focused window.
- Added
XMonad.Actions.CycleWS
- Added
:&:
,:|:
andNot
data constructors toWSType
to logically combine predicates. - Added
hiddenWS
,emptyWS
andanyWS
to replace deprecated constructors. - Added
ingoringWSs
as aWSType
predicate to skip workspaces having a tag in a given list.
- Added
XMonad.Actions.DynamicWorkspaceOrder
- Added
swapWithCurrent
andswapOrder
to the list of exported names.
- Added
XMonad.Actions.Submap
,XMonad.Util.Ungrab
:- Fixed issue with keyboard/pointer staying grabbed when a blocking action
like
runProcessWithInput
was 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
isToggleActive
for 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.copy
in combination withremoveWorkspace
. withWorkspace
now honors the userssearchPredicate
, for examplefuzzyMatch
fromPrompt.FuzzyMatch
.
- Fixed a system freeze when using