mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 03:20:21 -07:00
2181 lines
76 KiB
Markdown
2181 lines
76 KiB
Markdown
# Change Log / Release Notes
|
|
|
|
## _unreleased_
|
|
|
|
### Breaking Changes
|
|
|
|
### New Modules
|
|
|
|
* `XMonad.Actions.Profiles`.
|
|
|
|
- Group workspaces by similarity. Usefull when one has lots
|
|
of workspaces and uses only a couple per unit of work.
|
|
|
|
### Bug Fixes and Minor Changes
|
|
|
|
* Fix build-with-cabal.sh when XDG_CONFIG_HOME is defined.
|
|
|
|
* `XMonad.Util.EZConfig`
|
|
|
|
- Fixed `checkKeymap` warning that all keybindings are duplicates.
|
|
|
|
### Other changes
|
|
|
|
## 0.18.0 (February 3, 20
|
|
|
|
### Breaking Changes
|
|
|
|
* Deprecated `XMonad.Layout.Cross` due to bitrot; refer to
|
|
`XMonad.Layout.Circle` and `XMonad.Layout.ThreeColumns` for
|
|
alternatives.
|
|
|
|
* Deprecated the `XMonad.Layout.StateFull` module and
|
|
`XMonad.Layout.TrackFloating.(t|T)rackFloating` in favour of
|
|
`XMonad.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`.
|
|
|
|
* `XMonad.Actions.CycleWorkspaceByScreen`
|
|
|
|
- The type of `repeatableAction` has changed, and it's deprecated in
|
|
favour of `X.A.Repeatable.repeatable`.
|
|
|
|
* `XMonad.Hooks.DynamicProperty`
|
|
|
|
- Deprecated the module in favour of the more aptly named
|
|
`XMonad.Hooks.OnPropertyChange`.
|
|
|
|
* `XMonad.Util.Scratchpad`:
|
|
|
|
- Deprecated the module; use `XMonad.Util.NamedScratchpad` instead.
|
|
|
|
* `XMonad.Actions.Navigation2D`
|
|
|
|
- Removed deprecated function `hybridNavigation`.
|
|
|
|
* `XMonad.Layout.Spacing`
|
|
|
|
- Removed deprecated functions `SpacingWithEdge`, `SmartSpacing`,
|
|
`SmartSpacingWithEdge`, `ModifySpacing`, `setSpacing`, and
|
|
`incSpacing`.
|
|
|
|
* `XMonad.Actions.MessageFeedback`
|
|
|
|
- Removed deprecated functions `send`, `sendSM`, `sendSM_`,
|
|
`tryInOrder`, `tryInOrder_`, `tryMessage`, and `tryMessage_`.
|
|
|
|
* `XMonad.Prompt.Window`
|
|
|
|
- Removed deprecated functions `windowPromptGoto`,
|
|
`windowPromptBring`, and `windowPromptBringCopy`.
|
|
|
|
* `XMonad.Hooks.ICCCMFocus`
|
|
|
|
- Removed deprecated module. This was merged into xmonad.
|
|
|
|
* `XMonad.Layout.LayoutBuilderP`
|
|
|
|
- Removed deprecated module; use `XMonad.Layout.LayoutBuilder`
|
|
instead.
|
|
|
|
* `XMonad.Hooks.RestoreMinimized`
|
|
|
|
- Removed deprecated module; use `XMonad.Hooks.Minimize` instead.
|
|
|
|
* `XMonad.Layout.Named`
|
|
|
|
- Deprecated the entire module, use `XMonad.Layout.Renamed` (which newly
|
|
provides `named` for convenience) instead.
|
|
|
|
* `XMonad.Actions.SinkAll`
|
|
|
|
- Deprecated the entire module, use `XMonad.Actions.WithAll`
|
|
instead.
|
|
|
|
* `XMonad.Layout.Circle`:
|
|
|
|
- Deprecated the entire module, use the `circle` function from
|
|
`XMonad.Layout.CircleEx` instead.
|
|
|
|
* `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.
|
|
|
|
* `XMonad.Util.NamedScratchpad`
|
|
|
|
- Added `nsSingleScratchpadPerWorkspace`—a logHook to allow only one
|
|
active scratchpad per workspace.
|
|
|
|
* `XMonad.Util.EZConfig`
|
|
|
|
- The function `readKeySequence` now returns a non-empty list if it
|
|
succeeded.
|
|
|
|
* Deprecate `XMonad.Util.Ungrab`; it was moved to `XMonad.Operations`
|
|
in 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.StateFull` and half of `X.L.TrackFloating`.
|
|
|
|
* `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.
|
|
|
|
* `XMonad.Actions.Repeatable`
|
|
|
|
- Actions you'd like to repeat. Factors out the shared logic of
|
|
`X.A.CycleRecentWS`, `X.A.CycleWorkspaceByScreen` and `X.A.CycleWindows`.
|
|
|
|
* `XMonad.Hooks.OnPropertyChange`:
|
|
|
|
- A new module replicating the functionality of
|
|
`XMonad.Hooks.DynamicProperty`, but with more discoverable names.
|
|
|
|
* `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`.
|
|
|
|
* `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 `magnifyxy` to allow for different magnification in the
|
|
horizontal and vertical directions. Added `magnifierxy`,
|
|
`magnifierxy'`, `magnifierxyOff`, and `magnifierxyOff'` as
|
|
particular combinators.
|
|
|
|
* `XMonad.Util.Loggers`
|
|
|
|
- Added `logClassname`, `logClassnames`, `logClassnames'`,
|
|
`logClassnameOnScreen`, `logClassnamesOnScreen`, `logClassnamesOnScreen'`,
|
|
and `ClassnamesFormat`. These are all equivalents of their `Title`
|
|
counterparts, allowing logging the window classname instead.
|
|
|
|
* `XMonad.Hooks.StatusBar.PP`
|
|
|
|
- `dynamicLogString` now forces its result and produces an error string if
|
|
it throws an exception. Use `dynamicLogString'` 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}MouseBindings` `infixl 4` so they can more easily
|
|
be concatenated with `(++)`.
|
|
|
|
* `XMonad.Util.NamedScratchpad`
|
|
|
|
- Added `addExclusives`, `resetFocusedNSP`, `setNoexclusive`,
|
|
`resizeNoexclusive`, and `floatMoveNoexclusive` in order to augment
|
|
named scratchpads with the exclusive scratchpad functionality of
|
|
`XMonad.Util.ExclusiveScratchpads`.
|
|
|
|
* `XMonad.Layout.BorderResize`
|
|
|
|
- Added `borderResizeNear` as a variant of `borderResize` that can
|
|
control how many pixels near a border resizing still works.
|
|
|
|
* `XMonad.Util.Run`
|
|
|
|
- It is now ensured that all arguments of `execute` and `eval` are
|
|
quoted. Likewise, `executeNoQuote` is added as a version of
|
|
`execute` that does not do that.
|
|
|
|
- Added `findFile` as a shorthand to call `find-file`.
|
|
|
|
- Added `list` and `saveExcursion` to the list of Emacs commands.
|
|
|
|
- Added `toList` to easily lift a `String` to an `X Input`.
|
|
|
|
- Added `>&&>` and `>||>` to glue together different inputs.
|
|
|
|
* `XMonad.Util.Parser`
|
|
|
|
- Added the `gather`, `count`, `between`, `option`, `optionally`,
|
|
`skipMany`, `skipMany1`, `chainr`, `chainr1`, `chainl`, `chainl1`,
|
|
and `manyTill` functions, in order to achieve feature parity with
|
|
`Text.ParserCombinators.ReadP`.
|
|
|
|
* `XMonad.Actions.FloatKeys`
|
|
|
|
- Added `directionMoveWindow` and `directionMoveWindow` as more
|
|
alternatives to the existing functions.
|
|
|
|
* `XMonad.Hooks.InsertPosition`
|
|
|
|
- Added `setupInsertPosition` as a combinator alternative to
|
|
`insertPosition`.
|
|
|
|
* `XMonad.Actions.Navigation2D`
|
|
|
|
- Added `sideNavigation` as a fallback to the default tiling strategy,
|
|
in case `lineNavigation` can't find a window. This benefits
|
|
especially users who use `XMonad.Layout.Spacing`.
|
|
|
|
* `XMonad.Prompt.OrgMode`
|
|
|
|
- Added `orgPromptRefile` and `orgPromptRefileTo` 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`,
|
|
and `zbmath` search engines.
|
|
|
|
* `XMonad.Layout.ResizableThreeColumns`
|
|
|
|
- Fixed an issue where the bottom right window would not respond to
|
|
`MirrorShrink` and `MirrorExpand` messages.
|
|
|
|
* `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](https://github.com/polybar/polybar/issues/2603)).
|
|
|
|
- Added `setEwmhFullscreenHooks` to override the default fullfloat/sink
|
|
behaviour of `_NET_WM_STATE_FULLSCREEN` requests. See also
|
|
`XMonad.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.
|
|
|
|
* `XMonad.Util.NamedActions`
|
|
|
|
- Changed `addDescrKeys` and `addDescrKeys'` to not discard the
|
|
keybindings in the current config.
|
|
|
|
* `XMonad.Prompt`
|
|
|
|
- The `emacsLikeXPKeymap` and `vimLikeXPKeymap` keymaps now treat
|
|
`C-m` the same as `Return`.
|
|
|
|
- Added `prevCompletionKey` to `XPConfig`, facilitating the ability
|
|
to cycle through the completions backwards. This is bound to
|
|
`S-<TAB>` by default.
|
|
|
|
- The `vimLikeXPKeymap` now 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.
|
|
|
|
* `XMonad.Actions.WorkspaceNames`
|
|
|
|
- Enabled prompt completion (from history) in `renameWorkspace`.
|
|
|
|
* `XMonad.Prompt.Pass`
|
|
|
|
- Added `passOTPTypePrompt` to type out one-time-passwords via
|
|
`xdotool`.
|
|
|
|
* `XMonad.Util.Stack`
|
|
|
|
- Added `zipperFocusedAtFirstOf` to differentiate two lists into a
|
|
zipper.
|
|
|
|
## 0.17.1 (September 3, 2022)
|
|
|
|
### Breaking Changes
|
|
|
|
* `XMonad.Util.EZConfig`
|
|
|
|
- The functions `parseKey`, `parseKeyCombo`, and `parseKeySequence`
|
|
now return a `Parser` (from `XMonad.Util.Parser`) instead of a
|
|
`ReadP`.
|
|
|
|
* `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 like `namedScratchpadAction` (as is shown
|
|
in the module's documentation) should _not_ notice any difference
|
|
in behaviour.
|
|
|
|
* `XMonad.Util.DynamicScratchpads`
|
|
|
|
- Deprecated the module; use the new dynamic scratchpad
|
|
functionality of `XMonad.Util.NamedScratchpad` instead.
|
|
|
|
* `XMonad.Hooks.UrgencyHook`
|
|
|
|
- Deprecated `urgencyConfig`; use `def` from the new `Default`
|
|
instance of `UrgencyConfig` instead.
|
|
|
|
[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's `dot-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.
|
|
|
|
* `XMonad.Prompt.AppendFile`
|
|
|
|
- Use `XMonad.Prelude.mkAbsolutePath` to force names to be relative to the
|
|
home directory and support `~/` prefixes.
|
|
|
|
* `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.
|
|
|
|
* `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 to `C-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 requires
|
|
`xmonad-contrib` to be compiled with `X11-xft` version 0.3.4 or
|
|
higher.
|
|
|
|
* `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.
|
|
|
|
* `XMonad.Actions.SpawnOn`
|
|
|
|
- Fixed parsing of `/proc/*/stat` to correctly handle complex process names.
|
|
|
|
* `XMonad.Util.EZConfig`
|
|
|
|
- Added support for Modifier Keys `KeySym`s for Emacs-like `additionalKeysP`.
|
|
|
|
* `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 requires
|
|
`xmonad-contrib` to be compiled with `X11-xft` version 0.3.4 or
|
|
higher.
|
|
|
|
* `XMonad.Actions.FloatKeys`
|
|
|
|
- Changed type signature of `keysMoveWindow` from `D -> Window -> X ()`
|
|
to `ChangeDim -> Window -> X ()` to allow negative numbers without compiler warnings.
|
|
|
|
* `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. Requires `xmobar`
|
|
version 0.40 or higher.
|
|
|
|
* `XMonad.Layout.VoidBorders`
|
|
|
|
- Added new layout modifier `normalBorders` which can be used for
|
|
resetting borders back in layouts where you want borders after calling
|
|
`voidBorders`.
|
|
|
|
* `XMonad.Prelude`
|
|
|
|
- Added `keymaskToString` and `keyToString` to show a key mask and a
|
|
key in the style of `XMonad.Util.EZConfig`.
|
|
|
|
- Added `WindowScreen`, which is a type synonym for the specialized `Screen`
|
|
type, that results from the `WindowSet` definition in `XMonad.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].
|
|
|
|
* `XMonad.Util.XUtils`
|
|
|
|
- Added `withSimpleWindow`, `showSimpleWindow`, `WindowConfig`, and
|
|
`WindowRect` in order to simplify the handling of simple popup
|
|
windows.
|
|
|
|
* `XMonad.Actions.Submap`
|
|
|
|
- Added `visualSubmap` to visualise the available keys and their
|
|
actions when inside a submap.
|
|
|
|
* `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)`.
|
|
|
|
* `XMonad.Util.NamedScratchpad`
|
|
|
|
- Added support for dynamic scratchpads in the form of
|
|
`dynamicNSPAction` and `toggleDynamicNSP`.
|
|
|
|
* `XMonad.Hooks.EwmhDesktops`
|
|
|
|
- Added support for `_NET_DESKTOP_VIEWPORT`, which is required by
|
|
some status bars.
|
|
|
|
* `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 for `UrgencyConfig` and `DzenUrgencyHook`.
|
|
|
|
[this PR]: https://github.com/xmonad/xmonad-contrib/pull/744
|
|
[priorities]: https://orgmode.org/manual/Priorities.html
|
|
|
|
### Other changes
|
|
|
|
* Migrated the sample build scripts from the deprecated `xmonad-testing` repo to
|
|
`scripts/build`. This will be followed by a documentation update in the `xmonad`
|
|
repo.
|
|
|
|
## 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 `mkComplFunFromList` and `mkComplFunFromList'` take an
|
|
additional `XPConfig` argument, so that they can take into
|
|
account the given `searchPredicate`.
|
|
|
|
- A `complCaseSensitivity` field has been added to `XPConfig`, indicating
|
|
whether case-sensitivity is desired when performing completion.
|
|
|
|
- `historyCompletion` and `historyCompletionP` now both have an `X`
|
|
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.
|
|
|
|
* `XMonad.Hooks.EwmhDesktops`
|
|
|
|
- It is no longer recommended to use `fullscreenEventHook` directly.
|
|
Instead, use `ewmhFullscreen` 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` and `ewmhDesktopsEventHookCustom`;
|
|
these are now replaced by a composable `XMonad.Util.ExtensibleConf`-based
|
|
interface. Users are advised to just use the `ewmh` XConfig combinator
|
|
and customize behaviour using the provided `addEwmhWorkspaceSort`,
|
|
`addEwmhWorkspaceRename` functions, or better still, use integrations
|
|
provided by modules such as `XMonad.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 by
|
|
`UrgencyHook`. This enables certain applications (e.g. kitty terminal
|
|
emulator) that check whether the hint is supported to use it.
|
|
|
|
* All modules still exporting a `defaultFoo` constructor
|
|
|
|
- All of these were now removed. You can use the re-exported `def` from
|
|
`Data.Default` instead.
|
|
|
|
* `XMonad.Hooks.Script`
|
|
|
|
- `execScriptHook` now has an `X` 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 new `ppRename`
|
|
field of `PP`.
|
|
|
|
* `XMonad.Hooks.StatusBar`, `XMonad.Hooks.StatusBar.PP` (previously
|
|
`XMonad.Hooks.DynamicLog`) and `XMonad.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 normal
|
|
`String` 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, and `spawnPipeWithUtf8Encoding` was added as well to force
|
|
UTF-8 regardless of locale. These shouldn't normally be necessary, though.)
|
|
|
|
- `xmonadPropLog` and `xmonadPropLog'` now encode the String in UTF-8.
|
|
Again, no change when used together with `dynamicLogString`, but other
|
|
uses of these in user configs might need to be adapted.
|
|
|
|
* `XMonad.Actions.TopicSpace`
|
|
|
|
- Deprecated the `maxTopicHistory` field, as well as the
|
|
`getLastFocusedTopics` and `setLastFocusedTopic` functions. It is
|
|
now recommended to directly use `XMonad.Hooks.WorkspaceHistory`
|
|
instead.
|
|
|
|
- Added `TopicItem`, as well as the helper functions `topicNames`,
|
|
`tiActions`, `tiDirs`, `noAction`, and `inHome` for a more
|
|
convenient specification of topics.
|
|
|
|
* `XMonad.Actions.CycleRecentWS`
|
|
|
|
- Changed the signature of `recentWS` to return a `[WorkspaceId]`
|
|
instead of a `[WindowSet]`, while `cycleWindowSets` and
|
|
`toggleWindowSets` now take a function `WindowSet ->
|
|
[WorkspaceId]` instead of one to `[WindowSet]` as their first
|
|
argument. This fixes the interplay between this module and any
|
|
layout that stores state.
|
|
|
|
* `XMonad.Layout.LayoutCombinators`
|
|
|
|
- Moved the alternative `(|||)` function and `JumpToLayout` 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 to `Choose`.
|
|
|
|
- Removed the `Wrap` and `NextLayoutNoWrap` data constructors.
|
|
|
|
- `XMonad.Actions.CycleWS`
|
|
|
|
- Deprecated `EmptyWS`, `HiddenWS`, `NonEmptyWS`, `HiddenNonEmptyWS`,
|
|
`HiddenEmptyWS`, `AnyWS` and `WSTagGroup`.
|
|
|
|
- `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`, and `thesaurus`
|
|
search engines.
|
|
|
|
- Added `github` search engine.
|
|
|
|
### 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 with `logHook`.
|
|
|
|
Below are changes from `XMonad.Hooks.DynamicLog`, that now are included in
|
|
this module:
|
|
|
|
- Added `shortenLeft` function, like existing `shorten` but shortens by
|
|
truncating from left instead of right. Useful for showing directories.
|
|
|
|
- Added `shorten'` and `shortenLeft'` functions with customizable overflow
|
|
markers.
|
|
|
|
- Added `filterOutWsPP` for filtering out certain workspaces from being
|
|
displayed.
|
|
|
|
- Added `xmobarBorder` for creating borders around strings and
|
|
`xmobarFont` for selecting an alternative font.
|
|
|
|
- Added `ppRename` to `PP`, which makes it possible for extensions like
|
|
`workspaceNamesPP`, `marshallPP` and/or `clickablePP` (which need to
|
|
access the original `WorkspaceId`) to compose intuitively.
|
|
|
|
- Added `ppPrinters`, `WSPP` and `fallbackPrinters` as a generalization of
|
|
the `ppCurrent`, `ppVisible`… sextet, which makes it possible for
|
|
extensions like `copiesPP` (which acts as if there was a
|
|
`ppHiddenWithCopies`) to compose intuitively.
|
|
|
|
* `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` and `surfacePrev` 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` and `siftDown` actions, which behave like `swapUp` and `swapDown`
|
|
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 using
|
|
`XMonad.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 the `PP` pretty-printer used by
|
|
`XMonad.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](https://orgmode.org/). 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](https://github.com/easymotion/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.
|
|
|
|
* `XMonad.Prompt.XMonad`
|
|
|
|
- Added `xmonadPromptCT`, which allows you to create an XMonad
|
|
prompt with a custom title.
|
|
|
|
* `XMonad.Actions.DynamicWorkspaceGroups`
|
|
|
|
- Add support for `XMonad.Actions.TopicSpace` through `viewTopicGroup` and
|
|
`promptTopicGroupView`.
|
|
|
|
* `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` and `mateShutdown` actions
|
|
available.
|
|
|
|
- Add mod-d keybinding to open the Mate main menu.
|
|
|
|
* `XMonad.Actions.DynamicProjects`
|
|
|
|
- The `changeProjectDirPrompt` function respects the `complCaseSensitivity` field
|
|
of `XPConfig` when performing directory completion.
|
|
|
|
- `modifyProject` is now exported.
|
|
|
|
* `XMonad.Layout.WorkspaceDir`
|
|
|
|
- The `changeDir` function respects the `complCaseSensitivity` field of `XPConfig`
|
|
when performing directory completion.
|
|
|
|
- `Chdir` message is exported, so it's now possible to change the
|
|
directory programmaticaly, not just via a user prompt.
|
|
|
|
* `XMonad.Prompt.Directory`
|
|
|
|
- Added `directoryMultipleModes'`, like `directoryMultipleModes` with an additional
|
|
`ComplCaseSensitivity` argument.
|
|
|
|
- Directory completions are now sorted.
|
|
|
|
- The `Dir` constructor now takes an additional `ComplCaseSensitivity`
|
|
argument to indicate whether directory completion is case sensitive.
|
|
|
|
* `XMonad.Prompt.FuzzyMatch`
|
|
|
|
- `fuzzySort` will now accept cases where the input is not a subsequence of
|
|
every completion.
|
|
|
|
* `XMonad.Prompt.Shell`
|
|
|
|
- Added `getShellCompl'`, like `getShellCompl` with an additional `ComplCaseSensitivity`
|
|
argument.
|
|
|
|
- Added `compgenDirectories` and `compgenFiles` to get the directory/filename completion
|
|
matches returned by the compgen shell builtin.
|
|
|
|
- Added `safeDirPrompt`, which is like `safePrompt`, 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 of
|
|
`runProcessWithInput` (synchronous), which fixes `typeUnicodePrompt`.
|
|
|
|
- Now respects `searchPredicate` and `sorter` from user-supplied `XPConfig`.
|
|
|
|
* `XMonad.Hooks.DynamicLog`
|
|
|
|
- Added `xmobarProp`, for property-based alternative to `xmobar`.
|
|
|
|
- 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` or
|
|
`X.H.StatusBar.PP`
|
|
|
|
* `XMonad.Layout.BoringWindows`
|
|
|
|
- Added boring-aware `swapUp`, `swapDown`, `siftUp`, and `siftDown` functions.
|
|
|
|
- Added `markBoringEverywhere` function, to mark the currently
|
|
focused window boring on all layouts, when using `XMonad.Actions.CopyWindow`.
|
|
|
|
* `XMonad.Util.NamedScratchpad`
|
|
|
|
- Added two new exported functions to the module:
|
|
- `customRunNamedScratchpadAction`
|
|
(provides the option to customize the `X ()` action the scratchpad is launched by)
|
|
- `spawnHereNamedScratchpadAction`
|
|
(uses `XMonad.Actions.SpawnOn.spawnHere` to initially start the scratchpad on the workspace it was launched on)
|
|
|
|
- Deprecated `namedScratchpadFilterOutWorkspace` and
|
|
`namedScratchpadFilterOutWorkspacePP`. Use
|
|
`XMonad.Util.WorkspaceCompare.filterOutWs` respectively
|
|
`XMonad.Hooks.DynamicLog.filterOutWsPP` instead.
|
|
|
|
- Exported the `scratchpadWorkspaceTag`.
|
|
|
|
- Added a new logHook `nsHideOnFocusLoss` for hiding scratchpads
|
|
when they lose focus.
|
|
|
|
* `XMonad.Prompt.Window`
|
|
|
|
- Added `allApplications` function which maps application executable
|
|
names to its underlying window.
|
|
|
|
- Added a `WithWindow` constructor to `WindowPrompt` to allow executing
|
|
actions of type `Window -> X ()` on the chosen window.
|
|
|
|
* `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.
|
|
|
|
* `XMonad.Actions.Search`
|
|
|
|
- The `hoogle` function now uses the new URL `hoogle.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`.
|
|
|
|
* `XMonad.Actions.CycleRecentWS`
|
|
|
|
- Added `cycleRecentNonEmptyWS` function which behaves like `cycleRecentWS`
|
|
but is constrainded to non-empty workspaces.
|
|
|
|
- Added `toggleRecentWS` and `toggleRecentNonEmptyWS` 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.
|
|
|
|
* `XMonad.Layout.Hidden`
|
|
|
|
- Export `HiddenWindows` type constructor.
|
|
|
|
- Export `popHiddenWindow` function restoring a specific window.
|
|
|
|
* `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.
|
|
|
|
* `XMonad.Hooks.ManageHelpers`
|
|
|
|
- Export `doSink`
|
|
|
|
- Added `doLower` and `doRaise`
|
|
|
|
- Added `shiftToSame` and `clientLeader` which allow a hook to be created
|
|
that shifts a window to the workspace of other windows of the application
|
|
(using either the `WM_CLIENT_LEADER` or `_NET_WM_PID` property).
|
|
|
|
- Added `windowTag`
|
|
|
|
- Added `(^?)`, `(~?)` and `($?)` operators as infix versions of `isPrefixOf`, `isInfixOf`
|
|
and `isSuffixOf` working with `ManageHook`s.
|
|
|
|
* `XMonad.Util.EZConfig`
|
|
|
|
- Added support for XF86Bluetooth.
|
|
|
|
* `XMonad.Util.Loggers`
|
|
|
|
- Make `battery` and `loadAvg` distro-independent.
|
|
|
|
- Added `logTitleOnScreen`, `logCurrentOnScreen` and `logLayoutOnScreen`
|
|
as screen-specific variants of `logTitle`, `logCurrent` and `logLayout`.
|
|
|
|
- Added `logWhenActive` to have loggers active only when a certain
|
|
screen is active.
|
|
|
|
- Added `logConst` to log a constant `String`, and `logDefault` (infix: `.|`)
|
|
to combine loggers.
|
|
|
|
- Added `logTitles` to log all window titles (focused and unfocused
|
|
ones) on the focused workspace, as well as `logTitlesOnScreen` as
|
|
a screen-specific variant thereof.
|
|
|
|
- Added `logTitles'` and `logTitleOnScreen'`. These act like
|
|
`logTitles` and `logTitlesOnScreen` but 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 `Minimize` type constructor.
|
|
|
|
* `XMonad.Actions.WorkspaceNames`
|
|
|
|
- Added `workspaceNamesEwmh` which makes workspace names visible to
|
|
external pagers.
|
|
|
|
* `XMonad.Util.PureX`
|
|
|
|
- Added `focusWindow` and `focusNth` which don't refresh (and thus
|
|
possibly flicker) when they happen to be a no-op.
|
|
|
|
- Added `shiftWin` as a refresh tracking version of `W.shiftWin`.
|
|
|
|
* Several `LayoutClass` instances now have an additional `Typeable`
|
|
constraint which may break some advanced configs. The upside is that we
|
|
can now add `Typeable` to `LayoutClass` in `XMonad.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 the
|
|
`maxTopicHistory` and prune the topic history as necessary, as well as
|
|
cons the given topic onto the list __before__ filtering it.
|
|
|
|
- Added `switchNthLastFocusedExclude`, which works like
|
|
`switchNthLastFocused` but is able to exclude certain topics.
|
|
|
|
- Added `switchTopicWith`, which works like `switchTopic`, but one is able
|
|
to give `setLastFocusedTopic` 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` and
|
|
`switchNthLastFocusedByScreen`.
|
|
|
|
* `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.
|
|
|
|
* `XMonad.Util.DebugWindow`
|
|
|
|
- Fixed a bottom in `debugWindow` when used on windows with UTF8 encoded titles.
|
|
|
|
* `XMonad.Config.Xfce`
|
|
|
|
- Set `terminal` to `xfce4-terminal`.
|
|
|
|
* `XMonad.Hooks.WorkspaceCompare`
|
|
|
|
- Added `filterOutWs` for workspace filtering.
|
|
|
|
* `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 to `XPConfig`, to limit the number of
|
|
columns in the completion window.
|
|
|
|
- Redefine `ComplCaseSensitivity` to a proper sum type as opposed to
|
|
a `newtype` wrapper around `Bool`.
|
|
|
|
* `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 to `Ambiguity` 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 and `clearUrgents`
|
|
now clear the `_NET_WM_STATE_DEMANDS_ATTENTION` bit as well.
|
|
|
|
- Added a variant of `filterUrgencyHook` that takes a generic `Query Bool`
|
|
to select which windows should never be marked urgent.
|
|
|
|
- Added `askUrgent` and a `doAskUrgent` 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.
|
|
|
|
* `XMonad.Hooks.ServerMode`
|
|
|
|
- To make it easier to use, the `xmonadctl` client is now included in
|
|
`scripts/`.
|
|
|
|
* `XMonad.Layout.TrackFloating`
|
|
|
|
- Fixed a bug that prevented changing focus on inactive workspaces.
|
|
|
|
* `XMonad.Layout.Magnifier`
|
|
|
|
- Added `magnifierczOff` and `magnifierczOff'` 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.
|
|
|
|
* `XMonad.Layout.Renamed`
|
|
|
|
- Added `KeepWordsLeft` and `KeepWordsRight` for keeping certain number of
|
|
words in left or right direction in layout description.
|
|
|
|
* `XMonad.Hooks.WallpaperSetter`
|
|
|
|
- Added `defWPNamesPng`, which works like `defWPNames` but maps
|
|
`ws-name` to `ws-name.png` instead of `ws-name.jpg`.
|
|
|
|
- Added `defWPNamesJpg` as an alias to `defWPNames` and 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`
|
|
|
|
* `XMonad.Layout.Decoration`
|
|
|
|
- The decoration window now sets a `WM_CLASS` property. This allows
|
|
other applications, like compositors, to properly match on it.
|
|
|
|
* `XMonad.Layout.IndependentScreens`
|
|
|
|
- Fixed a bug where `marshallPP` always sorted workspace names
|
|
lexically. This changes the default behaviour of `marshallPP`—the
|
|
given `ppSort` now operates in the _physical_ workspace names.
|
|
The documentation of `marshallSort` contains an example of how to
|
|
get the old behaviour, where `ppSort` 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` and `VirtualWindowSpace`
|
|
for a `WindowSpace` for easier to read function signatures.
|
|
|
|
- Added a few useful utility functions related to simplify using the
|
|
module; namely `workspaceOnScreen`, `focusWindow'`, `focusScreen`,
|
|
`nthWorkspace`, and `withWspOnScreen`.
|
|
|
|
- Fixed wrong type-signature of `onCurrentScreen`.
|
|
|
|
* `XMonad.Actions.CopyWindow`
|
|
|
|
- Added `copiesPP` to make a `PP` aware of copies of the focused
|
|
window.
|
|
|
|
- `XMonad.Actions.CycleWS`
|
|
|
|
- Added `:&:`, `:|:` and `Not` data constructors to `WSType` to logically
|
|
combine predicates.
|
|
|
|
- Added `hiddenWS`, `emptyWS` and `anyWS` to replace deprecated
|
|
constructors.
|
|
|
|
- Added `ingoringWSs` as a `WSType` predicate to skip workspaces having a
|
|
tag in a given list.
|
|
|
|
- `XMonad.Actions.DynamicWorkspaceOrder`
|
|
|
|
- Added `swapWithCurrent` and `swapOrder` to the list of exported names.
|
|
|
|
- `XMonad.Actions.Submap`, `XMonad.Util.Ungrab`:
|
|
|
|
- Fixed issue with keyboard/pointer staying grabbed when a blocking action
|
|
like `runProcessWithInput` was invoked.
|
|
|
|
- `XMonad.Actions.UpdateFocus`
|
|
|
|
- Added `focusUnderPointer`, that updates the focus based on pointer
|
|
position, an inverse of `X.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.
|
|
|
|
- `XMonad.Layout.MultiToggle`
|
|
|
|
- Added `isToggleActive` for querying the toggle state of transformers.
|
|
Useful to show the state in a status bar.
|
|
|
|
* `XMonad.Layout.Spacing`
|
|
|
|
- Removed deprecations for `spacing`, `spacingWithEdge`,
|
|
`smartSpacing`, and `smartSpacingWithEdge`.
|
|
|
|
* `XMonad.Actions.DynamicWorkspaces`
|
|
|
|
- Fixed a system freeze when using `X.A.CopyWindow.copy` in
|
|
combination with `removeWorkspace`.
|
|
|
|
- `withWorkspace` now honors the users `searchPredicate`, for
|
|
example `fuzzyMatch` from `Prompt.FuzzyMatch`.
|
|
|
|
## 0.16
|
|
|
|
### Breaking Changes
|
|
|
|
* `XMonad.Layout.Decoration`
|
|
- Added `Theme` record fields for controlling decoration border width for active/inactive/urgent windows.
|
|
* `XMonad.Prompt`
|
|
|
|
- Prompt ships a vim-like keymap, see `vimLikeXPKeymap` and
|
|
`vimLikeXPKeymap'`. A reworked event loop supports new vim-like prompt
|
|
actions.
|
|
- Prompt supports dynamic colors. Colors are now specified by the `XPColor`
|
|
type in `XPState` while `XPConfig` colors remain unchanged for backwards
|
|
compatibility.
|
|
- Fixes `showCompletionOnTab`.
|
|
- The behavior of `moveWord` and `moveWord'` 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.
|
|
* `XMonad.Util.Invisble`
|
|
- Requires `MonadFail` for `Read` instance
|
|
|
|
### New Modules
|
|
|
|
* `XMonad.Layout.TwoPanePersistent`
|
|
|
|
A 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.ExclusiveScratchpads`
|
|
|
|
Named 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.Prefix`
|
|
|
|
A module that allows the user to use an Emacs-style prefix
|
|
argument (raw or numeric).
|
|
|
|
### Bug Fixes and Minor Changes
|
|
|
|
* `XMonad.Layout.Tabbed`
|
|
|
|
tabbedLeft and tabbedRight will set their tabs' height and width according to decoHeight/decoWidth
|
|
|
|
* `XMonad.Prompt`
|
|
|
|
Added `sorter` to `XPConfig` used 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](https://github.com/xmonad/xmonad-contrib/issues/180).
|
|
|
|
Fixes [issue #217](https://github.com/xmonad/xmonad-contrib/issues/217), where
|
|
using tab to wrap around the completion rows would fail when maxComplRows is
|
|
restricting the number of rows of output.
|
|
|
|
* `XMonad.Prompt.Pass`
|
|
|
|
Added '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.DynamicProjects`
|
|
|
|
Make the input directory read from the prompt in `DynamicProjects`
|
|
absolute 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
|
|
`foo` into a project with directory `bar`, xmonad actually tries to `cd`
|
|
into `foo/bar`, instead of `~/bar` as expected.
|
|
|
|
* `XMonad.Actions.DynamicWorkspaceOrder`
|
|
|
|
Add a version of `withNthWorkspace` that takes a `[WorkspaceId] ->
|
|
[WorkspaceId]` transformation to apply over the list of workspace tags
|
|
resulting from the dynamic order.
|
|
|
|
* `XMonad.Actions.GroupNavigation`
|
|
|
|
Add a utility function `isOnAnyVisibleWS :: Query Bool` to allow easy
|
|
cycling between all windows on all visible workspaces.
|
|
|
|
|
|
* `XMonad.Hooks.WallpaperSetter`
|
|
|
|
Preserve 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.Themes`
|
|
|
|
Add adwaitaTheme and adwaitaDarkTheme to match their respective
|
|
GTK themes.
|
|
|
|
* 'XMonad.Layout.BinarySpacePartition'
|
|
|
|
Add a new `SplitShiftDirectional` message that allows moving windows by
|
|
splitting its neighbours.
|
|
|
|
* `XMonad.Prompt.FuzzyMatch`
|
|
|
|
Make fuzzy sort show shorter strings first.
|
|
|
|
## 0.15
|
|
|
|
### Breaking Changes
|
|
|
|
* `XMonad.Layout.Groups` & `XMonad.Layout.Groups.Helpers`
|
|
The 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. with
|
|
`sendMessage`.
|
|
|
|
### New Modules
|
|
|
|
* `XMonad.Util.Purex`
|
|
|
|
Unlike the opaque `IO` actions that `X` actions can wrap, regular reads from
|
|
the `XConf` and modifications to the `XState` are fundamentally pure --
|
|
contrary to the current treatment of such actions in most xmonad code. Pure
|
|
modifications to the `WindowSet` can be readily composed, but due to the
|
|
need for those modifications to be properly handled by `windows`, other pure
|
|
changes to the `XState` cannot be interleaved with those changes to the
|
|
`WindowSet` without 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 as
|
|
`X`. The `XLike` typeclass enables writing actions generic over the two
|
|
monads; if pure, existing `X` actions can be generalised with only a change
|
|
to the type signature. Various other utilities are provided, in particular
|
|
the `defile` function which is needed by end-users.
|
|
|
|
### Bug Fixes and Minor Changes
|
|
|
|
* Add support for GHC 8.6.1.
|
|
|
|
* `XMonad.Actions.MessageHandling`
|
|
Refresh-performing functions updated to better reflect the new `sendMessage`.
|
|
|
|
## 0.14
|
|
|
|
### Breaking Changes
|
|
|
|
* `XMonad.Layout.Spacing`
|
|
|
|
Rewrite `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 builtin
|
|
`Full`. The child layout will always be called with the screen border. If
|
|
only a single window is displayed (and `smartBorder` enabled), 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 disable
|
|
`Spacing` on such layouts.
|
|
|
|
* `XMonad.Util.SpawnOnce`
|
|
|
|
- Added `spawnOnOnce`, `spawnNOnOnce` and `spawnAndDoOnce`. These are useful in startup hooks
|
|
to shift spawned windows to a specific workspace.
|
|
|
|
* Adding handling of modifySpacing message in smartSpacing and smartSpacingWithEdge layout modifier
|
|
|
|
* `XMonad.Actions.GridSelect`
|
|
|
|
- Added field `gs_bordercolor` to `GSConfig` to specify border color.
|
|
|
|
* `XMonad.Layout.Minimize`
|
|
|
|
Though the interface it offers is quite similar, this module has been
|
|
almost completely rewritten. The new `XMonad.Actions.Minimize` contains
|
|
several functions that allow interaction with minimization window state.
|
|
If you are using this module, you must upgrade your configuration to import
|
|
`X.A.Minimize` and use `maximizeWindow` and `withLastMinimized` instead of
|
|
sending messages to `Minimized` layout. `XMonad.Hooks.RestoreMinimized` has
|
|
been completely deprecated, and its functions have no effect.
|
|
|
|
* `XMonad.Prompt.Unicode`
|
|
|
|
- `unicodePrompt :: String -> XPConfig -> X ()` now additionally takes a
|
|
filepath to the `UnicodeData.txt` file containing unicode data.
|
|
|
|
* `XMonad.Actions.PhysicalScreens`
|
|
|
|
`getScreen`, `viewScreen`, `sendToScreen`, `onNextNeighbour`, `onPrevNeighbour` now need a extra parameter
|
|
of type `ScreenComparator`. This allow the user to specify how he want his screen to be ordered default
|
|
value are:
|
|
|
|
- `def`(same as verticalScreenOrderer) will keep previous behavior
|
|
- `verticalScreenOrderer`
|
|
- `horizontalScreenOrderer`
|
|
|
|
One can build his custom ScreenOrderer using:
|
|
- `screenComparatorById` (allow to order by Xinerama id)
|
|
- `screenComparatorByRectangle` (allow to order by screen coordonate)
|
|
- `ScreenComparator` (allow to mix ordering by screen coordonate and xinerama id)
|
|
|
|
* `XMonad.Util.WorkspaceCompare`
|
|
|
|
`getXineramaPhysicalWsCompare` now need a extra argument of type `ScreenComparator` defined in
|
|
`XMonad.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 `xmobarAction` and
|
|
`xmobarRaw`.
|
|
|
|
* `XMonad.Layout.NoBorders`
|
|
|
|
The layout now maintains a list of windows that never have borders, and a
|
|
list of windows that always have borders. Use `BorderMessage` to manage
|
|
these lists and the accompanying event hook (`borderEventHook`) to remove
|
|
destroyed windows from them. Also provides the `hasBorder` manage hook.
|
|
|
|
Two new conditions have been added to `Ambiguity`: `OnlyLayoutFloat` and
|
|
`OnlyLayoutFloatBelow`; `OnlyFloat` was renamed to `OnlyScreenFloat`. See
|
|
the documentation for more information.
|
|
|
|
The type signature of `hiddens` was changed to accept a new `Rectangle`
|
|
parameter representing the bounds of the parent layout, placed after the
|
|
`WindowSet` parameter. Anyone defining a new instance of `SetsAmbiguous`
|
|
will 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 returning
|
|
`X ()` are named regularly (previously these ended in underscore) while
|
|
those returning `X Bool` are suffixed with an uppercase 'B'.
|
|
- Provide all `X Bool` and `SomeMessage` variations for `sendMessage` and
|
|
`sendMessageWithNoRefresh`, not just `sendMessageWithNoRefreshToCurrent`
|
|
(renamed from `send`).
|
|
- The new `tryInOrderB` and `tryMessageB` functions accept a parameter of
|
|
type `SomeMessage -> X Bool`, which means you are no longer constrained
|
|
to the behavior of the `sendMessageWithNoRefreshToCurrent` dispatcher.
|
|
- The `send*Messages*` family of funtions allows for sequencing arbitrary
|
|
sets of messages with minimal refresh. It makes little sense for these
|
|
functions to support custom message dispatchers.
|
|
- Remain backwards compatible. Maintain deprecated aliases of all renamed
|
|
functions:
|
|
- `send` -> `sendMessageWithNoRefreshToCurrentB`
|
|
- `sendSM` -> `sendSomeMessageWithNoRefreshToCurrentB`
|
|
- `sendSM_` -> `sendSomeMessageWithNoRefreshToCurrent`
|
|
- `tryInOrder` -> `tryInOrderWithNoRefreshToCurrentB`
|
|
- `tryInOrder_` -> `tryInOrderWithNoRefreshToCurrent`
|
|
- `tryMessage` -> `tryMessageWithNoRefreshToCurrentB`
|
|
- `tryMessage_` -> `tryMessageWithNoRefreshToCurrent`
|
|
|
|
### New Modules
|
|
|
|
* `XMonad.Layout.MultiToggle.TabBarDecoration`
|
|
|
|
Provides a simple transformer for use with `XMonad.Layout.MultiToggle` to
|
|
dynamically toggle `XMonad.Layout.TabBarDecoration`.
|
|
|
|
* `XMonad.Hooks.RefocusLast`
|
|
|
|
Provides 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.StateFull`
|
|
|
|
Provides `StateFull`: a stateful form of `Full` that does not misbehave when
|
|
floats are focused, and the `FocusTracking` layout transformer by means of
|
|
which `StateFull` is implemented. `FocusTracking` simply 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.SwapPromote`
|
|
|
|
Module for tracking master window history per workspace, and associated
|
|
functions for manipulating the stack using such history.
|
|
|
|
* `XMonad.Actions.CycleWorkspaceByScreen`
|
|
|
|
A 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 `repeatableAction` helper function which can be used to
|
|
build actions that can be repeated while a modifier key is held down.
|
|
|
|
* `XMonad.Prompt.FuzzyMatch`
|
|
|
|
Provides a predicate `fuzzyMatch` that is much more lenient in matching
|
|
completions in `XMonad.Prompt` than the default prefix match. Also provides
|
|
a function `fuzzySort` that allows sorting the fuzzy matches by "how well"
|
|
they match.
|
|
|
|
* `XMonad.Utils.SessionStart`
|
|
|
|
A 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.MultiDishes`
|
|
|
|
A new layout based on Dishes, however it accepts additional configuration
|
|
to allow multiple windows within a single stack.
|
|
|
|
* `XMonad.Util.Rectangle`
|
|
|
|
A new module for handling pixel rectangles.
|
|
|
|
* `XMonad.Layout.BinaryColumn`
|
|
|
|
A 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.Grid`
|
|
|
|
Fix as per issue #223; Grid will no longer calculate more columns than there
|
|
are windows.
|
|
|
|
* `XMonad.Hooks.FadeWindows`
|
|
|
|
Added support for GHC version 8.4.x by adding a Semigroup instance for
|
|
Monoids
|
|
|
|
* `XMonad.Hooks.WallpaperSetter`
|
|
|
|
Added support for GHC version 8.4.x by adding a Semigroup instance for
|
|
Monoids
|
|
|
|
* `XMonad.Hooks.Mosaic`
|
|
|
|
Added support for GHC version 8.4.x by adding a Semigroup instance for
|
|
Monoids
|
|
|
|
* `XMonad.Actions.Navigation2D`
|
|
|
|
Added `sideNavigation` and a parameterised variant, providing a navigation
|
|
strategy with fewer quirks for tiled layouts using X.L.Spacing.
|
|
|
|
* `XMonad.Layout.Fullscreen`
|
|
|
|
The fullscreen layouts will now not render any window that is totally
|
|
obscured by fullscreen windows.
|
|
|
|
* `XMonad.Layout.Gaps`
|
|
|
|
Extended the sendMessage interface with `ModifyGaps` to allow arbitrary
|
|
modifications to the `GapSpec`.
|
|
|
|
* `XMonad.Layout.Groups`
|
|
|
|
Added a new `ModifyX` message type that allows the modifying
|
|
function to return values in the `X` monad.
|
|
|
|
* `XMonad.Actions.Navigation2D`
|
|
|
|
Generalised (and hence deprecated) hybridNavigation to hybridOf.
|
|
|
|
* `XMonad.Layout.LayoutHints`
|
|
|
|
Preserve 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.MultiColumns`
|
|
|
|
The 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`
|
|
|
|
* `XMonad.Layout.Magnifier`
|
|
|
|
- Handle `IncMasterN` messages.
|
|
|
|
* `XMonad.Util.EZConfig`
|
|
|
|
- Can now parse Latin1 keys, to better accommodate users with
|
|
non-US keyboards.
|
|
|
|
* `XMonad.Actions.Submap`
|
|
|
|
Establish 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.SetWMName`
|
|
|
|
Add function `getWMName`.
|
|
|
|
* `XMonad.Hooks.ManageHelpers`
|
|
|
|
- Make type of ManageHook combinators more general.
|
|
- New manage hook `doSink` for sinking windows (as upposed to the `doFloat` manage hook)
|
|
|
|
* `XMonad.Prompt`
|
|
|
|
Export `insertString`.
|
|
|
|
* `XMonad.Prompt.Window`
|
|
|
|
- New function: `windowMultiPrompt` for using `mkXPromptWithModes`
|
|
with window prompts.
|
|
|
|
* `XMonad.Hooks.WorkspaceHistory`
|
|
|
|
- Now supports per screen history.
|
|
|
|
* `XMonad.Layout.ComboP`
|
|
|
|
- New `PartitionWins` message 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.
|
|
|
|
* `XMonad.Actions.Minimize`
|
|
|
|
- Now has `withFirstMinimized` and `withFirstMinimized'` so you can perform
|
|
actions with both the last and first minimized windows easily.
|
|
|
|
* `XMonad.Config.Gnome`
|
|
|
|
- Update logout key combination (modm+shift+Q) to work with modern
|
|
|
|
* `XMonad.Prompt.Pass`
|
|
|
|
- New function `passTypePrompt` which uses `xdotool` to type in a password
|
|
from the store, bypassing the clipboard.
|
|
- New function `passEditPrompt` for editing a password from the
|
|
store.
|
|
- Now handles password labels with spaces and special characters inside
|
|
them.
|
|
|
|
* `XMonad.Prompt.Unicode`
|
|
|
|
- Persist unicode data cache across XMonad instances due to
|
|
`ExtensibleState` now used instead of `unsafePerformIO`.
|
|
- `typeUnicodePrompt :: String -> XPConfig -> X ()` provided to insert the
|
|
Unicode character via `xdotool` instead 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.
|
|
|
|
* `XMonad.Prompt.AppendFile`
|
|
|
|
- New function `appendFilePrompt'` which allows for transformation of the
|
|
string passed by a user before writing to a file.
|
|
|
|
* `XMonad.Hooks.DynamicLog`
|
|
|
|
- Added a new function `dzenWithFlags` which allows specifying the arguments
|
|
passed to `dzen2` invocation. The behaviour of current `dzen` function is
|
|
unchanged.
|
|
|
|
* `XMonad.Util.Dzen`
|
|
|
|
- Now provides functions `fgColor` and `bgColor` to specify foreground and
|
|
background color, `align` and `slaveAlign` to set text alignment, and
|
|
`lineCount` to enable a second (slave) window that displays lines beyond
|
|
the initial (title) one.
|
|
|
|
* `XMonad.Hooks.DynamicLog`
|
|
|
|
- Added optional `ppVisibleNoWindows` to differentiate between empty
|
|
and non-empty visible workspaces in pretty printing.
|
|
|
|
* `XMonad.Actions.DynamicWorkspaceOrder`
|
|
|
|
- Added `updateName` and `removeName` to better control ordering when
|
|
workspace names are changed or workspaces are removed.
|
|
|
|
* `XMonad.Config.Azerty`
|
|
|
|
* Added `belgianConfig` and `belgianKeys` to support Belgian AZERTY
|
|
keyboards, which are slightly different from the French ones in the top
|
|
row.
|
|
|
|
## 0.13 (February 10, 2017)
|
|
|
|
### Breaking Changes
|
|
|
|
* The type of `completionKey` (of `XPConfig` record) has been
|
|
changed from `KeySym` to `(KeyMask, KeySym)`. The default value
|
|
for this is still bound to the `Tab` key.
|
|
|
|
* New constructor `CenteredAt Rational Rational` added for
|
|
`XMonad.Prompt.XPPosition`.
|
|
|
|
* `XMonad.Prompt` now stores its history file in the XMonad cache
|
|
directory in a file named `prompt-history`.
|
|
|
|
* `XMonad.Hooks.ManageDocks` now 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 introduced `docks` function to add all necessary hooks to xmonad
|
|
config.
|
|
|
|
### New Modules
|
|
|
|
* `XMonad.Layout.SortedLayout`
|
|
|
|
A 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.Unicode`
|
|
|
|
A prompt to search a unicode character by its name, and put it into the
|
|
clipboard.
|
|
|
|
* `XMonad.Util.Ungrab`
|
|
|
|
Release xmonad's keyboard and pointer grabs immediately, so
|
|
screen grabbers and lock utilities, etc. will work. Replaces
|
|
the short sleep hackaround.
|
|
|
|
* `XMonad.Util.Loggers.NamedScratchpad`
|
|
|
|
A collection of Loggers (see `XMonad.Util.Loggers`) for NamedScratchpads
|
|
(see `XMonad.Util.NamedScratchpad`).
|
|
|
|
* `XMonad.Util.NoTaskbar`
|
|
|
|
Utility function and `ManageHook` to mark a window to be ignored by
|
|
EWMH taskbars and pagers. Useful for `NamedScratchpad` windows, since
|
|
you will usually be taken to the `NSP` workspace 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.LayoutBuilder`
|
|
|
|
Merge all functionality from `XMonad.Layout.LayoutBuilderP` into
|
|
`XMonad.Layout.LayoutBuilder`.
|
|
|
|
* `XMonad.Actions.WindowGo`
|
|
|
|
- Fix `raiseNextMaybe` cycling between 2 workspaces only.
|
|
|
|
* `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
|
|
`changeModeKey` in a prompt and see what happens!
|
|
|
|
## 0.12 (December 14, 2015)
|
|
|
|
### Breaking Changes
|
|
|
|
* `XMonad.Actions.UpdatePointer.updatePointer` arguments were
|
|
changed. This allows including aspects of both of the
|
|
`TowardsCentre` and `Relative` methods. To keep the same behavior,
|
|
replace the entry in the left column with the entry on the right:
|
|
|
|
| < 0.12 | >= 0.12 |
|
|
|-------------------------------------|----------------------------------|
|
|
| `updatePointer Nearest` | `updatePointer (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.AfterDrag`
|
|
|
|
Perform an action after the current mouse drag is completed.
|
|
|
|
* `XMonad.Actions.DynamicProjects`
|
|
|
|
Imbues workspaces with additional features so they can be treated
|
|
as individual project areas.
|
|
|
|
* `XMonad.Actions.LinkWorkspaces`
|
|
|
|
Provides 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.Bepo`
|
|
|
|
This module fixes some of the keybindings for the francophone
|
|
among you who use a BEPO keyboard layout. Based on
|
|
`XMonad.Config.Azerty`
|
|
|
|
* `XMonad.Config.Dmwit`
|
|
|
|
Daniel Wagner's configuration.
|
|
|
|
* `XMonad.Config.Mate`
|
|
|
|
This module provides a config suitable for use with the MATE
|
|
desktop environment.
|
|
|
|
* `XMonad.Config.Prime`
|
|
|
|
A draft of a brand new config syntax for xmonad.
|
|
|
|
* `XMonad.Hooks.DynamicProperty`
|
|
|
|
Module to apply a `ManageHook` to 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.ManageDebug`
|
|
|
|
A `manageHook` and associated `logHook` for debugging `ManageHook`s.
|
|
Simplest usage: wrap your xmonad config in the `debugManageHook`
|
|
combinator. Or use `debugManageHookOn` for a triggerable version,
|
|
specifying the triggering key sequence in `XMonad.Util.EZConfig`
|
|
syntax. Or use the individual hooks in whatever way you see fit.
|
|
|
|
* `XMonad.Hooks.WallpaperSetter`
|
|
|
|
Log hook which changes the wallpapers depending on visible
|
|
workspaces.
|
|
|
|
* `XMonad.Hooks.WorkspaceHistory`
|
|
|
|
Keeps track of workspace viewing order.
|
|
|
|
* `XMonad.Layout.AvoidFloats`
|
|
|
|
Find a maximum empty rectangle around floating windows and use
|
|
that area to display non-floating windows.
|
|
|
|
* `XMonad.Layout.BinarySpacePartition`
|
|
|
|
Layout where new windows will split the focused window in half,
|
|
based off of BSPWM.
|
|
|
|
* `XMonad.Layout.Dwindle`
|
|
|
|
Three layouts: The first, `Spiral`, is a reimplementation of
|
|
`XMonad.Layout.Spiral.spiral` with, 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, `Squeeze` arranges all
|
|
windows in one row or in one column, with geometrically decreasing
|
|
sizes.
|
|
|
|
* `XMonad.Layout.Hidden`
|
|
|
|
Similar to `XMonad.Layout.Minimize` but completely removes windows
|
|
from the window set so `XMonad.Layout.BoringWindows` isn't
|
|
necessary. Perfect companion to `XMonad.Layout.BinarySpacePartition`
|
|
since it can be used to move windows to another part of the BSP tree.
|
|
|
|
* `XMonad.Layout.IfMax`
|
|
|
|
Provides `IfMax` layout, which will run one layout if there are
|
|
maximum `N` windows on workspace, and another layout, when number
|
|
of windows is greater than `N`.
|
|
|
|
* `XMonad.Layout.PerScreen`
|
|
|
|
Configure 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.Stoppable`
|
|
|
|
This 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.ConfirmPrompt`
|
|
|
|
A module for setting up simple confirmation prompts for
|
|
keybindings.
|
|
|
|
* `XMonad.Prompt.Pass`
|
|
|
|
This module provides 3 `XMonad.Prompt`s to ease passwords
|
|
manipulation (generate, read, remove) via [pass][].
|
|
|
|
* `XMonad.Util.RemoteWindows`
|
|
|
|
This module implements a proper way of finding out whether the
|
|
window is remote or local.
|
|
|
|
* `XMonad.Util.SpawnNamedPipe`
|
|
|
|
A module for spawning a pipe whose `Handle` lives in the xmonad state.
|
|
|
|
* `XMonad.Util.WindowState`
|
|
|
|
Functions for saving per-window data.
|
|
|
|
### Miscellaneous Changes
|
|
|
|
* Fix issue #9: `XMonad.Prompt.Shell` `searchPredicate` is ignored,
|
|
defaults to `isPrefixOf`
|
|
|
|
* Fix moveHistory when alwaysHighlight is enabled
|
|
|
|
* `XMonad.Actions.DynamicWorkspaceGroups` now exports `addRawWSGroup`
|
|
|
|
* Side tabs were added to the tabbed layout
|
|
|
|
* `XMonad/Layout/IndependentScreens` now exports `marshallSort`
|
|
|
|
* `XMonad/Hooks/UrgencyHook` now exports `clearUrgency`
|
|
|
|
* Exceptions are now caught when finding commands on `PATH` in `Prompt.Shell`
|
|
|
|
* Switched to `Data.Default` wherever possible
|
|
|
|
* `XMonad.Layout.IndependentScreens` now exports `whenCurrentOn`
|
|
|
|
* `XMonad.Util.NamedActions` now exports `addDescrKeys'`
|
|
|
|
* EWMH `DEMANDS_ATTENTION` support added to `UrgencyHook`
|
|
|
|
* New `useTransientFor` modifier in `XMonad.Layout.TrackFloating`
|
|
|
|
* Added the ability to remove arbitrary workspaces
|
|
|
|
## 0.9 (October 26, 2009)
|
|
|
|
### Updates that Require Changes in `xmonad.hs`
|
|
|
|
* `XMonad.Hooks.EwmhDesktops` no longer uses `layoutHook`, the
|
|
`ewmhDesktopsLayout` modifier has been removed from
|
|
xmonad-contrib. It uses `logHook`, `handleEventHook`, and
|
|
`startupHook` instead and provides a convenient function `ewmh` to
|
|
add EWMH support to a `defaultConfig`.
|
|
|
|
* Most `DynamicLog` users can continue with configs unchanged, but
|
|
users of the quickbar functions `xmobar` or `dzen` will need to
|
|
change `xmonad.hs`: their types have changed to allow easier
|
|
composition with other `XConfig` modifiers. The `dynamicLogDzen`
|
|
and `dynamicLogXmobar` functions have been removed.
|
|
|
|
* `WindowGo` or `safeSpawn` users may need to change command lines
|
|
due to `safeSpawn` changes.
|
|
|
|
* People explicitly referencing the "SP" scratchpad workspace should
|
|
change it to "NSP" which is also used by the new
|
|
`Util.NamedScratchpad` module.
|
|
|
|
* (Optional) People who explicitly use `swapMaster` in key or mouse
|
|
bindings should change it to `shiftMaster`. It's the current
|
|
default used where `swapMaster` had been used previously. It works
|
|
better than `swapMaster` when using floating and tiled windows
|
|
together on the same workspace.
|
|
|
|
## See Also
|
|
|
|
<https://wiki.haskell.org/Xmonad/Notable_changes_since_0.8>
|
|
|
|
[pass]: http://www.passwordstore.org/
|