2024-02-03
xmonad and xmonad-contrib 0.18.0 are available
New versions of xmonad and xmonad-contrib have been released. Check out our download page for instructions on where to get them.
As this is a major release containing a few breaking changes inside of xmonad-contrib
,
so be sure to check out the release notes!
For help getting started—or more info—see our website and talk to us!
If you like what we do, you can support us on Open Collective or via GitHub Sponsors.
Thanks!
Table of Contents
xmonad 0.18.0
This release includes 85 non-merge commits by 15 contributors! For a full summary of all the changes, see xmonad’s CHANGES.md file.
Breaking Changes
- Dropped support for GHC 8.4.
Selected Features and Improvements
-
XMonad.Operations.floatLocation
now applies size hints. This means windows will snap to these hints as soon as they’re floated (mouse move, keybinding). Previously that only happened on mouse resize. -
Recompilation now detects
flake.nix
anddefault.nix
(can be a symlink) and switches to usingnix build
as appropriate. -
Added
unGrab
toXMonad.Operations
; this releases XMonad’s passive keyboard grab, so other applications (likescrot
) can do their thing. -
Duplicated floats (e.g. from X.A.CopyToAll) no longer escape to inactive screens.
xmonad-contrib 0.18.0
This release includes 195 non-merge commits by 25 contributors! For a full summary of all the changes, see xmonad-contrib’s CHANGES.md file.
Major Breaking Changes
-
Dropped support for GHC 8.4.
-
Deprecated
XMonad.Layout.Cross
due to bitrot; refer toXMonad.Layout.Circle
andXMonad.Layout.ThreeColumns
for alternatives. -
Deprecated the
XMonad.Layout.StateFull
module andXMonad.Layout.TrackFloating.(t|T)rackFloating
in favour ofXMonad.Layout.FocusTracking
. -
XMonad.Util.ExclusiveScratchpads
andXMonad.Util.Scratchpad
- Deprecated these modules in favour of
XMonad.Util.NamedScratchpad
.
- Deprecated these modules in favour of
-
XMonad.Actions.CycleWorkspaceByScreen
- The type of
repeatableAction
has 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.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 core.
-
XMonad.Layout.LayoutBuilderP
- Removed deprecated module; use
XMonad.Layout.LayoutBuilder
instead.
- Removed deprecated module; use
-
XMonad.Hooks.RestoreMinimized
- Removed deprecated module; use
XMonad.Hooks.Minimize
instead.
- Removed deprecated module; use
-
XMonad.Layout.Named
- Deprecated the entire module, use
XMonad.Layout.Renamed
(which newly providesnamed
for convenience) instead.
- Deprecated the entire module, use
-
XMonad.Actions.SinkAll
- Deprecated the entire module, use
XMonad.Actions.WithAll
instead.
- Deprecated the entire module, use
-
XMonad.Layout.Circle
:- Deprecated the entire module, use the
circle
function fromXMonad.Layout.CircleEx
instead.
- Deprecated the entire module, use the
-
XMonad.Hooks.EwmhDesktops
_NET_CLIENT_LIST_STACKING
puts 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.
-
Deprecated
XMonad.Util.Ungrab
; it was moved toXMonad.Operations
in core.
Selected Features and improvements
-
XMonad.Layout.CenterMainFluid
- A three column layout with the main column in the center and two stack column surrounding it. The master window will be on the center column and spaces on the sides are reserved.
-
XMonad.Layout.FocusTracking
.- Replaces
X.L.StateFull
and 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.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
XMonad.Layout.Circle
, but with more possibilities for customisation.
- A new window layout, similar to
-
XMonad.Util.NamedScratchpad
- Added
nsSingleScratchpadPerWorkspace
—a logHook to allow only one active scratchpad per workspace.
- Added
-
XMonad.Util.EZConfig
- Added
remapKeysP
, which remaps keybindings from one binding to another.
- Added
-
XMonad.Util.NamedScratchpad
- Added
addExclusives
,resetFocusedNSP
,setNoexclusive
,resizeNoexclusive
, andfloatMoveNoexclusive
in order to augment named scratchpads with the exclusive scratchpad functionality ofXMonad.Util.ExclusiveScratchpads
.
- Added
-
XMonad.Layout.BorderResize
- Added
borderResizeNear
as a variant ofborderResize
that can control how many pixels near a border resizing still works.
- Added
-
XMonad.Util.Run
-
Added
findFile
,list
, andsaveExcursion
to the list of Emacs commands. -
Added
toList
to easily lift aString
to anX Input
. -
Added
>&&>
and>||>
to glue together different inputs.
-
-
XMonad.Actions.Navigation2D
- Added
sideNavigation
as a fallback to the default tiling strategy, in caselineNavigation
can’t find a window. This benefits especially users who useXMonad.Layout.Spacing
.
- Added
-
XMonad.Prompt.OrgMode
-
Added
orgPromptRefile
andorgPromptRefileTo
for interactive and targeted refiling of the entered note into some existing tree of headings, respectively. -
Allowed the time specification in
HHMM
format.
-
-
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
, andzbmath
search engines.
- Added
-
XMonad.Layout.ResizableThreeColumns
- Fixed an issue where the bottom right window would not respond to
MirrorShrink
andMirrorExpand
messages.
- Fixed an issue where the bottom right window would not respond to
-
XMonad.Hooks.EwmhDesktops
-
Added
disableEwmhManageDesktopViewport
to avoid setting the_NET_DESKTOP_VIEWPORT
property, as it can lead to issues with some status bars (see this polybar issue). -
Added
setEwmhFullscreenHooks
to override the default fullfloat/sink behaviour of_NET_WM_STATE_FULLSCREEN
requests. See alsoXMonad.Actions.ToggleFullFloat
for a float-restoring implementation of fullscreening. -
Added
ewmhDesktops(Maybe)ManageHook
that places windows in their preferred workspaces. This is useful when restoring a browser session after a restart.
-
-
XMonad.Hooks.StatusBar
- Added
startAllStatusBars
to start the configured status bars.
- Added
-
XMonad.Prompt
-
The
emacsLikeXPKeymap
andvimLikeXPKeymap
keymaps now treatC-m
the same asReturn
; the latter keymap now also accepts the prompt upon pressing enter in normal mode. -
Added
prevCompletionKey
toXPConfig
, facilitating the ability to cycle through the completions backwards. This is bound toS-<TAB>
by default.
-
-
XMonad.Actions.Prefix
- Added
orIfPrefixed
, a combinator to decide upon an action based on whether any prefix argument was given.
- Added
-
XMonad.Prompt.Pass
- Added
passOTPTypePrompt
to type out one-time-passwords viaxdotool
.
- Added