<?xml version="1.0" encoding="utf-8"?><feed xmlns="https://umn0mtkzgkj46tygt32g.julianrbryant.com/2005/Atom" ><generator uri="https://uhm6mk9w2k7exk5jq01g.julianrbryant.com/" version="3.10.0">Jekyll</generator><link href="https://un5v22h10b5tevr.julianrbryant.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://un5v22h10b5tevr.julianrbryant.com/" rel="alternate" type="text/html" /><updated>2026-03-12T04:44:27+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/feed.xml</id><title type="html">xmonad - the tiling window manager that rocks</title><subtitle>The xmonad.org website</subtitle><entry><title type="html">xmonad 0.18.1 and xmonad-contrib 0.18.2 are available</title><link href="https://un5v22h10b5tevr.julianrbryant.com/news/2026/03/06/xmonad-0-18-2.html" rel="alternate" type="text/html" title="xmonad 0.18.1 and xmonad-contrib 0.18.2 are available" /><published>2026-03-06T00:00:00+00:00</published><updated>2026-03-06T00:00:00+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/news/2026/03/06/xmonad-0-18-2</id><content type="html" xml:base="https://un5v22h10b5tevr.julianrbryant.com/news/2026/03/06/xmonad-0-18-2.html"><![CDATA[<p>New versions of xmonad and xmonad-contrib have been released.
Check out our
<a href="/download.html">download page</a>
for instructions on where to get them.
For help getting started—or more info—see <a href="https://un5v22h10b5tevr.julianrbryant.com/">our website</a> and <a href="https://un5v22h10b5tevr.julianrbryant.com/community.html">talk to us</a>!
If you like what we do, you can support us on <a href="https://un5mvxyuxgypm7ph3w.julianrbryant.com/xmonad">Open Collective</a> or via <a href="https://github.com/sponsors/xmonad">GitHub Sponsors</a>.
Thanks!</p>

<h3 class="no_toc" id="table-of-contents">Table of Contents</h3>

<ul id="markdown-toc">
  <li><a href="#xmonad-0181" id="markdown-toc-xmonad-0181">xmonad 0.18.1</a>    <ul>
      <li><a href="#breaking-changes" id="markdown-toc-breaking-changes">Breaking Changes</a></li>
    </ul>
  </li>
  <li><a href="#xmonad-contrib-0182" id="markdown-toc-xmonad-contrib-0182">xmonad-contrib 0.18.2</a>    <ul>
      <li><a href="#breaking-changes-1" id="markdown-toc-breaking-changes-1">Breaking Changes</a></li>
      <li><a href="#new-modules" id="markdown-toc-new-modules">New Modules</a></li>
      <li><a href="#bug-fixes-and-minor-changes" id="markdown-toc-bug-fixes-and-minor-changes">Bug Fixes and Minor Changes</a></li>
    </ul>
  </li>
</ul>

<h2 id="xmonad-0181">xmonad 0.18.1</h2>

<!-- $ git shortlog v0.18.0..origin/master --summary | awk '{ sum += $1; count += 1 } END { print sum, count }' -->
<p>This release includes 87 commits by 10 contributors!
For a full summary of all the changes, see <a href="https://github.com/xmonad/xmonad/blob/v0.18.1/CHANGES.md">xmonad’s CHANGES.md</a> file.</p>

<h3 id="breaking-changes">Breaking Changes</h3>

<ul>
  <li>Use <code class="language-plaintext highlighter-rouge">cabal</code> for <code class="language-plaintext highlighter-rouge">--recompile</code> if there is a <code class="language-plaintext highlighter-rouge">.cabal</code> file in the config
directory and none of <code class="language-plaintext highlighter-rouge">build</code>, <code class="language-plaintext highlighter-rouge">stack.yaml</code>, <code class="language-plaintext highlighter-rouge">flake.nix</code>, nor <code class="language-plaintext highlighter-rouge">default.nix</code>
exist.</li>
</ul>

<h2 id="xmonad-contrib-0182">xmonad-contrib 0.18.2</h2>

<!-- $ git shortlog v0.18.1..origin/master --summary | awk '{ sum += $1; count += 1 } END { print sum, count }' -->
<p>This release includes 127 commits by 15 contributors!
For a full summary of all the changes, see <a href="https://github.com/xmonad/xmonad-contrib/blob/v0.18.2/CHANGES.md">xmonad-contrib’s CHANGES.md</a> file.</p>

<h3 id="breaking-changes-1">Breaking Changes</h3>

<ul>
  <li>Drop support for GHC 8.6</li>
</ul>

<h3 id="new-modules">New Modules</h3>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.StickyWindows</code></p>

    <ul>
      <li>Stick windows on screens so they follow you across desktops.</li>
    </ul>
  </li>
</ul>

<h3 id="bug-fixes-and-minor-changes">Bug Fixes and Minor Changes</h3>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.WindowBringer</code></p>

    <ul>
      <li>
        <p>Make sure functions that internally use their <code class="language-plaintext highlighter-rouge">…Args</code> versions
pass on the default <code class="language-plaintext highlighter-rouge">dmenu</code> arguments.</p>

        <p>These are also now exported as <code class="language-plaintext highlighter-rouge">defaultDMenuArgs</code> for users using
the <code class="language-plaintext highlighter-rouge">…Args</code> versions but want to augment instead of replacing the
default <code class="language-plaintext highlighter-rouge">dmenu</code> arguments.</p>

        <p>For users, the visible change will be that <code class="language-plaintext highlighter-rouge">bringMenu</code> and <code class="language-plaintext highlighter-rouge">copyMenu</code>
now behave identically to <code class="language-plaintext highlighter-rouge">gotoMenu</code>, as expected, instead of being
case sensitive. Users who might have been relying on the incorrect
behavior should replace <code class="language-plaintext highlighter-rouge">*Menu</code> with <code class="language-plaintext highlighter-rouge">*MenuArgs []</code>.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.XSelection</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">getClipboard</code> to query the X clipboard.
Also added <code class="language-plaintext highlighter-rouge">getSecondarySelection</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.EZConfig</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">XF86WLAN</code> and <code class="language-plaintext highlighter-rouge">Menu</code> to the list of supported special keys.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.DynamicProjects</code></p>

    <ul>
      <li>No longer autodelete projects when <code class="language-plaintext highlighter-rouge">switchProject</code> is called from
an empty workspace. This also fixes a bug where static workspaces
would be deleted when switching to a dynamic project.</li>
      <li>Improved documentation on how to close a project.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.Rescreen</code></p>

    <ul>
      <li>
        <p>Allow overriding the <code class="language-plaintext highlighter-rouge">rescreen</code> operation itself. Additionally, the
<code class="language-plaintext highlighter-rouge">XMonad.Actions.PhysicalScreens</code> module now provides an alternative
implementation of <code class="language-plaintext highlighter-rouge">rescreen</code> that avoids reshuffling the workspaces if
the number of screens doesn’t change and only their locations do (which
is especially common if one uses <code class="language-plaintext highlighter-rouge">xrandr --setmonitor</code> to split an
ultra-wide display in two).</p>
      </li>
      <li>
        <p>Added an optional delay when waiting for events to settle. This may be
used to avoid flicker and unnecessary workspace reshuffling if multiple
<code class="language-plaintext highlighter-rouge">xrandr</code> commands are used to reconfigure the display layout.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.NoBorders</code></p>

    <ul>
      <li>It’s no longer necessary to use <code class="language-plaintext highlighter-rouge">borderEventHook</code> to garbage collect
<code class="language-plaintext highlighter-rouge">alwaysHidden</code>/<code class="language-plaintext highlighter-rouge">neverHidden</code> lists. The layout listens to
<code class="language-plaintext highlighter-rouge">DestroyWindowEvent</code> messages instead, which are broadcast to layouts
since xmonad v0.17.0.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.EwmhDesktops</code></p>

    <ul>
      <li>Added a customization option for the action that gets executed when
a client sends a <code class="language-plaintext highlighter-rouge">_NET_CURRENT_DESKTOP</code> request. It is now possible
to change it using the <code class="language-plaintext highlighter-rouge">setEwmhSwitchDesktopHook</code>.</li>
      <li>
        <p>Added a customization option for mapping hidden workspaces to screens
when setting the <code class="language-plaintext highlighter-rouge">_NET_DESKTOP_VIEWPORT</code>. This can be done using
the <code class="language-plaintext highlighter-rouge">setEwmhHiddenWorkspaceToScreenMapping</code>.</p>
      </li>
      <li>Added support for <code class="language-plaintext highlighter-rouge">_NET_WM_STATE_{ABOVE,BELOW}</code> to place windows
correctly.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.IndependentScreens</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">focusWorkspace</code> for focusing workspaces on the screen that they
belong to.</li>
      <li>Added <code class="language-plaintext highlighter-rouge">doFocus'</code> hook as an alternative for <code class="language-plaintext highlighter-rouge">doFocus</code> when using
IndependentScreens.</li>
      <li>Added <code class="language-plaintext highlighter-rouge">screenOnMonitor</code> for getting the active screen for a monitor.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.NamedScratchPad</code></p>

    <ul>
      <li>Fix unintended window hiding in <code class="language-plaintext highlighter-rouge">nsSingleScratchpadPerWorkspace</code>.
Only hide the previously active scratchpad.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.Search</code></p>

    <ul>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">multiChar</code>, <code class="language-plaintext highlighter-rouge">combineChar</code>, and <code class="language-plaintext highlighter-rouge">prefixAwareChar</code> as
slightly generalised versions of <code class="language-plaintext highlighter-rouge">prefixAware</code> and <code class="language-plaintext highlighter-rouge">(!&gt;)</code> that
allow specifying the character that separates a search engine’s
prefix with the query when combining engines.</p>
      </li>
      <li>
        <p>Added the <code class="language-plaintext highlighter-rouge">ecosia</code> search engine.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.ManageDocks</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">onAllDocks</code> to run an action on all recognised docks.</li>
    </ul>
  </li>
</ul>]]></content><author><name></name></author><category term="news" /><summary type="html"><![CDATA[New versions of xmonad and xmonad-contrib have been released. Check out our download page for instructions on where to get them. 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!]]></summary><media:thumbnail xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" /><media:content medium="image" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" /></entry><entry><title type="html">xmonad-contrib 0.18.1 is available</title><link href="https://un5v22h10b5tevr.julianrbryant.com/news/2024/08/20/xmonad-0-18-1.html" rel="alternate" type="text/html" title="xmonad-contrib 0.18.1 is available" /><published>2024-08-20T00:00:00+00:00</published><updated>2024-08-20T00:00:00+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/news/2024/08/20/xmonad-0-18-1</id><content type="html" xml:base="https://un5v22h10b5tevr.julianrbryant.com/news/2024/08/20/xmonad-0-18-1.html"><![CDATA[<p>A new version of xmonad-contrib has been released.
Check out our
<a href="/download.html">download page</a>
for instructions on where to get it.
For help getting started—or more info—see <a href="https://un5v22h10b5tevr.julianrbryant.com/">our website</a> and <a href="https://un5v22h10b5tevr.julianrbryant.com/community.html">talk to us</a>!
If you like what we do, you can support us on <a href="https://un5mvxyuxgypm7ph3w.julianrbryant.com/xmonad">Open Collective</a> or via <a href="https://github.com/sponsors/xmonad">GitHub Sponsors</a>.
Thanks!</p>

<h3 class="no_toc" id="table-of-contents">Table of Contents</h3>

<ul id="markdown-toc">
  <li><a href="#xmonad-contrib-0181" id="markdown-toc-xmonad-contrib-0181">xmonad-contrib 0.18.1</a>    <ul>
      <li><a href="#breaking-changes" id="markdown-toc-breaking-changes">Breaking Changes</a></li>
      <li><a href="#selected-features-and-improvements" id="markdown-toc-selected-features-and-improvements">Selected Features and improvements</a></li>
    </ul>
  </li>
</ul>

<h2 id="xmonad-contrib-0181">xmonad-contrib 0.18.1</h2>

<p>This release includes 62 non-merge commits by 16 contributors!
For a full summary of all the changes, see <a href="https://github.com/xmonad/xmonad-contrib/blob/v0.18.1/CHANGES.md">xmonad-contrib’s CHANGES.md</a> file.</p>

<h3 id="breaking-changes">Breaking Changes</h3>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.StatusBars</code></p>

    <ul>
      <li>Move status bar functions from the <code class="language-plaintext highlighter-rouge">IO</code> to the <code class="language-plaintext highlighter-rouge">X</code> monad to allow them to look up information from <code class="language-plaintext highlighter-rouge">X</code>, like the screen width.
Existing configurations may need to use <code class="language-plaintext highlighter-rouge">io</code> from <code class="language-plaintext highlighter-rouge">XMonad.Core</code> or <code class="language-plaintext highlighter-rouge">liftIO</code> from <code class="language-plaintext highlighter-rouge">Control.Monad.IO.Class</code> in order to lift any existing <code class="language-plaintext highlighter-rouge">IO StatusBarConfig</code> values into <code class="language-plaintext highlighter-rouge">X StatusBarConfig</code> values.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Prompt</code></p>

    <ul>
      <li>Added an additional <code class="language-plaintext highlighter-rouge">XPConfig</code> argument to <code class="language-plaintext highlighter-rouge">historyCompletion</code> and <code class="language-plaintext highlighter-rouge">historyCompletionP</code>.
Calls like <code class="language-plaintext highlighter-rouge">historyCompletionP myFunc</code> should be changed to <code class="language-plaintext highlighter-rouge">historyCompletionP myConf myFunc</code>.
If no <code class="language-plaintext highlighter-rouge">myConf</code> is lying around, <code class="language-plaintext highlighter-rouge">def</code> can be used instead.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.GridSelect</code></p>

    <ul>
      <li>Added the <code class="language-plaintext highlighter-rouge">gs_cancelOnEmptyClick</code> field to <code class="language-plaintext highlighter-rouge">GSConfig</code>, which makes mouse clicks into “empty space” cancel the current grid-select.
Users explicitly defining their own <code class="language-plaintext highlighter-rouge">GSConfig</code> record will have to add this to their definitions.
Additionally, the field defaults to <code class="language-plaintext highlighter-rouge">True</code>—to retain the old behaviour, set it to <code class="language-plaintext highlighter-rouge">False</code>.</li>
    </ul>
  </li>
</ul>

<h3 id="selected-features-and-improvements">Selected Features and improvements</h3>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.Profiles</code></p>

    <ul>
      <li>A new module to group workspaces by similarity.
Useful when one has lots of workspaces and uses only a couple per unit of work.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.FloatConfigureReq</code></p>

    <ul>
      <li>A new module to customize the handling of floating windows’ move/resize/restack requests (<code class="language-plaintext highlighter-rouge">ConfigureRequest</code>).
Useful as a workaround for some misbehaving client applications
(<code class="language-plaintext highlighter-rouge">steam</code>, <code class="language-plaintext highlighter-rouge">rxvt-unicode</code>, anything that tries to restore absolute position of floats).</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.Columns</code></p>

    <ul>
      <li>A new layout that organizes windows in columns;
allows to move/resize windows in every directions.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Prompt.WindowBringer</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">copyMenu</code>, a convenient way to copy a window to the current workspace.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Prompt.OrgMode</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">HH:MM-HH:MM</code> and <code class="language-plaintext highlighter-rouge">HH:MM+HH</code> syntax to specify time spans.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.EwmhDesktops</code></p>

    <ul>
      <li>
        <p>Requests for unmanaged windows no longer cause a refresh.
This avoids flicker and also fixes disappearing menus in the Steam client and possibly a few other client applications.</p>

        <p>(See also <code class="language-plaintext highlighter-rouge">XMonad.Hooks.FloatConfigureReq</code> and/or <code class="language-plaintext highlighter-rouge">XMonad.Util.Hacks</code> for additional Steam client workarounds.)</p>
      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.Submap</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">visualSubmapSorted</code> to enable sorting of the keymap descriptions.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.ScreenCorners</code></p>

    <ul>
      <li>Added screen edge support with <code class="language-plaintext highlighter-rouge">SCTop</code>, <code class="language-plaintext highlighter-rouge">SCBottom</code>, <code class="language-plaintext highlighter-rouge">SCLeft</code> and <code class="language-plaintext highlighter-rouge">SCRight</code>.
Now both corners and edges are supported.</li>
    </ul>
  </li>
</ul>]]></content><author><name></name></author><category term="news" /><summary type="html"><![CDATA[A new version of xmonad-contrib has been released. Check out our download page for instructions on where to get it. 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!]]></summary><media:thumbnail xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" /><media:content medium="image" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" /></entry><entry><title type="html">xmonad and xmonad-contrib 0.18.0 are available</title><link href="https://un5v22h10b5tevr.julianrbryant.com/news/2024/02/03/xmonad-0-18-0.html" rel="alternate" type="text/html" title="xmonad and xmonad-contrib 0.18.0 are available" /><published>2024-02-03T00:00:00+00:00</published><updated>2024-02-03T00:00:00+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/news/2024/02/03/xmonad-0-18-0</id><content type="html" xml:base="https://un5v22h10b5tevr.julianrbryant.com/news/2024/02/03/xmonad-0-18-0.html"><![CDATA[<p>New versions of xmonad and xmonad-contrib have been released.
Check out our
<a href="/download.html">download page</a>
for instructions on where to get them.</p>

<p>As this is a major release containing a few breaking changes inside of <code class="language-plaintext highlighter-rouge">xmonad-contrib</code>,
so be sure to check out the <a href="#xmonad-contrib-0180">release notes</a>!
For help getting started—or more info—see <a href="https://un5v22h10b5tevr.julianrbryant.com/">our website</a> and <a href="https://un5v22h10b5tevr.julianrbryant.com/community.html">talk to us</a>!
If you like what we do, you can support us on <a href="https://un5mvxyuxgypm7ph3w.julianrbryant.com/xmonad">Open Collective</a> or via <a href="https://github.com/sponsors/xmonad">GitHub Sponsors</a>.
Thanks!</p>

<h3 class="no_toc" id="table-of-contents">Table of Contents</h3>

<ul id="markdown-toc">
  <li><a href="#xmonad-0180" id="markdown-toc-xmonad-0180">xmonad 0.18.0</a>    <ul>
      <li><a href="#breaking-changes" id="markdown-toc-breaking-changes">Breaking Changes</a></li>
      <li><a href="#selected-features-and-improvements" id="markdown-toc-selected-features-and-improvements">Selected Features and Improvements</a></li>
    </ul>
  </li>
  <li><a href="#xmonad-contrib-0180" id="markdown-toc-xmonad-contrib-0180">xmonad-contrib 0.18.0</a>    <ul>
      <li><a href="#major-breaking-changes" id="markdown-toc-major-breaking-changes">Major Breaking Changes</a></li>
      <li><a href="#selected-features-and-improvements-1" id="markdown-toc-selected-features-and-improvements-1">Selected Features and improvements</a></li>
    </ul>
  </li>
</ul>

<h2 id="xmonad-0180">xmonad 0.18.0</h2>

<p>This release includes 85 non-merge commits by 15 contributors!
For a full summary of all the changes, see <a href="https://github.com/xmonad/xmonad/blob/v0.18.0/CHANGES.md">xmonad’s CHANGES.md</a> file.</p>

<h3 id="breaking-changes">Breaking Changes</h3>

<ul>
  <li>Dropped support for GHC 8.4.</li>
</ul>

<h3 id="selected-features-and-improvements">Selected Features and Improvements</h3>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Operations.floatLocation</code> 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.</p>
  </li>
  <li>
    <p>Recompilation now detects <code class="language-plaintext highlighter-rouge">flake.nix</code> and <code class="language-plaintext highlighter-rouge">default.nix</code> (can be a
symlink) and switches to using <code class="language-plaintext highlighter-rouge">nix build</code> as appropriate.</p>
  </li>
  <li>
    <p>Added <code class="language-plaintext highlighter-rouge">unGrab</code> to <code class="language-plaintext highlighter-rouge">XMonad.Operations</code>; this releases XMonad’s passive
keyboard grab, so other applications (like <code class="language-plaintext highlighter-rouge">scrot</code>) can do their
thing.</p>
  </li>
  <li>
    <p>Duplicated floats (e.g. from X.A.CopyToAll) no longer escape to inactive
screens.</p>
  </li>
</ul>

<h2 id="xmonad-contrib-0180">xmonad-contrib 0.18.0</h2>

<p>This release includes 195 non-merge commits by 25 contributors!
For a full summary of all the changes, see <a href="https://github.com/xmonad/xmonad-contrib/blob/v0.18.0/CHANGES.md">xmonad-contrib’s CHANGES.md</a> file.</p>

<h3 id="major-breaking-changes">Major Breaking Changes</h3>

<ul>
  <li>
    <p>Dropped support for GHC 8.4.</p>
  </li>
  <li>
    <p>Deprecated <code class="language-plaintext highlighter-rouge">XMonad.Layout.Cross</code> due to bitrot; refer to
<code class="language-plaintext highlighter-rouge">XMonad.Layout.Circle</code> and <code class="language-plaintext highlighter-rouge">XMonad.Layout.ThreeColumns</code> for
alternatives.</p>
  </li>
  <li>
    <p>Deprecated the <code class="language-plaintext highlighter-rouge">XMonad.Layout.StateFull</code> module and
<code class="language-plaintext highlighter-rouge">XMonad.Layout.TrackFloating.(t|T)rackFloating</code> in favour of
<code class="language-plaintext highlighter-rouge">XMonad.Layout.FocusTracking</code>.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.ExclusiveScratchpads</code> and <code class="language-plaintext highlighter-rouge">XMonad.Util.Scratchpad</code></p>

    <ul>
      <li>Deprecated these modules in favour of <code class="language-plaintext highlighter-rouge">XMonad.Util.NamedScratchpad</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.CycleWorkspaceByScreen</code></p>

    <ul>
      <li>The type of <code class="language-plaintext highlighter-rouge">repeatableAction</code> has changed, and it’s deprecated in favour of <code class="language-plaintext highlighter-rouge">X.A.Repeatable.repeatable</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.DynamicProperty</code></p>

    <ul>
      <li>Deprecated the module in favour of the more aptly named <code class="language-plaintext highlighter-rouge">XMonad.Hooks.OnPropertyChange</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.Navigation2D</code></p>

    <ul>
      <li>Removed deprecated function <code class="language-plaintext highlighter-rouge">hybridNavigation</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.Spacing</code></p>

    <ul>
      <li>Removed deprecated functions <code class="language-plaintext highlighter-rouge">SpacingWithEdge</code>, <code class="language-plaintext highlighter-rouge">SmartSpacing</code>,
<code class="language-plaintext highlighter-rouge">SmartSpacingWithEdge</code>, <code class="language-plaintext highlighter-rouge">ModifySpacing</code>, <code class="language-plaintext highlighter-rouge">setSpacing</code>, and
<code class="language-plaintext highlighter-rouge">incSpacing</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.MessageFeedback</code></p>

    <ul>
      <li>Removed deprecated functions <code class="language-plaintext highlighter-rouge">send</code>, <code class="language-plaintext highlighter-rouge">sendSM</code>, <code class="language-plaintext highlighter-rouge">sendSM_</code>,
<code class="language-plaintext highlighter-rouge">tryInOrder</code>, <code class="language-plaintext highlighter-rouge">tryInOrder_</code>, <code class="language-plaintext highlighter-rouge">tryMessage</code>, and <code class="language-plaintext highlighter-rouge">tryMessage_</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Prompt.Window</code></p>

    <ul>
      <li>Removed deprecated functions <code class="language-plaintext highlighter-rouge">windowPromptGoto</code>,
<code class="language-plaintext highlighter-rouge">windowPromptBring</code>, and <code class="language-plaintext highlighter-rouge">windowPromptBringCopy</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.ICCCMFocus</code></p>

    <ul>
      <li>Removed deprecated module; this was merged into core.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.LayoutBuilderP</code></p>

    <ul>
      <li>Removed deprecated module; use <code class="language-plaintext highlighter-rouge">XMonad.Layout.LayoutBuilder</code> instead.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.RestoreMinimized</code></p>

    <ul>
      <li>Removed deprecated module; use <code class="language-plaintext highlighter-rouge">XMonad.Hooks.Minimize</code> instead.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.Named</code></p>

    <ul>
      <li>Deprecated the entire module, use <code class="language-plaintext highlighter-rouge">XMonad.Layout.Renamed</code>
(which newly provides <code class="language-plaintext highlighter-rouge">named</code> for convenience) instead.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.SinkAll</code></p>

    <ul>
      <li>Deprecated the entire module, use <code class="language-plaintext highlighter-rouge">XMonad.Actions.WithAll</code> instead.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.Circle</code>:</p>

    <ul>
      <li>Deprecated the entire module, use the <code class="language-plaintext highlighter-rouge">circle</code> function from <code class="language-plaintext highlighter-rouge">XMonad.Layout.CircleEx</code> instead.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.EwmhDesktops</code></p>

    <ul>
      <li><code class="language-plaintext highlighter-rouge">_NET_CLIENT_LIST_STACKING</code> 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.</li>
    </ul>
  </li>
  <li>
    <p>Deprecated <code class="language-plaintext highlighter-rouge">XMonad.Util.Ungrab</code>; it was moved to <code class="language-plaintext highlighter-rouge">XMonad.Operations</code> in core.</p>
  </li>
</ul>

<h3 id="selected-features-and-improvements-1">Selected Features and improvements</h3>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.CenterMainFluid</code></p>

    <ul>
      <li>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.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.FocusTracking</code>.</p>

    <ul>
      <li>Replaces <code class="language-plaintext highlighter-rouge">X.L.StateFull</code> and half of <code class="language-plaintext highlighter-rouge">X.L.TrackFloating</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.MostRecentlyUsed</code></p>

    <ul>
      <li>Tab through windows by recency of use. Based on the Alt+Tab behaviour
common outside of xmonad.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.ToggleFullFloat</code>:</p>

    <ul>
      <li>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
<code class="language-plaintext highlighter-rouge">XMonad.Hooks.EwmhDesktops</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.CircleEx</code>:</p>

    <ul>
      <li>A new window layout, similar to <code class="language-plaintext highlighter-rouge">XMonad.Layout.Circle</code>,
but with more possibilities for customisation.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.NamedScratchpad</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">nsSingleScratchpadPerWorkspace</code>—a logHook to allow only one
active scratchpad per workspace.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.EZConfig</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">remapKeysP</code>, which remaps keybindings from one binding to another.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.NamedScratchpad</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">addExclusives</code>, <code class="language-plaintext highlighter-rouge">resetFocusedNSP</code>, <code class="language-plaintext highlighter-rouge">setNoexclusive</code>,
<code class="language-plaintext highlighter-rouge">resizeNoexclusive</code>, and <code class="language-plaintext highlighter-rouge">floatMoveNoexclusive</code> in order to augment
named scratchpads with the exclusive scratchpad functionality of
<code class="language-plaintext highlighter-rouge">XMonad.Util.ExclusiveScratchpads</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.BorderResize</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">borderResizeNear</code> as a variant of <code class="language-plaintext highlighter-rouge">borderResize</code> that can
control how many pixels near a border resizing still works.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.Run</code></p>

    <ul>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">findFile</code>, <code class="language-plaintext highlighter-rouge">list</code>, and <code class="language-plaintext highlighter-rouge">saveExcursion</code> to the list of Emacs commands.</p>
      </li>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">toList</code> to easily lift a <code class="language-plaintext highlighter-rouge">String</code> to an <code class="language-plaintext highlighter-rouge">X Input</code>.</p>
      </li>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">&gt;&amp;&amp;&gt;</code> and <code class="language-plaintext highlighter-rouge">&gt;||&gt;</code> to glue together different inputs.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.Navigation2D</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">sideNavigation</code> as a fallback to the default tiling strategy,
in case <code class="language-plaintext highlighter-rouge">lineNavigation</code> can’t find a window.  This benefits
especially users who use <code class="language-plaintext highlighter-rouge">XMonad.Layout.Spacing</code>.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Prompt.OrgMode</code></p>

    <ul>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">orgPromptRefile</code> and <code class="language-plaintext highlighter-rouge">orgPromptRefileTo</code> for interactive
and targeted refiling of the entered note into some existing tree
of headings, respectively.</p>
      </li>
      <li>
        <p>Allowed the time specification in <code class="language-plaintext highlighter-rouge">HHMM</code> format.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.Search</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">aur</code>, <code class="language-plaintext highlighter-rouge">flora</code>, <code class="language-plaintext highlighter-rouge">ncatlab</code>, <code class="language-plaintext highlighter-rouge">protondb</code>, <code class="language-plaintext highlighter-rouge">rosettacode</code>, <code class="language-plaintext highlighter-rouge">sourcehut</code>,
<code class="language-plaintext highlighter-rouge">steam</code>, <code class="language-plaintext highlighter-rouge">voidpgks_x86_64</code>, <code class="language-plaintext highlighter-rouge">voidpgks_x86_64_musl</code>, <code class="language-plaintext highlighter-rouge">arXiv</code>,
<code class="language-plaintext highlighter-rouge">clojureDocs</code>, <code class="language-plaintext highlighter-rouge">cratesIo</code>, <code class="language-plaintext highlighter-rouge">rustStd</code>, <code class="language-plaintext highlighter-rouge">noogle</code>, <code class="language-plaintext highlighter-rouge">nixos</code>, <code class="language-plaintext highlighter-rouge">homeManager</code>,
and <code class="language-plaintext highlighter-rouge">zbmath</code> search engines.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.ResizableThreeColumns</code></p>

    <ul>
      <li>Fixed an issue where the bottom right window would not respond to
<code class="language-plaintext highlighter-rouge">MirrorShrink</code> and <code class="language-plaintext highlighter-rouge">MirrorExpand</code> messages.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.EwmhDesktops</code></p>

    <ul>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">disableEwmhManageDesktopViewport</code> to avoid setting the
<code class="language-plaintext highlighter-rouge">_NET_DESKTOP_VIEWPORT</code> property, as it can lead to issues with
some status bars (see this
<a href="https://github.com/polybar/polybar/issues/2603">polybar issue</a>).</p>
      </li>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">setEwmhFullscreenHooks</code> to override the default fullfloat/sink
behaviour of <code class="language-plaintext highlighter-rouge">_NET_WM_STATE_FULLSCREEN</code> requests. See also
<code class="language-plaintext highlighter-rouge">XMonad.Actions.ToggleFullFloat</code> for a float-restoring implementation of
fullscreening.</p>
      </li>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">ewmhDesktops(Maybe)ManageHook</code> that places windows in their
preferred workspaces. This is useful when restoring a browser session
after a restart.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.StatusBar</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">startAllStatusBars</code> to start the configured status bars.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Prompt</code></p>

    <ul>
      <li>
        <p>The <code class="language-plaintext highlighter-rouge">emacsLikeXPKeymap</code> and <code class="language-plaintext highlighter-rouge">vimLikeXPKeymap</code> keymaps now treat
<code class="language-plaintext highlighter-rouge">C-m</code> the same as <code class="language-plaintext highlighter-rouge">Return</code>; the latter keymap now also accepts the
prompt upon pressing enter in normal mode.</p>
      </li>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">prevCompletionKey</code> to <code class="language-plaintext highlighter-rouge">XPConfig</code>, facilitating the ability
to cycle through the completions backwards. This is bound to
<code class="language-plaintext highlighter-rouge">S-&lt;TAB&gt;</code> by default.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.Prefix</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">orIfPrefixed</code>, a combinator to decide upon an action based
on whether any prefix argument was given.</li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Prompt.Pass</code></p>

    <ul>
      <li>Added <code class="language-plaintext highlighter-rouge">passOTPTypePrompt</code> to type out one-time-passwords via <code class="language-plaintext highlighter-rouge">xdotool</code>.</li>
    </ul>
  </li>
</ul>]]></content><author><name></name></author><category term="news" /><summary type="html"><![CDATA[New versions of xmonad and xmonad-contrib have been released. Check out our download page for instructions on where to get them.]]></summary><media:thumbnail xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" /><media:content medium="image" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" /></entry><entry><title type="html">Wayland</title><link href="https://un5v22h10b5tevr.julianrbryant.com/news/2023/10/06/wayland.html" rel="alternate" type="text/html" title="Wayland" /><published>2023-10-06T00:00:00+00:00</published><updated>2023-10-06T00:00:00+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/news/2023/10/06/wayland</id><content type="html" xml:base="https://un5v22h10b5tevr.julianrbryant.com/news/2023/10/06/wayland.html"><![CDATA[<p>We on the XMonad devteam (Tomáš, Tony, Yecine, and myself) have been collecting contributions for the past two years with an eye toward paying someone to work on a port of XMonad to Wayland, since none of us is up to the task. We think we now have enough contributions coming in monthly to pay for someone to work with us on it.</p>

<p>Problem is, we have no idea who can do this. So this is a call for help, looking for someone who can write it. There is an <a href="https://github.com/L-as/waymonad">existing project</a> but it’s badly bitrotted, including using a very old and buggy version of <a href="https://un5q025qp35t2xfwug0b4q1p1eja2.julianrbryant.com/wlroots">wlroots</a>, and L-as has had little time to revisit it. It’s not clear that it’s worth revisiting.</p>

<p>One problem that’s unlikely to be solvable is that Wayland programs don’t set distinct identifiers that a <code class="language-plaintext highlighter-rouge">manageHook</code> could use, so the <code class="language-plaintext highlighter-rouge">appName</code> and <code class="language-plaintext highlighter-rouge">className</code> hooks can’t be ported. We welcome information to the contrary, though.</p>

<p>So, help? Comments and especially proposals welcome on the <a href="https://un5wmbabfkxd6dnm3jappqk49yug.julianrbryant.com/t/xmonad-for-wayland-call-for-help/7812">Discourse thread</a>.</p>]]></content><author><name></name></author><category term="news" /><summary type="html"><![CDATA[We on the XMonad devteam (Tomáš, Tony, Yecine, and myself) have been collecting contributions for the past two years with an eye toward paying someone to work on a port of XMonad to Wayland, since none of us is up to the task. We think we now have enough contributions coming in monthly to pay for someone to work with us on it.]]></summary></entry><entry><title type="html">xmonad 0.17.2 is available</title><link href="https://un5v22h10b5tevr.julianrbryant.com/news/2023/04/02/xmonad-0-17-2.html" rel="alternate" type="text/html" title="xmonad 0.17.2 is available" /><published>2023-04-02T00:00:00+00:00</published><updated>2023-04-02T00:00:00+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/news/2023/04/02/xmonad-0-17-2</id><content type="html" xml:base="https://un5v22h10b5tevr.julianrbryant.com/news/2023/04/02/xmonad-0-17-2.html"><![CDATA[<p>A new version of <code class="language-plaintext highlighter-rouge">xmonad</code> has been released. Check out our <a href="/download.html">download
page</a> for instructions on
where to get it.</p>

<p>This minor version release is purely for compatibility with GHC 9.6;
more precisely, it allows <code class="language-plaintext highlighter-rouge">xmonad</code> to build with <code class="language-plaintext highlighter-rouge">mtl</code> version 2.3.1, as
well as <code class="language-plaintext highlighter-rouge">unix</code> version 2.8.0.0.</p>]]></content><author><name></name></author><category term="news" /><summary type="html"><![CDATA[A new version of xmonad has been released. Check out our download page for instructions on where to get it.]]></summary><media:thumbnail xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" /><media:content medium="image" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" /></entry><entry><title type="html">An Update for our Sponsors—and a Request</title><link href="https://un5v22h10b5tevr.julianrbryant.com/news/2023/03/16/sponsors-update.html" rel="alternate" type="text/html" title="An Update for our Sponsors—and a Request" /><published>2023-03-16T00:00:00+00:00</published><updated>2023-03-16T00:00:00+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/news/2023/03/16/sponsors-update</id><content type="html" xml:base="https://un5v22h10b5tevr.julianrbryant.com/news/2023/03/16/sponsors-update.html"><![CDATA[<p>It has been a little bit over a year since XMonad <a href="/news/2021/10/27/xmonad-0-17-0.html">version 0.17.0</a> was
released; this was also the time in which we first started looking for
funding.  On the whole, the number of people who decided to support us
has been astounding: thank you!  While our expenses are <a href="https://un5mvxyuxgypm7ph3w.julianrbryant.com/xmonad">completely
transparent</a>, it can be hard to keep up if you’re not
directly involved in the project.  Hence, we’d like to take this
opportunity to summarise what we did in the past year.</p>

<ul>
  <li>
    <p>We met up!  More specifically, many of us went to
<a href="https://un5t1ytcggy0.julianrbryant.com/zurihac2022/">ZuriHac 2022</a>; conferences like these are a great
opportunity to get to know the team a little bit better, as well as to
discuss plans and future directions.  Not to mention we had the
opportunity to talk to (a surprising number of) users!  In addition, a
few also attended <a href="https://un5pdhtph2wx6fg.julianrbryant.com/2022.html">MuniHac 2022</a>; again, some great
conversations were had with people as excited about XMonad as us.</p>

    <p>If you missed these, then don’t worry: plans are already being made
for <a href="https://un5t1ytcggy0.julianrbryant.com/zurihac2023/">ZuriHac 2023</a>, and we hope to see you there—we’ll
bring stickers!</p>
  </li>
  <li>
    <p>Since 2021-10-27<sup id="fnref:1" role="doc-noteref"><a href="#fn:1" class="footnote" rel="footnote">1</a></sup>, the <code class="language-plaintext highlighter-rouge">xmonad-contrib</code> repository has seen quite
some activity: all in all, almost 400 commits have been made!
Needless to say, this means a lot of new features, as well as
several—sometimes long-standing—bugfixes.  This could probably not
have been done without your financial support, allowing some of us to
spend some more time with XMonad than before.  As far as future plans
go, we plan on completely overhauling the XMonad prompt, making it
behave more sensibly in common situations.</p>

    <p>The core of XMonad, the <code class="language-plaintext highlighter-rouge">xmonad</code> repository, has long since been
declared “stable”; yet, we still managed to squeeze in just under
40 commits.  Additionally, in the recent past we have been working on
a <a href="https://github.com/xmonad/xmonad/pull/432">redesign</a> of the way XMonad handles refreshes, which
might enable us to squash other long standing issues with the way the
logHook interacts with the <code class="language-plaintext highlighter-rouge">windows</code> function.</p>

    <p>While some of this work is unreleased as of yet, during all of this
time we also managed to release version XMonad version 0.17.1.</p>
  </li>
</ul>

<p>Recently, GitHub decided to <a href="https://github.blog/changelog/2023-01-23-github-sponsors-will-stop-supporting-paypal/">stop support PayPal</a>,
which caused a lot of free software projects to lose sponsors—we were no
exception to this.  So that we can continue spending as much time on
XMonad as we have, please think about <a href="https://github.com/sponsors/xmonad">renewing your
contribution</a> with updated payment details!  If you
want to know what exactly happens with the money: all of our monetary
activity is completely transparent, and can be viewed <a href="https://un5mvxyuxgypm7ph3w.julianrbryant.com/xmonad">here</a>.
Thanks!</p>

<p><a href="https://github.com/sponsors/xmonad"><img src="https://un5uj72gw31gyk5mhhq0.julianrbryant.com/github/sponsors/xmonad?label=GitHub%20Sponsors&amp;logo=githubsponsors" alt="GitHub Sponsors" class="d-inline" /></a>
<a href="https://un5mvxyuxgypm7ph3w.julianrbryant.com/xmonad"><img src="https://un5uj72gw31gyk5mhhq0.julianrbryant.com/opencollective/all/xmonad?label=Open%20Collective&amp;logo=opencollective" alt="Open Collective" class="d-inline" /></a></p>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:1" role="doc-endnote">
      <p>The day of the <code class="language-plaintext highlighter-rouge">xmonad</code> and <code class="language-plaintext highlighter-rouge">xmonad-contrib</code> 0.17.0 release. <a href="#fnref:1" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="news" /><summary type="html"><![CDATA[It has been a little bit over a year since XMonad version 0.17.0 was released; this was also the time in which we first started looking for funding. On the whole, the number of people who decided to support us has been astounding: thank you! While our expenses are completely transparent, it can be hard to keep up if you’re not directly involved in the project. Hence, we’d like to take this opportunity to summarise what we did in the past year.]]></summary><media:thumbnail xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" /><media:content medium="image" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" /></entry><entry><title type="html">xmonad and xmonad-contrib 0.17.1 are available</title><link href="https://un5v22h10b5tevr.julianrbryant.com/news/2022/09/03/xmonad-0-17-1.html" rel="alternate" type="text/html" title="xmonad and xmonad-contrib 0.17.1 are available" /><published>2022-09-03T00:00:00+00:00</published><updated>2022-09-03T00:00:00+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/news/2022/09/03/xmonad-0-17-1</id><content type="html" xml:base="https://un5v22h10b5tevr.julianrbryant.com/news/2022/09/03/xmonad-0-17-1.html"><![CDATA[<p>New versions of xmonad and xmonad-contrib have been released.  Check out
our <a href="/download.html">download page</a> for
instructions on where to get them.</p>

<p>About 10 months after the big release of 0.17.0, we—as promised—picked
up the pace a bit and are back with a new minor version; don’t let that
fool you though, this one still packs a punch!  Plus, we now sport a
brand-new <a href="/images/logo.svg">logo</a>, courtesy of <a href="https://github.com/literallyunplayable">Hans Heintze</a>.</p>

<p>As this is a minor release, we tried to keep the breaking changes to a
minimum (xmonad core does not have a single one!)  However, some were
unavoidable for <code class="language-plaintext highlighter-rouge">xmonad-contrib</code>, so be sure to at least glance at the
<a href="#xmonad-contrib-0171">release notes</a>!</p>

<p>For help getting started—or more info—see <a href="https://un5v22h10b5tevr.julianrbryant.com/">our website</a> and
<a href="https://un5v22h10b5tevr.julianrbryant.com/community.html">talk to us</a>!  If you like what we do, you can support us on
<a href="https://un5mvxyuxgypm7ph3w.julianrbryant.com/xmonad">Open Collective</a> or via <a href="https://github.com/sponsors/xmonad">GitHub Sponsors</a>.  Thanks!</p>

<h3 class="no_toc" id="table-of-contents">Table of Contents</h3>

<ul id="markdown-toc">
  <li><a href="#xmonad-0171" id="markdown-toc-xmonad-0171">xmonad 0.17.1</a>    <ul>
      <li><a href="#enhancements" id="markdown-toc-enhancements">Enhancements</a></li>
      <li><a href="#bug-fixes" id="markdown-toc-bug-fixes">Bug Fixes</a></li>
    </ul>
  </li>
  <li><a href="#xmonad-contrib-0171" id="markdown-toc-xmonad-contrib-0171">xmonad-contrib 0.17.1</a>    <ul>
      <li><a href="#breaking-changes" id="markdown-toc-breaking-changes">Breaking Changes</a></li>
      <li><a href="#new-modules" id="markdown-toc-new-modules">New Modules</a></li>
      <li><a href="#bug-fixes-and-minor-changes" id="markdown-toc-bug-fixes-and-minor-changes">Bug Fixes and Minor Changes</a></li>
    </ul>
  </li>
</ul>

<h1 id="xmonad-0171">xmonad 0.17.1</h1>

<p>This release includes 32 non-merge commits by 6 contributors!  For a
full summary of all the changes, see <a href="https://github.com/xmonad/xmonad/blob/v0.17.1/CHANGES.md">xmonad’s CHANGES.md</a> file.</p>

<h2 id="enhancements">Enhancements</h2>

<ul>
  <li>Added custom cursor shapes for resizing and moving windows.</li>
</ul>

<h2 id="bug-fixes">Bug Fixes</h2>

<ul>
  <li>
    <p>Change the main loop to try to avoid <a href="https://un5q025qp35xyqj0h56cy9h0br.julianrbryant.com/ghc/ghc/-/issues/21708">GHC bug 21708</a> on systems
running GHC 9.2 up to version 9.2.3.  The issue has been fixed in
<a href="https://un5wmbabfkxd6dnm3jappqk49yug.julianrbryant.com/t/ghc-9-2-4-released/4851">GHC 9.2.4</a> and all later releases.</p>
  </li>
  <li>
    <p>Fixed border color of windows with alpha channel.  Now all windows
have the same opaque border color.</p>
  </li>
</ul>

<h1 id="xmonad-contrib-0171">xmonad-contrib 0.17.1</h1>

<p>This release includes 212 non-merge commits by 32 contributors!  For a
full summary of all the changes, see <a href="https://github.com/xmonad/xmonad-contrib/blob/v0.17.1/CHANGES.md">xmonad-contrib’s CHANGES.md</a> file.</p>

<h2 id="breaking-changes">Breaking Changes</h2>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Config.{Arossato,Dmwit,Droundy,Monad,Prime,Saegesser,Sjanssen}</code>:
deprecated all of these modules.  The user-specific configuration
modules may still be found <a href="https://un5v22h10b5tevr.julianrbryant.com/configurations.html">on the website</a>.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.NamedScratchpad</code>: scratchpads are now only based on the
 argument given to <code class="language-plaintext highlighter-rouge">namedScratchpadManageHook</code>; all other scratchpad
 arguments are, while still present, ignored.  Users passing all of
 their scratchpads to functions like <code class="language-plaintext highlighter-rouge">namedScratchpadAction</code> (as is
 shown in the module’s documentation) should <em>not</em> notice any
 difference in behaviour.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.DynamicScratchpads</code>: deprecated the module; use the new
dynamic scratchpad functionality of <code class="language-plaintext highlighter-rouge">XMonad.Util.NamedScratchpad</code>
instead.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.UrgencyHook</code>: deprecated <code class="language-plaintext highlighter-rouge">urgencyConfig</code>; use <code class="language-plaintext highlighter-rouge">def</code>
from the new <code class="language-plaintext highlighter-rouge">Default</code> instance of <code class="language-plaintext highlighter-rouge">UrgencyConfig</code> instead.</p>
  </li>
</ul>

<h2 id="new-modules">New Modules</h2>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.Modal</code>: a module implementing modal keybindings for
XMonad.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Layout.SideBorderDecoration</code>: this module allows for having
a configurable border position around windows; i.e., it can move the
border to either cardinal direction.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.PerLayoutKeys</code>: a new module for customising
keybindings on a per-layout basis.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.RepeatAction</code>: a module for adding a keybinding to
repeat the last action, similar to Vim’s <code class="language-plaintext highlighter-rouge">.</code> or Emacs’s <code class="language-plaintext highlighter-rouge">dot-mode</code>.</p>
  </li>
</ul>

<h2 id="bug-fixes-and-minor-changes">Bug Fixes and Minor Changes</h2>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Prompt</code> and <code class="language-plaintext highlighter-rouge">XMonad.Actions.TreeSelect</code>: added xft-based
font fallback support.  This may be used by appending other fonts to
the given string: <code class="language-plaintext highlighter-rouge">xft:iosevka-11,FontAwesome-9</code>.  Note that this
requires <code class="language-plaintext highlighter-rouge">xmonad-contrib</code> to be compiled with <code class="language-plaintext highlighter-rouge">X11-xft</code> version
0.3.4 or higher.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.Run</code>: added an EDSL—particularly geared towards
programs like terminals or Emacs—to spawn processes from XMonad in a
compositional way.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.Hacks</code>: added <code class="language-plaintext highlighter-rouge">trayerPaddingXmobarEventHook</code> (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 <code class="language-plaintext highlighter-rouge">xmobar</code> version 0.40 or higher.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Prompt.OrgMode</code>: added the ability to specify alphabetic
(<code class="language-plaintext highlighter-rouge">#A</code>, <code class="language-plaintext highlighter-rouge">#B</code>, and <code class="language-plaintext highlighter-rouge">#C</code>) <a href="https://un5p270kxk7x6zm5.julianrbryant.com/manual/Priorities.html">priorities</a> at the end of the input note.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.Submap</code>: added <code class="language-plaintext highlighter-rouge">visualSubmap</code> to visualise the
available keys and their actions when inside a submap.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.NamedScratchpad</code>: added support for dynamic scratchpads
in the form of <code class="language-plaintext highlighter-rouge">dynamicNSPAction</code> and <code class="language-plaintext highlighter-rouge">toggleDynamicNSP</code>.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.WindowSwallowing</code>: fixed windows getting lost when
used in conjunction with <code class="language-plaintext highlighter-rouge">smartBorders</code> and a single window.</p>
  </li>
</ul>]]></content><author><name></name></author><category term="news" /><summary type="html"><![CDATA[New versions of xmonad and xmonad-contrib have been released. Check out our download page for instructions on where to get them.]]></summary><media:thumbnail xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" url="https://un5v22h10b5tevr.julianrbryant.com/images/xmonad-0.17.1.png" /><media:content medium="image" url="https://un5v22h10b5tevr.julianrbryant.com/images/xmonad-0.17.1.png" xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" /></entry><entry><title type="html">A new logo for XMonad</title><link href="https://un5v22h10b5tevr.julianrbryant.com/news/2022/01/18/logo-contest-results.html" rel="alternate" type="text/html" title="A new logo for XMonad" /><published>2022-01-18T00:00:00+00:00</published><updated>2022-01-18T00:00:00+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/news/2022/01/18/logo-contest-results</id><content type="html" xml:base="https://un5v22h10b5tevr.julianrbryant.com/news/2022/01/18/logo-contest-results.html"><![CDATA[<p>In case you’ve missed it: <a href="https://github.com/xmonad/xmonad/discussions/359">voting</a> for the <a href="https://github.com/xmonad/xmonad/discussions/343">XMonad logo contest</a> has
finished!
<!-- end excerpt -->
We’d like to congratulate Hans Heintze for their winning
submission <code class="language-plaintext highlighter-rouge">minimalist</code>:</p>

<p><img src="/images/logo.svg" alt="xmonad-logo" /></p>

<p>The submission also includes a wordmark:</p>

<p><img src="/images/logo-wordmark.svg" alt="xmonad-wordmark" /></p>

<p>More details, as well as a full breakdown of the voting procedure can be
found in <a href="https://github.com/xmonad/xmonad/discussions/359#discussioncomment-1977016">this comment</a>.</p>

<p>We’d like to thank everyone who submitted a logo or took the time to
vote for their favourite entries—the amount of attention and great
submissions this got was a total surprise for all of us!</p>]]></content><author><name></name></author><category term="news" /><summary type="html"><![CDATA[In case you’ve missed it: voting for the XMonad logo contest has finished!]]></summary><media:thumbnail xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" /><media:content medium="image" url="https://un5v22h10b5tevr.julianrbryant.com/images/logo-wordmark.png" xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" /></entry><entry><title type="html">xmonad and xmonad-contrib 0.17.0 are available</title><link href="https://un5v22h10b5tevr.julianrbryant.com/news/2021/10/27/xmonad-0-17-0.html" rel="alternate" type="text/html" title="xmonad and xmonad-contrib 0.17.0 are available" /><published>2021-10-27T00:00:00+00:00</published><updated>2021-10-27T00:00:00+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/news/2021/10/27/xmonad-0-17-0</id><content type="html" xml:base="https://un5v22h10b5tevr.julianrbryant.com/news/2021/10/27/xmonad-0-17-0.html"><![CDATA[<p>New versions of xmonad and xmonad-contrib have been released.  Check out
our <a href="/download.html">download page</a> for
instructions on where to get them.</p>

<p>It’s been a little over 3 years since xmonad 0.15, and a little over 2 years
since xmonad-contrib 0.16. A lot has happened. This post is an overview of
the most important changes. To celebrate this milestone, we announce <a href="#logo-contest">a contest
for a new xmonad logo</a>.</p>

<p>Last but not least, <a href="#looking-for-funding">we’re looking to raise funds</a> to
keep the XMonad project and community alive and relevant in the next decade.
With the <a href="https://un5xruhmghfx6zm5.julianrbryant.com/archives/xorg/2021-October/060799.html">final X.Org Server 21.1 release</a> being announced
today, there are some obvious challenges ahead of us.</p>

<h3 class="no_toc" id="table-of-contents">Table of Contents</h3>

<ul id="markdown-toc">
  <li><a href="#xmonad-0170" id="markdown-toc-xmonad-0170">xmonad 0.17.0</a>    <ul>
      <li><a href="#major-breaking-changes" id="markdown-toc-major-breaking-changes">Major Breaking Changes</a></li>
      <li><a href="#selected-features-and-improvements" id="markdown-toc-selected-features-and-improvements">Selected Features and Improvements</a></li>
    </ul>
  </li>
  <li><a href="#xmonad-contrib-0170" id="markdown-toc-xmonad-contrib-0170">xmonad-contrib 0.17.0</a>    <ul>
      <li><a href="#major-breaking-changes-1" id="markdown-toc-major-breaking-changes-1">Major Breaking Changes</a></li>
      <li><a href="#selected-features-and-improvements-1" id="markdown-toc-selected-features-and-improvements-1">Selected Features and Improvements</a></li>
    </ul>
  </li>
  <li><a href="#logo-contest" id="markdown-toc-logo-contest">Logo Contest</a></li>
  <li><a href="#looking-for-funding" id="markdown-toc-looking-for-funding">Looking for Funding</a></li>
</ul>

<h2 id="xmonad-0170">xmonad 0.17.0</h2>

<p>This release includes 156 non-merge commits by 22 contributors!  For a full
summary of all the changes, see <a href="https://github.com/xmonad/xmonad/blob/v0.17.0/CHANGES.md">xmonad’s CHANGES.md</a> file.</p>

<h3 id="major-breaking-changes">Major Breaking Changes</h3>

<ul>
  <li><code class="language-plaintext highlighter-rouge">util/GenerateManpage.hs</code> is no longer distributed in the tarball.</li>
</ul>

<h3 id="selected-features-and-improvements">Selected Features and Improvements</h3>

<ul>
  <li>
    <p>Migrated <code class="language-plaintext highlighter-rouge">X.L.LayoutCombinators.(|||)</code> into <code class="language-plaintext highlighter-rouge">XMonad.Layout</code>,
providing the ability to directly jump to a layout with the
<code class="language-plaintext highlighter-rouge">JumpToLayout</code> message.</p>
  </li>
  <li>
    <p>Improved handling of XDG directories.</p>

    <ol>
      <li>
        <p>If all three of xmonad’s environment variables
(<code class="language-plaintext highlighter-rouge">XMONAD_DATA_DIR,</code> <code class="language-plaintext highlighter-rouge">XMONAD_CONFIG_DIR</code>, and <code class="language-plaintext highlighter-rouge">XMONAD_CACHE_DIR</code>)
are set, use them.</p>
      </li>
      <li>
        <p>If there is a build script called <code class="language-plaintext highlighter-rouge">build</code> (see
<a href="https://github.com/xmonad/xmonad-testing/tree/master/build-scripts">here</a>
for usage examples) or configuration <code class="language-plaintext highlighter-rouge">xmonad.hs</code> in <code class="language-plaintext highlighter-rouge">~/.xmonad</code>,
set all three directories to <code class="language-plaintext highlighter-rouge">~/.xmonad</code>.</p>
      </li>
      <li>
        <p>Otherwise, use the <code class="language-plaintext highlighter-rouge">xmonad</code> directory in <code class="language-plaintext highlighter-rouge">XDG_DATA_HOME</code>,
<code class="language-plaintext highlighter-rouge">XDG_CONFIG_HOME</code>, and <code class="language-plaintext highlighter-rouge">XDG_CACHE_HOME</code> (or their respective
fallbacks).  These directories are created if necessary.</p>
      </li>
    </ol>

    <p>In the cases of 1. and 3., the build script or executable is
expected to be in the config dir.</p>

    <p>Additionally, the xmonad config binary and intermediate object files
were moved to the cache directory (only relevant if using XDG or
<code class="language-plaintext highlighter-rouge">XMONAD_CACHE_DIR</code>).</p>
  </li>
  <li>
    <p>Recompilation now detects <code class="language-plaintext highlighter-rouge">stack.yaml</code> (can be a symlink) alongside
<code class="language-plaintext highlighter-rouge">xmonad.hs</code> and switches to using <code class="language-plaintext highlighter-rouge">stack ghc</code>.</p>

    <p>Additionally, deprecation warnings during recompilation are no
longer suppressed.  These can still be suppressed manually using an
<code class="language-plaintext highlighter-rouge">OPTIONS_GHC</code> pragma with <code class="language-plaintext highlighter-rouge">-Wno-deprecations</code>.</p>
  </li>
</ul>

<h2 id="xmonad-contrib-0170">xmonad-contrib 0.17.0</h2>

<p>This release includes 582 non-merge commits by 57 contributors!  For a full
summary of all the changes, see <a href="https://github.com/xmonad/xmonad-contrib/blob/v0.17.0/CHANGES.md">xmonad-contrib’s CHANGES.md</a> file.</p>

<h3 id="major-breaking-changes-1">Major Breaking Changes</h3>

<ul>
  <li>
    <p>All modules that export bitmap fonts as their default</p>

    <ul>
      <li>
        <p>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.</p>

      </li>
    </ul>
  </li>
  <li>
    <p>All modules still exporting a <code class="language-plaintext highlighter-rouge">defaultFoo</code> constructor</p>

    <ul>
      <li>
        <p>All of these were now removed.  You can use the re-exported <code class="language-plaintext highlighter-rouge">def</code>
from <code class="language-plaintext highlighter-rouge">Data.Default</code> instead.</p>

      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.StatusBar</code>, <code class="language-plaintext highlighter-rouge">XMonad.Hooks.StatusBar.PP</code> (previously
<code class="language-plaintext highlighter-rouge">XMonad.Hooks.DynamicLog</code>) and <code class="language-plaintext highlighter-rouge">XMonad.Util.Run</code></p>

    <ul>
      <li>
        <p><code class="language-plaintext highlighter-rouge">spawnPipe</code> no longer uses binary mode handles and defaults to the
current locale encoding instead, <code class="language-plaintext highlighter-rouge">xmonadPropLog</code> and
<code class="language-plaintext highlighter-rouge">xmonadPropLog'</code> now encode their input string in UTF-8, and
<code class="language-plaintext highlighter-rouge">dynamicLogString</code> no longer encodes its output in UTF-8.  When
these functions are used together, everything should continue to
work as it always has, but in isolation behaviour might change.</p>

        <p>To get the old <code class="language-plaintext highlighter-rouge">spawnPipe</code> behaviour, <code class="language-plaintext highlighter-rouge">spawnPipeWithNoEncoding</code>
can now be used, and <code class="language-plaintext highlighter-rouge">spawnPipeWithUtf8Encoding</code> was added as well
to force UTF-8 regardless of locale.</p>
      </li>
      <li>
        <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.DynamicLog</code> will be deprecated soon in favor of
<code class="language-plaintext highlighter-rouge">XMonad.Hooks.StatusBar</code> which offers a nicer and easier to use
interface for status bars. Laptop users who (dis)connect external
monitors dynamically should definitely try this new interface:
<code class="language-plaintext highlighter-rouge">XMonad.Hooks.DynamicBars</code> has been deprecated already.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.EwmhDesktops</code></p>

    <ul>
      <li>
        <p>It is no longer recommended to use standalone hooks directly:</p>

        <p>Instead of <code class="language-plaintext highlighter-rouge">ewmhDesktopsStartup</code>, <code class="language-plaintext highlighter-rouge">ewmhDesktopsLogHook(Custom)</code> and
<code class="language-plaintext highlighter-rouge">ewmhDesktopsEventHook(Custom)</code>, users should now use the <code class="language-plaintext highlighter-rouge">ewmh</code>
combinator. The <code class="language-plaintext highlighter-rouge">Custom</code> variants have been replaced by a <a href="https://un5v22h10b5rcyxcrjjbfp0.julianrbryant.com/xmonad-docs/xmonad-contrib-0.17.0/XMonad-Hooks-EwmhDesktops.html#g:2">more
composable interface</a> which now also allows
simply marking windows that request focus as urgent instead of
immediately focusing them.</p>

        <p>Instead of <code class="language-plaintext highlighter-rouge">fullscreenEventHook</code>, use <code class="language-plaintext highlighter-rouge">ewmhFullscreen</code>, which now
advertises fullscreen support to applications, fixing fullscreen in
<a href="https://un5pc6ukggug.julianrbryant.com/">mpv</a> and many others.</p>
      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.Script</code></p>

    <ul>
      <li>
        <p><code class="language-plaintext highlighter-rouge">execScriptHook</code> now has an <code class="language-plaintext highlighter-rouge">X</code> constraint (was: <code class="language-plaintext highlighter-rouge">MonadIO</code>), due
to changes in how the xmonad core handles XDG directories.</p>

      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.WorkspaceNames</code></p>

    <ul>
      <li>
        <p>The type of <code class="language-plaintext highlighter-rouge">getWorkspaceNames</code> was changed to fit into the new
<code class="language-plaintext highlighter-rouge">ppRename</code> field of <code class="language-plaintext highlighter-rouge">PP</code>.</p>

      </li>
    </ul>
  </li>
</ul>

<h3 id="selected-features-and-improvements-1">Selected Features and Improvements</h3>

<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.EasyMotion</code></p>

    <p>A new module that allows selection of visible screens using a key
chord—inspired by <a href="https://github.com/easymotion/vim-easymotion">vim-easymotion</a>. See the animation in the
vim-easymotion repo to get some idea of the functionality of this
module.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Prompt.OrgMode</code></p>

    <p>A prompt for interacting with <a href="https://un5p270kxk7x6zm5.julianrbryant.com/">org-mode</a>. 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.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.StatusBar</code></p>

    <p>A new module, providing a nicer, composable interface for status bars that
replaces <code class="language-plaintext highlighter-rouge">XMonad.Hooks.DynamicLog</code> and <code class="language-plaintext highlighter-rouge">XMonad.Hooks.DynamicBars</code>.
Supports property-based as well as pipe-based status bars, multiple status
bars (Xinerama), and takes care of restarting the bars as needed.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.Rescreen</code></p>

    <p>A new module, providing custom hooks for screen (xrandr) configuration
changes. These are used internally by <code class="language-plaintext highlighter-rouge">XMonad.Hooks.StatusBar</code> to restart
status bars/systrays after xrandr, and can also be used to invoke xrandr
or autorandr when an output is (dis)connected.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.Hacks</code></p>

    <p>A collection of hacks and fixes that should be easily accessible to
users, like a fix for the fullscreen behaviour of chromium based
applications when using windowed fullscreen, or a fix to make
certain Java applications play more nicely with xmonad.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.WindowSwallowing</code></p>

    <p>A new module to implement window swallowing; optionally via
sublayouting.  Hide parent windows like terminals when opening other
programs (like image viewers) from within them, restoring them once
the child application closes.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.ClickableWorkspaces</code></p>

    <p>A new module providing <code class="language-plaintext highlighter-rouge">clickablePP</code>, which when applied to the <code class="language-plaintext highlighter-rouge">PP</code>
pretty-printer used by <code class="language-plaintext highlighter-rouge">XMonad.Hooks.StatusBar.PP</code>, will make the
workspace tags clickable in XMobar (for switching focus).</p>

    <p>Note that <code class="language-plaintext highlighter-rouge">XMonad.Layout.IndependentScreens</code> and
<code class="language-plaintext highlighter-rouge">XMonad.Actions.WorkspaceNames</code> now also use the same composable
<code class="language-plaintext highlighter-rouge">ppRename</code> interface as <code class="language-plaintext highlighter-rouge">XMonad.Util.ClickableWorkspaces</code> so it’s much
easier to use them with one another.</p>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Util.Loggers</code></p>

    <ul>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">logTitles</code> to log all window titles (focused and unfocused
ones) on the focused workspace, as well as <code class="language-plaintext highlighter-rouge">logTitlesOnScreen</code> as
a screen-specific variant thereof.</p>

      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Actions.TopicSpace</code></p>

    <ul>
      <li>
        <p>Added <code class="language-plaintext highlighter-rouge">TopicItem</code>, as well as the helper functions <code class="language-plaintext highlighter-rouge">topicNames</code>,
<code class="language-plaintext highlighter-rouge">tiActions</code>, <code class="language-plaintext highlighter-rouge">tiDirs</code>, <code class="language-plaintext highlighter-rouge">noAction</code>, and <code class="language-plaintext highlighter-rouge">inHome</code> for a drastically
simpler specification of topics.</p>

      </li>
    </ul>
  </li>
  <li>
    <p><code class="language-plaintext highlighter-rouge">XMonad.Hooks.ServerMode</code></p>

    <ul>
      <li>
        <p>To make it easier to use, the <code class="language-plaintext highlighter-rouge">xmonadctl</code> client is now included
in <code class="language-plaintext highlighter-rouge">scripts/</code>.</p>

      </li>
    </ul>
  </li>
</ul>

<h2 id="logo-contest">Logo Contest</h2>

<p>We’d also like to announce a contest to create a new xmonad logo to
replace the current one.  If you want to participate, please submit at
most <em>three</em> logos (in SVG format) to <a href="https://github.com/xmonad/xmonad/discussions/343">this GitHub discussion</a> by the
31st of January.  <strong>Please do not vote for a logo yet—voting will start
after the above deadline.</strong>  Your logo will need to be licensed under a
suitable freely distributable license; for example, the CC BY-SA 4.0.</p>

<p>The prize for the winner is <code class="language-plaintext highlighter-rouge">$100</code>!</p>

<p>For voting, we will use an <a href="https://un5qgjbzw9dxcq3ecfxberhh.julianrbryant.com/wiki/Instant-runoff_voting">instant-runoff</a> type system.  In short:</p>

<ul>
  <li>Users rank a minimum of three submissions according to their
preferences in decreasing order.</li>
  <li>If a logo wins a majority of first-preference votes (&gt; 50%) it is
chosen.</li>
  <li>If not, we eliminate the logo with the least amount of first
preference votes, exposing the second preference of those who voted
for it.</li>
  <li>Rinse and repeat until we have a majority.</li>
  <li>If at the end of all that we still don’t have a majority, we will
act as a tiebreaker and internally vote for a winner from the
remaining logos.</li>
</ul>

<p>We will retain veto power in case of inappropriate logos.  Team members
whose submitted entries are amongst the remaining choices will not
partake in the potential tiebreaking vote.</p>

<h2 id="looking-for-funding">Looking for Funding</h2>

<p>TL;DR:
<a href="https://github.com/sponsors/xmonad"><img src="https://un5uj72gw31gyk5mhhq0.julianrbryant.com/github/sponsors/xmonad?label=GitHub%20Sponsors&amp;logo=githubsponsors" alt="GitHub Sponsors" class="d-inline" /></a>
<a href="https://un5mvxyuxgypm7ph3w.julianrbryant.com/xmonad"><img src="https://un5uj72gw31gyk5mhhq0.julianrbryant.com/opencollective/all/xmonad?label=Open%20Collective&amp;logo=opencollective" alt="Open Collective" class="d-inline" /></a></p>

<p>XMonad has been around since 2007 and has a great track record in stability.
There’s an active, vibrant community of users and developers who help each
other and contribute fixes and extensions. Keeping this community organized,
reviewing and merging contributions and responding to bug reports is almost a
full-time job, however, not to mention doing actual development. We’ve been
struggling to find volunteers to do all this work, especially the less
exciting bits like documentation.</p>

<p>Despite that struggle, we managed to repay a portion of our technological and
organizational debt over the last year, and to pick up the pace of
development:</p>

<p><img src="/images/xmonad-0-17-0/commits.svg" alt="activity chart" class="img-fluid px-md-5" /></p>

<p>We’re worried about the sustainability of that pace, however. As with the
previous generations of maintainers, our studies and sabbaticals won’t last
forever.</p>

<p><strong>Your help is needed to keep the project alive and well. We’d like to raise
enough funds to enable at least one core developer to work on XMonad full-time
(or several part-time).</strong> To learn more about our plans for the future, see
our <a href="https://github.com/sponsors/xmonad">GitHub Sponsors</a> profile.</p>

<p>Thanks to <a href="https://un5w0thmgkvcgyf4xqcz7d8.julianrbryant.com/item?id=28793941">one unexpected appearance on the Hacker News front
page</a>, we already gathered a couple dozen sponsors who donate in
total over $300 a month. We’re incredibly grateful for this support! Our
fiscal host is the <a href="https://un5gmtkzgjhve8966pubc9h0br.julianrbryant.com/">Open Source Collective</a>, so our budget is fully
transparent on <a href="https://un5mvxyuxgypm7ph3w.julianrbryant.com/xmonad">our Collective’s page</a>.</p>

<p><strong>If you also want to aid our efforts going forward, please consider becoming
a supporter as well. We accept both monthly and one-time donations through
<a href="https://github.com/sponsors/xmonad">GitHub Sponsors</a> and <a href="https://un5mvxyuxgypm7ph3w.julianrbryant.com/xmonad">Open Collective</a>.</strong></p>

<p>Thank you!</p>]]></content><author><name></name></author><category term="news" /><summary type="html"><![CDATA[New versions of xmonad and xmonad-contrib have been released. Check out our download page for instructions on where to get them.]]></summary><media:thumbnail xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" url="https://un5v22h10b5tevr.julianrbryant.com/images/xmonad-0-17-0/og_image.png" /><media:content medium="image" url="https://un5v22h10b5tevr.julianrbryant.com/images/xmonad-0-17-0/og_image.png" xmlns:media="https://umn18u57gkvbkvxr3w.julianrbryant.com/mrss/" /></entry><entry><title type="html">xmonad 0.15 is available</title><link href="https://un5v22h10b5tevr.julianrbryant.com/news/2018/09/30/xmonad-0-15.html" rel="alternate" type="text/html" title="xmonad 0.15 is available" /><published>2018-09-30T00:00:00+00:00</published><updated>2018-09-30T00:00:00+00:00</updated><id>https://un5v22h10b5tevr.julianrbryant.com/news/2018/09/30/xmonad-0-15</id><content type="html" xml:base="https://un5v22h10b5tevr.julianrbryant.com/news/2018/09/30/xmonad-0-15.html"><![CDATA[<!-- empty excerpt, this isn't current release any more -->

<p>Check out our <a href="/download.html">download page</a>.</p>]]></content><author><name></name></author><category term="news" /><summary type="html"><![CDATA[]]></summary></entry></feed>