<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>dwm, branch HEAD</title>
<subtitle>dynamic window manager</subtitle>
<entry>
<id>d804eb1ea81b439eee63b404b2c07f252e79b09a</id>
<published>2026-02-19T23:44:44Z</published>
<updated>2026-02-19T23:44:44Z</updated>
<title>handle potato-c time increase/decrease with scrollwheel</title>
<link rel="alternate" type="text/html" href="commit/d804eb1ea81b439eee63b404b2c07f252e79b09a.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit d804eb1ea81b439eee63b404b2c07f252e79b09a
parent fbd08a4b0bbc12827fee1f88a5a09421f952f09c
Author: Jul &lt;jul@9o.is&gt;
Date:   Fri, 20 Feb 2026 07:44:44 +0800

handle potato-c time increase/decrease with scrollwheel

</content>
</entry>
<entry>
<id>fbd08a4b0bbc12827fee1f88a5a09421f952f09c</id>
<published>2026-02-19T16:38:47Z</published>
<updated>2026-02-19T16:38:47Z</updated>
<title>fix net active focus in deck layout</title>
<link rel="alternate" type="text/html" href="commit/fbd08a4b0bbc12827fee1f88a5a09421f952f09c.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit fbd08a4b0bbc12827fee1f88a5a09421f952f09c
parent 1b40bd044bade427e6c153e767ed0802252183da
Author: Jul &lt;jul@9o.is&gt;
Date:   Fri, 20 Feb 2026 00:38:47 +0800

fix net active focus in deck layout

</content>
</entry>
<entry>
<id>1b40bd044bade427e6c153e767ed0802252183da</id>
<published>2026-02-19T14:45:29Z</published>
<updated>2026-02-19T14:45:29Z</updated>
<title>add dmenu-lsw shortcut</title>
<link rel="alternate" type="text/html" href="commit/1b40bd044bade427e6c153e767ed0802252183da.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 1b40bd044bade427e6c153e767ed0802252183da
parent a438297a487a975fbe016e7b3e2f4b06d1a5c83b
Author: Jul &lt;jul@9o.is&gt;
Date:   Thu, 19 Feb 2026 22:45:29 +0800

add dmenu-lsw shortcut

</content>
</entry>
<entry>
<id>a438297a487a975fbe016e7b3e2f4b06d1a5c83b</id>
<published>2026-02-19T09:18:31Z</published>
<updated>2026-02-19T09:18:31Z</updated>
<title>focus on window activation</title>
<link rel="alternate" type="text/html" href="commit/a438297a487a975fbe016e7b3e2f4b06d1a5c83b.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit a438297a487a975fbe016e7b3e2f4b06d1a5c83b
parent 967407d6f94acd6bc27e686b813ff21aa6db2585
Author: Jul &lt;jul@9o.is&gt;
Date:   Thu, 19 Feb 2026 17:18:31 +0800

focus on window activation

</content>
</entry>
<entry>
<id>967407d6f94acd6bc27e686b813ff21aa6db2585</id>
<published>2026-02-17T17:42:07Z</published>
<updated>2026-02-17T17:42:07Z</updated>
<title>use resizeclient for tile and deck layouts</title>
<link rel="alternate" type="text/html" href="commit/967407d6f94acd6bc27e686b813ff21aa6db2585.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 967407d6f94acd6bc27e686b813ff21aa6db2585
parent 0d4db2bfab9a9d6e3b2f581bca12d28f4b40b972
Author: Jul &lt;jul@9o.is&gt;
Date:   Wed, 18 Feb 2026 01:42:07 +0800

use resizeclient for tile and deck layouts

</content>
</entry>
<entry>
<id>0d4db2bfab9a9d6e3b2f581bca12d28f4b40b972</id>
<published>2026-02-17T17:16:17Z</published>
<updated>2026-02-17T17:16:17Z</updated>
<title>Revert &quot;add swallow&quot;</title>
<link rel="alternate" type="text/html" href="commit/0d4db2bfab9a9d6e3b2f581bca12d28f4b40b972.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 0d4db2bfab9a9d6e3b2f581bca12d28f4b40b972
parent a7d088a93272e2b0e960a2183440bd51cb3c8661
Author: Jul &lt;jul@9o.is&gt;
Date:   Wed, 18 Feb 2026 01:16:17 +0800

Revert &quot;add swallow&quot;

This reverts commit 0e10a0df3a901b5f26300ae4f9f19e71f9c0cfcf.

</content>
</entry>
<entry>
<id>a7d088a93272e2b0e960a2183440bd51cb3c8661</id>
<published>2026-02-17T16:50:22Z</published>
<updated>2026-02-17T16:50:22Z</updated>
<title>fix monocle smartborders</title>
<link rel="alternate" type="text/html" href="commit/a7d088a93272e2b0e960a2183440bd51cb3c8661.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit a7d088a93272e2b0e960a2183440bd51cb3c8661
parent f04dfcd36bf666e040ab5bb8417052eb273c71ca
Author: Jul &lt;jul@9o.is&gt;
Date:   Wed, 18 Feb 2026 00:50:22 +0800

fix monocle smartborders

</content>
</entry>
<entry>
<id>f04dfcd36bf666e040ab5bb8417052eb273c71ca</id>
<published>2026-02-16T04:07:37Z</published>
<updated>2026-02-16T04:07:37Z</updated>
<title>fix null pointer error</title>
<link rel="alternate" type="text/html" href="commit/f04dfcd36bf666e040ab5bb8417052eb273c71ca.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit f04dfcd36bf666e040ab5bb8417052eb273c71ca
parent ed424e1e466738606ce2c148104b3cf7a4551c19
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon, 16 Feb 2026 12:07:37 +0800

fix null pointer error

</content>
</entry>
<entry>
<id>ed424e1e466738606ce2c148104b3cf7a4551c19</id>
<published>2026-02-16T00:08:17Z</published>
<updated>2026-02-16T00:08:17Z</updated>
<title>warp cursor in missing actions</title>
<link rel="alternate" type="text/html" href="commit/ed424e1e466738606ce2c148104b3cf7a4551c19.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit ed424e1e466738606ce2c148104b3cf7a4551c19
parent a8f1cea537b87ff32e93b311ace0d2ff6f3fba10
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon, 16 Feb 2026 08:08:17 +0800

warp cursor in missing actions

</content>
</entry>
<entry>
<id>a8f1cea537b87ff32e93b311ace0d2ff6f3fba10</id>
<published>2026-02-15T15:09:20Z</published>
<updated>2026-02-15T15:09:20Z</updated>
<title>add custom qubes-clipboard shortcuts</title>
<link rel="alternate" type="text/html" href="commit/a8f1cea537b87ff32e93b311ace0d2ff6f3fba10.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit a8f1cea537b87ff32e93b311ace0d2ff6f3fba10
parent 7962c42fc0a504a631789fb8434015f9cc68bcb4
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun, 15 Feb 2026 10:09:20 -0500

add custom qubes-clipboard shortcuts

</content>
</entry>
<entry>
<id>7962c42fc0a504a631789fb8434015f9cc68bcb4</id>
<published>2026-02-05T22:54:14Z</published>
<updated>2026-02-05T22:54:14Z</updated>
<title>toggle potato-c on status click</title>
<link rel="alternate" type="text/html" href="commit/7962c42fc0a504a631789fb8434015f9cc68bcb4.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 7962c42fc0a504a631789fb8434015f9cc68bcb4
parent 027c260fcd2045747823774862c9ce45fbec099c
Author: Jul &lt;jul@9o.is&gt;
Date:   Thu,  5 Feb 2026 17:54:14 -0500

toggle potato-c on status click

</content>
</entry>
<entry>
<id>027c260fcd2045747823774862c9ce45fbec099c</id>
<published>2026-02-04T13:33:28Z</published>
<updated>2026-02-04T13:33:28Z</updated>
<title>add brightness dmenu prompt</title>
<link rel="alternate" type="text/html" href="commit/027c260fcd2045747823774862c9ce45fbec099c.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 027c260fcd2045747823774862c9ce45fbec099c
parent 2e6c9b7727434a65a4a802e553c57dc9fdcff922
Author: Jul &lt;jul@9o.is&gt;
Date:   Wed,  4 Feb 2026 08:33:28 -0500

add brightness dmenu prompt

</content>
</entry>
<entry>
<id>2e6c9b7727434a65a4a802e553c57dc9fdcff922</id>
<published>2026-02-04T13:25:29Z</published>
<updated>2026-02-04T13:25:29Z</updated>
<title>add volume keybindings</title>
<link rel="alternate" type="text/html" href="commit/2e6c9b7727434a65a4a802e553c57dc9fdcff922.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 2e6c9b7727434a65a4a802e553c57dc9fdcff922
parent 783cb1389e50d78789de717d992b457f8976e3a2
Author: Jul &lt;jul@9o.is&gt;
Date:   Wed,  4 Feb 2026 08:25:29 -0500

add volume keybindings

</content>
</entry>
<entry>
<id>783cb1389e50d78789de717d992b457f8976e3a2</id>
<published>2026-02-04T12:50:08Z</published>
<updated>2026-02-04T12:50:08Z</updated>
<title>add dmenu commands</title>
<link rel="alternate" type="text/html" href="commit/783cb1389e50d78789de717d992b457f8976e3a2.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 783cb1389e50d78789de717d992b457f8976e3a2
parent 4fdfeb53836e466df72ca619a16c2f3eb1d675be
Author: Jul &lt;jul@9o.is&gt;
Date:   Wed,  4 Feb 2026 07:50:08 -0500

add dmenu commands

</content>
</entry>
<entry>
<id>4fdfeb53836e466df72ca619a16c2f3eb1d675be</id>
<published>2026-02-04T11:56:52Z</published>
<updated>2026-02-04T11:56:52Z</updated>
<title>remove monacle layout number in status bar</title>
<link rel="alternate" type="text/html" href="commit/4fdfeb53836e466df72ca619a16c2f3eb1d675be.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 4fdfeb53836e466df72ca619a16c2f3eb1d675be
parent 0e10a0df3a901b5f26300ae4f9f19e71f9c0cfcf
Author: Jul &lt;jul@9o.is&gt;
Date:   Wed,  4 Feb 2026 06:56:52 -0500

remove monacle layout number in status bar

</content>
</entry>
<entry>
<id>0e10a0df3a901b5f26300ae4f9f19e71f9c0cfcf</id>
<published>2026-02-04T01:09:00Z</published>
<updated>2026-02-04T01:09:00Z</updated>
<title>add swallow</title>
<link rel="alternate" type="text/html" href="commit/0e10a0df3a901b5f26300ae4f9f19e71f9c0cfcf.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 0e10a0df3a901b5f26300ae4f9f19e71f9c0cfcf
parent c566b48938b44ad5356c1e6b2374fdf50c364a8f
Author: Jul &lt;jul@9o.is&gt;
Date:   Tue,  3 Feb 2026 20:09:00 -0500

add swallow

</content>
</entry>
<entry>
<id>c566b48938b44ad5356c1e6b2374fdf50c364a8f</id>
<published>2026-02-04T00:45:37Z</published>
<updated>2026-02-04T00:45:37Z</updated>
<title>try different mod masks for navigating wins/tags</title>
<link rel="alternate" type="text/html" href="commit/c566b48938b44ad5356c1e6b2374fdf50c364a8f.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit c566b48938b44ad5356c1e6b2374fdf50c364a8f
parent 733f1a5b0a75ed18b90ccce94ebb5ad1d2bf8c6c
Author: Jul &lt;jul@9o.is&gt;
Date:   Tue,  3 Feb 2026 19:45:37 -0500

try different mod masks for navigating wins/tags

</content>
</entry>
<entry>
<id>733f1a5b0a75ed18b90ccce94ebb5ad1d2bf8c6c</id>
<published>2026-02-03T17:56:12Z</published>
<updated>2026-02-03T17:56:12Z</updated>
<title>navigate focusstack from foreground</title>
<link rel="alternate" type="text/html" href="commit/733f1a5b0a75ed18b90ccce94ebb5ad1d2bf8c6c.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 733f1a5b0a75ed18b90ccce94ebb5ad1d2bf8c6c
parent dc1a72dc6f0c9d2e235963f2d6b9ce4828274832
Author: Jul &lt;jul@9o.is&gt;
Date:   Tue,  3 Feb 2026 12:56:12 -0500

navigate focusstack from foreground

</content>
</entry>
<entry>
<id>dc1a72dc6f0c9d2e235963f2d6b9ce4828274832</id>
<published>2026-02-03T10:28:01Z</published>
<updated>2026-02-03T10:28:01Z</updated>
<title>add simple foregrounded windows</title>
<link rel="alternate" type="text/html" href="commit/dc1a72dc6f0c9d2e235963f2d6b9ce4828274832.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit dc1a72dc6f0c9d2e235963f2d6b9ce4828274832
parent 0be9ada01efc9b588de5af0564e792315b32c6fe
Author: Jul &lt;jul@9o.is&gt;
Date:   Tue,  3 Feb 2026 05:28:01 -0500

add simple foregrounded windows

</content>
</entry>
<entry>
<id>0be9ada01efc9b588de5af0564e792315b32c6fe</id>
<published>2026-02-03T08:31:11Z</published>
<updated>2026-02-03T08:31:11Z</updated>
<title>remove original foregrounded feature</title>
<link rel="alternate" type="text/html" href="commit/0be9ada01efc9b588de5af0564e792315b32c6fe.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 0be9ada01efc9b588de5af0564e792315b32c6fe
parent 5587534f9bab8f70e323d9d68da9c3bacc3b5d24
Author: Jul &lt;jul@9o.is&gt;
Date:   Tue,  3 Feb 2026 03:31:11 -0500

remove original foregrounded feature

</content>
</entry>
<entry>
<id>5587534f9bab8f70e323d9d68da9c3bacc3b5d24</id>
<published>2026-02-02T17:18:47Z</published>
<updated>2026-02-02T17:18:47Z</updated>
<title>arrow keys navigates windows in foreground</title>
<link rel="alternate" type="text/html" href="commit/5587534f9bab8f70e323d9d68da9c3bacc3b5d24.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 5587534f9bab8f70e323d9d68da9c3bacc3b5d24
parent 6befce5359a4667dcb9e82b0c13119ece7d9a8f8
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon,  2 Feb 2026 12:18:47 -0500

arrow keys navigates windows in foreground

</content>
</entry>
<entry>
<id>6befce5359a4667dcb9e82b0c13119ece7d9a8f8</id>
<published>2026-02-02T16:22:27Z</published>
<updated>2026-02-02T16:22:27Z</updated>
<title>always set border around foreground window</title>
<link rel="alternate" type="text/html" href="commit/6befce5359a4667dcb9e82b0c13119ece7d9a8f8.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 6befce5359a4667dcb9e82b0c13119ece7d9a8f8
parent e0891f37cd0ef92ef7832698a212c696297b625b
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon,  2 Feb 2026 11:22:27 -0500

always set border around foreground window

</content>
</entry>
<entry>
<id>e0891f37cd0ef92ef7832698a212c696297b625b</id>
<published>2026-02-02T16:14:17Z</published>
<updated>2026-02-02T16:14:17Z</updated>
<title>set Mod-minus to toggle foreground</title>
<link rel="alternate" type="text/html" href="commit/e0891f37cd0ef92ef7832698a212c696297b625b.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit e0891f37cd0ef92ef7832698a212c696297b625b
parent ac6d133842c02cb0d9205f49c0dda2f547905d70
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon,  2 Feb 2026 11:14:17 -0500

set Mod-minus to toggle foreground

</content>
</entry>
<entry>
<id>ac6d133842c02cb0d9205f49c0dda2f547905d70</id>
<published>2026-02-02T15:42:34Z</published>
<updated>2026-02-02T15:42:34Z</updated>
<title>enlarge foreground window</title>
<link rel="alternate" type="text/html" href="commit/ac6d133842c02cb0d9205f49c0dda2f547905d70.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit ac6d133842c02cb0d9205f49c0dda2f547905d70
parent 47fcde2d1a1036458e7decd8dfd25a06fb20a36a
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon,  2 Feb 2026 10:42:34 -0500

enlarge foreground window

</content>
</entry>
<entry>
<id>47fcde2d1a1036458e7decd8dfd25a06fb20a36a</id>
<published>2026-02-02T12:33:03Z</published>
<updated>2026-02-02T12:33:03Z</updated>
<title>set incnmaster/setmfact to up/down arrow keys</title>
<link rel="alternate" type="text/html" href="commit/47fcde2d1a1036458e7decd8dfd25a06fb20a36a.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 47fcde2d1a1036458e7decd8dfd25a06fb20a36a
parent 2915fc7847bde79e56cab705cead777f05cc729b
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon,  2 Feb 2026 07:33:03 -0500

set incnmaster/setmfact to up/down arrow keys

</content>
</entry>
<entry>
<id>2915fc7847bde79e56cab705cead777f05cc729b</id>
<published>2026-02-02T12:09:48Z</published>
<updated>2026-02-02T12:09:48Z</updated>
<title>remove toggle floating keybinding</title>
<link rel="alternate" type="text/html" href="commit/2915fc7847bde79e56cab705cead777f05cc729b.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 2915fc7847bde79e56cab705cead777f05cc729b
parent 843a1be3814ba444bff9f60b8b26f28377492f3c
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon,  2 Feb 2026 07:09:48 -0500

remove toggle floating keybinding

</content>
</entry>
<entry>
<id>843a1be3814ba444bff9f60b8b26f28377492f3c</id>
<published>2026-02-02T12:06:38Z</published>
<updated>2026-02-02T12:06:38Z</updated>
<title>default to deck layout</title>
<link rel="alternate" type="text/html" href="commit/843a1be3814ba444bff9f60b8b26f28377492f3c.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 843a1be3814ba444bff9f60b8b26f28377492f3c
parent 25c5922fb9dcc246af6e0107c11f84d8c49b62fe
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon,  2 Feb 2026 07:06:38 -0500

default to deck layout

</content>
</entry>
<entry>
<id>25c5922fb9dcc246af6e0107c11f84d8c49b62fe</id>
<published>2026-02-02T12:01:19Z</published>
<updated>2026-02-02T12:01:19Z</updated>
<title>reorganize nav keys with NUMKEYS and DIRKEYS macros</title>
<link rel="alternate" type="text/html" href="commit/25c5922fb9dcc246af6e0107c11f84d8c49b62fe.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 25c5922fb9dcc246af6e0107c11f84d8c49b62fe
parent 787f5526c735bbaf7115b4089c7b807faaaa0613
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon,  2 Feb 2026 07:01:19 -0500

reorganize nav keys with NUMKEYS and DIRKEYS macros

</content>
</entry>
<entry>
<id>787f5526c735bbaf7115b4089c7b807faaaa0613</id>
<published>2026-02-02T10:43:03Z</published>
<updated>2026-02-02T10:43:03Z</updated>
<title>navigate clients with numbers and tags with symbols</title>
<link rel="alternate" type="text/html" href="commit/787f5526c735bbaf7115b4089c7b807faaaa0613.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 787f5526c735bbaf7115b4089c7b807faaaa0613
parent d52905cf5305c0d0d194013765214c119f338b18
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon,  2 Feb 2026 05:43:03 -0500

navigate clients with numbers and tags with symbols

</content>
</entry>
<entry>
<id>d52905cf5305c0d0d194013765214c119f338b18</id>
<published>2026-02-02T06:19:03Z</published>
<updated>2026-02-02T06:19:03Z</updated>
<title>add deck layout</title>
<link rel="alternate" type="text/html" href="commit/d52905cf5305c0d0d194013765214c119f338b18.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit d52905cf5305c0d0d194013765214c119f338b18
parent 355d67d850a51d7b6cad9472b73be74baae9df5a
Author: Jul &lt;jul@9o.is&gt;
Date:   Mon,  2 Feb 2026 01:19:03 -0500

add deck layout

</content>
</entry>
<entry>
<id>355d67d850a51d7b6cad9472b73be74baae9df5a</id>
<published>2026-02-02T03:56:38Z</published>
<updated>2026-02-02T03:56:38Z</updated>
<title>allow foregrounding windows</title>
<link rel="alternate" type="text/html" href="commit/355d67d850a51d7b6cad9472b73be74baae9df5a.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 355d67d850a51d7b6cad9472b73be74baae9df5a
parent ea8c34c2847ded9c917187a53c79f9118d1630cc
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 22:56:38 -0500

allow foregrounding windows

</content>
</entry>
<entry>
<id>ea8c34c2847ded9c917187a53c79f9118d1630cc</id>
<published>2026-02-02T01:46:05Z</published>
<updated>2026-02-02T01:46:05Z</updated>
<title>allow window to set status in status bar</title>
<link rel="alternate" type="text/html" href="commit/ea8c34c2847ded9c917187a53c79f9118d1630cc.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit ea8c34c2847ded9c917187a53c79f9118d1630cc
parent f377abd9a334289a95c26b1cbfb2fb6fdb3fe360
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 20:46:05 -0500

allow window to set status in status bar

</content>
</entry>
<entry>
<id>f377abd9a334289a95c26b1cbfb2fb6fdb3fe360</id>
<published>2026-02-01T21:31:03Z</published>
<updated>2026-02-01T21:31:03Z</updated>
<title>warp cursor on changing window, monitor, etc.</title>
<link rel="alternate" type="text/html" href="commit/f377abd9a334289a95c26b1cbfb2fb6fdb3fe360.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit f377abd9a334289a95c26b1cbfb2fb6fdb3fe360
parent 4caaadf342e067a73f4909038a98aaff19bd0815
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 16:31:03 -0500

warp cursor on changing window, monitor, etc.

</content>
</entry>
<entry>
<id>4caaadf342e067a73f4909038a98aaff19bd0815</id>
<published>2026-02-01T21:17:50Z</published>
<updated>2026-02-01T21:17:50Z</updated>
<title>move client counter to the left of tags</title>
<link rel="alternate" type="text/html" href="commit/4caaadf342e067a73f4909038a98aaff19bd0815.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 4caaadf342e067a73f4909038a98aaff19bd0815
parent f7d68a02b873c79ccdbae3ff864e2b7e885aa4df
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 16:17:50 -0500

move client counter to the left of tags

</content>
</entry>
<entry>
<id>f7d68a02b873c79ccdbae3ff864e2b7e885aa4df</id>
<published>2026-02-01T21:02:48Z</published>
<updated>2026-02-01T21:02:48Z</updated>
<title>prefix qubes vm name to title</title>
<link rel="alternate" type="text/html" href="commit/f7d68a02b873c79ccdbae3ff864e2b7e885aa4df.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit f7d68a02b873c79ccdbae3ff864e2b7e885aa4df
parent b003c69b9edc7dd9c838ef1259c8cf8f4f632407
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 16:02:48 -0500

prefix qubes vm name to title

</content>
</entry>
<entry>
<id>b003c69b9edc7dd9c838ef1259c8cf8f4f632407</id>
<published>2026-02-01T20:02:34Z</published>
<updated>2026-02-01T20:02:34Z</updated>
<title>apply smart borders</title>
<link rel="alternate" type="text/html" href="commit/b003c69b9edc7dd9c838ef1259c8cf8f4f632407.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit b003c69b9edc7dd9c838ef1259c8cf8f4f632407
parent 668d49ea1069e1b28ff6115a8278916e36bdc00c
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 15:02:34 -0500

apply smart borders

</content>
</entry>
<entry>
<id>668d49ea1069e1b28ff6115a8278916e36bdc00c</id>
<published>2026-02-01T18:34:41Z</published>
<updated>2026-02-01T18:34:41Z</updated>
<title>remove padding from client counter</title>
<link rel="alternate" type="text/html" href="commit/668d49ea1069e1b28ff6115a8278916e36bdc00c.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 668d49ea1069e1b28ff6115a8278916e36bdc00c
parent 242270fe2c781c1c4c72bd8e975731cd91abde55
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 13:34:41 -0500

remove padding from client counter

</content>
</entry>
<entry>
<id>242270fe2c781c1c4c72bd8e975731cd91abde55</id>
<published>2026-02-01T18:28:23Z</published>
<updated>2026-02-01T18:28:23Z</updated>
<title>move client counter to the right of tags</title>
<link rel="alternate" type="text/html" href="commit/242270fe2c781c1c4c72bd8e975731cd91abde55.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 242270fe2c781c1c4c72bd8e975731cd91abde55
parent 7bac5fda8600ce6c3023b54e5429f542b1077205
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 13:28:23 -0500

move client counter to the right of tags

</content>
</entry>
<entry>
<id>7bac5fda8600ce6c3023b54e5429f542b1077205</id>
<published>2026-02-01T18:16:50Z</published>
<updated>2026-02-01T18:16:50Z</updated>
<title>show client counter in status bar</title>
<link rel="alternate" type="text/html" href="commit/7bac5fda8600ce6c3023b54e5429f542b1077205.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 7bac5fda8600ce6c3023b54e5429f542b1077205
parent d06b882e7bdab48dc2641e76df792b12341f0450
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 13:16:50 -0500

show client counter in status bar

</content>
</entry>
<entry>
<id>d06b882e7bdab48dc2641e76df792b12341f0450</id>
<published>2026-02-01T16:55:45Z</published>
<updated>2026-02-01T16:55:45Z</updated>
<title>create TEXTWNP macro</title>
<link rel="alternate" type="text/html" href="commit/d06b882e7bdab48dc2641e76df792b12341f0450.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit d06b882e7bdab48dc2641e76df792b12341f0450
parent 39769100aefafecc462b254a3e0ceb8775674612
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 11:55:45 -0500

create TEXTWNP macro

</content>
</entry>
<entry>
<id>39769100aefafecc462b254a3e0ceb8775674612</id>
<published>2026-02-01T16:52:56Z</published>
<updated>2026-02-01T16:52:56Z</updated>
<title>remove left/right padding from tags</title>
<link rel="alternate" type="text/html" href="commit/39769100aefafecc462b254a3e0ceb8775674612.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 39769100aefafecc462b254a3e0ceb8775674612
parent 7b50e933e52ee7c5a503868f5f3067b052437bf4
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 11:52:56 -0500

remove left/right padding from tags

</content>
</entry>
<entry>
<id>7b50e933e52ee7c5a503868f5f3067b052437bf4</id>
<published>2026-02-01T16:03:18Z</published>
<updated>2026-02-01T16:03:18Z</updated>
<title>set default status text to empty string</title>
<link rel="alternate" type="text/html" href="commit/7b50e933e52ee7c5a503868f5f3067b052437bf4.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 7b50e933e52ee7c5a503868f5f3067b052437bf4
parent 1fadbb4d890bcf7e602a691eb7a341231dae614a
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 11:03:18 -0500

set default status text to empty string

</content>
</entry>
<entry>
<id>1fadbb4d890bcf7e602a691eb7a341231dae614a</id>
<published>2026-02-01T15:57:55Z</published>
<updated>2026-02-01T15:57:55Z</updated>
<title>hide vacant tags</title>
<link rel="alternate" type="text/html" href="commit/1fadbb4d890bcf7e602a691eb7a341231dae614a.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 1fadbb4d890bcf7e602a691eb7a341231dae614a
parent 69deb34ee7fd25c732980cb4ef7f2e32e9d344cb
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 10:57:55 -0500

hide vacant tags

</content>
</entry>
<entry>
<id>69deb34ee7fd25c732980cb4ef7f2e32e9d344cb</id>
<published>2026-02-01T15:25:39Z</published>
<updated>2026-02-01T15:25:39Z</updated>
<title>set selected color scheme to blue on black</title>
<link rel="alternate" type="text/html" href="commit/69deb34ee7fd25c732980cb4ef7f2e32e9d344cb.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 69deb34ee7fd25c732980cb4ef7f2e32e9d344cb
parent 4e2dd4017ea448f36b15a5d379e4c87d030c0f87
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 10:25:39 -0500

set selected color scheme to blue on black

</content>
</entry>
<entry>
<id>4e2dd4017ea448f36b15a5d379e4c87d030c0f87</id>
<published>2026-02-01T15:03:07Z</published>
<updated>2026-02-01T15:03:07Z</updated>
<title>move window title to lhs of status bar</title>
<link rel="alternate" type="text/html" href="commit/4e2dd4017ea448f36b15a5d379e4c87d030c0f87.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 4e2dd4017ea448f36b15a5d379e4c87d030c0f87
parent 47c3168baee7b4a80c02f3f459f01425f1ea6b18
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 10:03:07 -0500

move window title to lhs of status bar

</content>
</entry>
<entry>
<id>47c3168baee7b4a80c02f3f459f01425f1ea6b18</id>
<published>2026-02-01T11:50:14Z</published>
<updated>2026-02-01T11:50:14Z</updated>
<title>dont color window title in status bar</title>
<link rel="alternate" type="text/html" href="commit/47c3168baee7b4a80c02f3f459f01425f1ea6b18.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 47c3168baee7b4a80c02f3f459f01425f1ea6b18
parent 04d5afbd628ccfe3cd84c123e44080d13d5ddc5e
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 06:50:14 -0500

dont color window title in status bar

</content>
</entry>
<entry>
<id>04d5afbd628ccfe3cd84c123e44080d13d5ddc5e</id>
<published>2026-02-01T11:43:11Z</published>
<updated>2026-02-01T11:43:11Z</updated>
<title>reverse color for selected scheme</title>
<link rel="alternate" type="text/html" href="commit/04d5afbd628ccfe3cd84c123e44080d13d5ddc5e.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 04d5afbd628ccfe3cd84c123e44080d13d5ddc5e
parent c421d4ddda82d2e0a60c50c38d0fa5282c539f12
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 06:43:11 -0500

reverse color for selected scheme

</content>
</entry>
<entry>
<id>c421d4ddda82d2e0a60c50c38d0fa5282c539f12</id>
<published>2026-02-01T11:34:15Z</published>
<updated>2026-02-01T11:34:15Z</updated>
<title>remove monitor bindings</title>
<link rel="alternate" type="text/html" href="commit/c421d4ddda82d2e0a60c50c38d0fa5282c539f12.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit c421d4ddda82d2e0a60c50c38d0fa5282c539f12
parent a073e2a99bda40c5b99a6961e5104252b93818ee
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 06:34:15 -0500

remove monitor bindings

</content>
</entry>
<entry>
<id>a073e2a99bda40c5b99a6961e5104252b93818ee</id>
<published>2026-02-01T11:28:55Z</published>
<updated>2026-02-01T11:28:55Z</updated>
<title>switch C-M-q binding to kill client</title>
<link rel="alternate" type="text/html" href="commit/a073e2a99bda40c5b99a6961e5104252b93818ee.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit a073e2a99bda40c5b99a6961e5104252b93818ee
parent da172930d0f10cb05caa0ef8bf9d6ec5ad14d432
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 06:28:55 -0500

switch C-M-q binding to kill client

</content>
</entry>
<entry>
<id>da172930d0f10cb05caa0ef8bf9d6ec5ad14d432</id>
<published>2026-02-01T11:26:47Z</published>
<updated>2026-02-01T11:26:47Z</updated>
<title>switch focusstack bindings to arrow keys</title>
<link rel="alternate" type="text/html" href="commit/da172930d0f10cb05caa0ef8bf9d6ec5ad14d432.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit da172930d0f10cb05caa0ef8bf9d6ec5ad14d432
parent 3d7a1c10462943750c3f956f702f496ce95a3fa0
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 06:26:47 -0500

switch focusstack bindings to arrow keys

</content>
</entry>
<entry>
<id>3d7a1c10462943750c3f956f702f496ce95a3fa0</id>
<published>2026-02-01T10:59:26Z</published>
<updated>2026-02-01T10:59:26Z</updated>
<title>shift windows between adjacent tags</title>
<link rel="alternate" type="text/html" href="commit/3d7a1c10462943750c3f956f702f496ce95a3fa0.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 3d7a1c10462943750c3f956f702f496ce95a3fa0
parent fe2016cebab48bf43e62b51a7136f65b045a477e
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 05:59:26 -0500

shift windows between adjacent tags

</content>
</entry>
<entry>
<id>fe2016cebab48bf43e62b51a7136f65b045a477e</id>
<published>2026-02-01T09:00:54Z</published>
<updated>2026-02-01T09:00:54Z</updated>
<title>fix zenity rule</title>
<link rel="alternate" type="text/html" href="commit/fe2016cebab48bf43e62b51a7136f65b045a477e.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit fe2016cebab48bf43e62b51a7136f65b045a477e
parent 8066adbbeb8bb12244e4494312b364f9f70c244e
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 04:00:54 -0500

fix zenity rule

</content>
</entry>
<entry>
<id>8066adbbeb8bb12244e4494312b364f9f70c244e</id>
<published>2026-02-01T08:52:16Z</published>
<updated>2026-02-01T08:52:16Z</updated>
<title>preserve clients on old tags when restarting</title>
<link rel="alternate" type="text/html" href="commit/8066adbbeb8bb12244e4494312b364f9f70c244e.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 8066adbbeb8bb12244e4494312b364f9f70c244e
parent 9fe72f38758c54ecad1af757a3729043ddb95e91
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 03:52:16 -0500

preserve clients on old tags when restarting

</content>
</entry>
<entry>
<id>9fe72f38758c54ecad1af757a3729043ddb95e91</id>
<published>2026-02-01T08:20:08Z</published>
<updated>2026-02-01T08:20:08Z</updated>
<title>always center floating windows</title>
<link rel="alternate" type="text/html" href="commit/9fe72f38758c54ecad1af757a3729043ddb95e91.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 9fe72f38758c54ecad1af757a3729043ddb95e91
parent 5bfe0d167b6b0ada88f0b9aa25f2369eb4711850
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 03:20:08 -0500

always center floating windows

</content>
</entry>
<entry>
<id>5bfe0d167b6b0ada88f0b9aa25f2369eb4711850</id>
<published>2026-02-01T08:14:13Z</published>
<updated>2026-02-01T08:14:13Z</updated>
<title>force zenity windows to float</title>
<link rel="alternate" type="text/html" href="commit/5bfe0d167b6b0ada88f0b9aa25f2369eb4711850.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 5bfe0d167b6b0ada88f0b9aa25f2369eb4711850
parent 2f2720447dcaee06fb64bd0239d1d3d7741009ea
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 03:14:13 -0500

force zenity windows to float

</content>
</entry>
<entry>
<id>2f2720447dcaee06fb64bd0239d1d3d7741009ea</id>
<published>2026-02-01T08:06:22Z</published>
<updated>2026-02-01T08:06:22Z</updated>
<title>change normal border to visible gray</title>
<link rel="alternate" type="text/html" href="commit/2f2720447dcaee06fb64bd0239d1d3d7741009ea.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 2f2720447dcaee06fb64bd0239d1d3d7741009ea
parent e6e2cca529a2e51abb21ccbc410363a7c3df183a
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 03:06:22 -0500

change normal border to visible gray

</content>
</entry>
<entry>
<id>e6e2cca529a2e51abb21ccbc410363a7c3df183a</id>
<published>2026-02-01T07:19:44Z</published>
<updated>2026-02-01T07:19:44Z</updated>
<title>handle term and hup signals</title>
<link rel="alternate" type="text/html" href="commit/e6e2cca529a2e51abb21ccbc410363a7c3df183a.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit e6e2cca529a2e51abb21ccbc410363a7c3df183a
parent 0b4cafb297403ec0cef951441969bfdd270a8990
Author: Jul &lt;jul@9o.is&gt;
Date:   Sun,  1 Feb 2026 02:19:44 -0500

handle term and hup signals

</content>
</entry>
<entry>
<id>0b4cafb297403ec0cef951441969bfdd270a8990</id>
<published>2026-01-31T14:34:56Z</published>
<updated>2026-01-31T14:34:56Z</updated>
<title>update default configs</title>
<link rel="alternate" type="text/html" href="commit/0b4cafb297403ec0cef951441969bfdd270a8990.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 0b4cafb297403ec0cef951441969bfdd270a8990
parent 140506c1c4f4f2bf7a5026b85f2d6d0ca16ae8d9
Author: Jul &lt;jul@9o.is&gt;
Date:   Sat, 31 Jan 2026 09:34:56 -0500

update default configs

</content>
</entry>
<entry>
<id>140506c1c4f4f2bf7a5026b85f2d6d0ca16ae8d9</id>
<published>2026-01-30T07:22:45Z</published>
<updated>2026-01-30T07:22:45Z</updated>
<title>save config.h</title>
<link rel="alternate" type="text/html" href="commit/140506c1c4f4f2bf7a5026b85f2d6d0ca16ae8d9.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit 140506c1c4f4f2bf7a5026b85f2d6d0ca16ae8d9
parent be9bcc2f8c31af19baaa2bef2363ae12162ffe9f
Author: Jul &lt;jul@9o.is&gt;
Date:   Fri, 30 Jan 2026 02:22:45 -0500

save config.h

</content>
</entry>
<entry>
<id>be9bcc2f8c31af19baaa2bef2363ae12162ffe9f</id>
<published>2026-01-30T07:22:14Z</published>
<updated>2026-01-30T07:22:14Z</updated>
<title>gitignore objects and dwm binary</title>
<link rel="alternate" type="text/html" href="commit/be9bcc2f8c31af19baaa2bef2363ae12162ffe9f.html" />
<author>
<name>Jul</name>
<email>jul@9o.is</email>
</author>
<content>commit be9bcc2f8c31af19baaa2bef2363ae12162ffe9f
parent ed43b62a3d2778eb0cfd164d61e9cf04cf86c81c
Author: Jul &lt;jul@9o.is&gt;
Date:   Fri, 30 Jan 2026 02:22:14 -0500

gitignore objects and dwm binary

</content>
</entry>
<entry>
<id>ed43b62a3d2778eb0cfd164d61e9cf04cf86c81c</id>
<published>2026-01-14T06:58:05Z</published>
<updated>2026-01-14T06:58:05Z</updated>
<title>dwm: Fix getatomprop regression from heap overflow fix</title>
<link rel="alternate" type="text/html" href="commit/ed43b62a3d2778eb0cfd164d61e9cf04cf86c81c.html" />
<author>
<name>Chris Down</name>
<email>chris@chrisdown.name</email>
</author>
<content>commit ed43b62a3d2778eb0cfd164d61e9cf04cf86c81c
parent bb24d4d279d5c0887d7cb471d0e988e4c2dce5a8
Author: Chris Down &lt;chris@chrisdown.name&gt;
Date:   Wed, 14 Jan 2026 14:58:05 +0800

dwm: Fix getatomprop regression from heap overflow fix

Commit bf9cffa1f721 (&quot;dwm: Fix heap buffer overflow in getatomprop&quot;)
introduced a check for dl &gt; 0 before dereferencing the property pointer.
However, I missed that the variable dl is passed to XGetWindowProperty
for both nitems_return and bytes_after_return parameters:

    XGetWindowProperty(..., &amp;dl, &amp;dl, &amp;p)

The final value in dl is bytes_after_return, not nitems_return. For a
successfully read property, bytes_after is typically 0 (indicating all
data was retrieved), so the check `dl &gt; 0` is always false and dwm never
reads any atom properties. So this is safe, but not very helpful :-)

dl is probably just a dummy variable anyway, so fix by using a separate
variable for nitems, and check nitems &gt; 0 as originally intended.

</content>
</entry>
<entry>
<id>bb24d4d279d5c0887d7cb471d0e988e4c2dce5a8</id>
<published>2026-01-10T10:31:44Z</published>
<updated>2026-01-10T10:31:44Z</updated>
<title>bump version to 6.7</title>
<link rel="alternate" type="text/html" href="commit/bb24d4d279d5c0887d7cb471d0e988e4c2dce5a8.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit bb24d4d279d5c0887d7cb471d0e988e4c2dce5a8
parent bf9cffa1f7212be6617f6bb821ebf297866f7859
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Sat, 10 Jan 2026 11:31:44 +0100

bump version to 6.7

Put the maintainer at the top and bump years (time flies).

</content>
</entry>
<entry>
<id>bf9cffa1f7212be6617f6bb821ebf297866f7859</id>
<published>2026-01-07T14:02:00Z</published>
<updated>2026-01-07T14:02:00Z</updated>
<title>dwm: Fix heap buffer overflow in getatomprop</title>
<link rel="alternate" type="text/html" href="commit/bf9cffa1f7212be6617f6bb821ebf297866f7859.html" />
<author>
<name>Chris Down</name>
<email>chris@chrisdown.name</email>
</author>
<content>commit bf9cffa1f7212be6617f6bb821ebf297866f7859
parent 50a1f3442edda4ce0d544f71fe0a7bb52917783b
Author: Chris Down &lt;chris@chrisdown.name&gt;
Date:   Wed,  7 Jan 2026 22:02:00 +0800

dwm: Fix heap buffer overflow in getatomprop

When getatomprop() is called, it invokes XGetWindowProperty() to
retrieve an Atom. If the property exists but has zero elements (length
0), Xlib returns Success and sets p to a valid, non-NULL memory address
containing a single null byte.

However, dl (that is, the number of items) is 0. dwm blindly casts p to
Atom* and dereferences it. While Xlib guarantees that p is safe to read
as a string (that is, it is null-terminated), it does _not_ guarantee it
is safe to read as an Atom (an unsigned long).

The Atom type is a typedef for unsigned long. Reading an Atom (which
thus will either likely be 4 or 8 bytes) from a 1-byte allocated buffer
results in a heap buffer overflow. Since property content is user
controlled, this allows any client to trigger an out of bounds read
simply by setting a property with format 32 and length 0.

An example client which reliably crashes dwm under ASAN:

    #include &lt;X11/Xlib.h&gt;
    #include &lt;X11/Xatom.h&gt;
    #include &lt;stdio.h&gt;
    #include &lt;stdlib.h&gt;
    #include &lt;unistd.h&gt;

    int main(void) {
        Display *d;
        Window root, w;
        Atom net_wm_state;

        d = XOpenDisplay(NULL);
        if (!d) return 1;

        root = DefaultRootWindow(d);
        w = XCreateSimpleWindow(d, root, 10, 10, 200, 200, 1, 0, 0);
        net_wm_state = XInternAtom(d, &quot;_NET_WM_STATE&quot;, False);
        if (net_wm_state == None) return 1;

        XChangeProperty(d, w, net_wm_state, XA_ATOM, 32,
                        PropModeReplace, NULL, 0);
        XMapWindow(d, w);
        XSync(d, False);
        sleep(1);

        XCloseDisplay(d);
        return 0;
    }

In order to avoid this, check that the number of items returned is
greater than zero before dereferencing the pointer.

</content>
</entry>
<entry>
<id>50a1f3442edda4ce0d544f71fe0a7bb52917783b</id>
<published>2025-09-29T16:48:27Z</published>
<updated>2025-09-29T16:48:27Z</updated>
<title>drw.c: drw_scm_free: call free inside</title>
<link rel="alternate" type="text/html" href="commit/50a1f3442edda4ce0d544f71fe0a7bb52917783b.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 50a1f3442edda4ce0d544f71fe0a7bb52917783b
parent a91f292825d41b4c0aeb677d946e4bffd2f32813
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Mon, 29 Sep 2025 18:48:27 +0200

drw.c: drw_scm_free: call free inside

Because drw_scm_create() allocates it.

</content>
</entry>
<entry>
<id>a91f292825d41b4c0aeb677d946e4bffd2f32813</id>
<published>2025-09-27T10:10:17Z</published>
<updated>2025-09-27T10:10:17Z</updated>
<title>cleanup schemes and colors</title>
<link rel="alternate" type="text/html" href="commit/a91f292825d41b4c0aeb677d946e4bffd2f32813.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit a91f292825d41b4c0aeb677d946e4bffd2f32813
parent 129652e1e5f004b91ac04815a28e8c58e81998f4
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Sat, 27 Sep 2025 12:10:17 +0200

cleanup schemes and colors

</content>
</entry>
<entry>
<id>129652e1e5f004b91ac04815a28e8c58e81998f4</id>
<published>2025-08-12T17:17:20Z</published>
<updated>2025-08-12T17:17:20Z</updated>
<title>config: make refreshrate for mouse move/resize a config option</title>
<link rel="alternate" type="text/html" href="commit/129652e1e5f004b91ac04815a28e8c58e81998f4.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 129652e1e5f004b91ac04815a28e8c58e81998f4
parent 7a4394c185f71780d29a956ff9897bc3e7288339
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Tue, 12 Aug 2025 19:17:20 +0200

config: make refreshrate for mouse move/resize a config option

Bump the default from 60 to 120.

</content>
</entry>
<entry>
<id>7a4394c185f71780d29a956ff9897bc3e7288339</id>
<published>2025-08-09T12:34:03Z</published>
<updated>2025-08-09T12:34:03Z</updated>
<title>bump version to 6.6</title>
<link rel="alternate" type="text/html" href="commit/7a4394c185f71780d29a956ff9897bc3e7288339.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 7a4394c185f71780d29a956ff9897bc3e7288339
parent 69ff9961b57c95dff177179d1d3b366fcfa41665
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Sat,  9 Aug 2025 14:34:03 +0200

bump version to 6.6

</content>
</entry>
<entry>
<id>69ff9961b57c95dff177179d1d3b366fcfa41665</id>
<published>2024-10-28T00:34:55Z</published>
<updated>2024-10-28T00:34:55Z</updated>
<title>Avoid unsigned integer underflow in drw_text()</title>
<link rel="alternate" type="text/html" href="commit/69ff9961b57c95dff177179d1d3b366fcfa41665.html" />
<author>
<name>Raymond Cole</name>
<email>rc@wolog.xyz</email>
</author>
<content>commit 69ff9961b57c95dff177179d1d3b366fcfa41665
parent bb04970abe9c405d6118f68ec88635fe12f063cc
Author: Raymond Cole &lt;rc@wolog.xyz&gt;
Date:   Mon, 28 Oct 2024 00:34:55 +0000

Avoid unsigned integer underflow in drw_text()

</content>
</entry>
<entry>
<id>bb04970abe9c405d6118f68ec88635fe12f063cc</id>
<published>2024-10-27T19:10:07Z</published>
<updated>2024-10-27T19:10:07Z</updated>
<title>util.c: output function might override errno and thus affect perror()</title>
<link rel="alternate" type="text/html" href="commit/bb04970abe9c405d6118f68ec88635fe12f063cc.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit bb04970abe9c405d6118f68ec88635fe12f063cc
parent 8227c3f6b22af1a8539e41fbcb833bebd5d1d832
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Sun, 27 Oct 2024 20:10:07 +0100

util.c: output function might override errno and thus affect perror()

Original patch by Raymond Cole with some modifications, thanks!

</content>
</entry>
<entry>
<id>8227c3f6b22af1a8539e41fbcb833bebd5d1d832</id>
<published>2024-10-05T11:01:49Z</published>
<updated>2024-10-05T11:01:49Z</updated>
<title>sync drw.{c,h} from dmenu</title>
<link rel="alternate" type="text/html" href="commit/8227c3f6b22af1a8539e41fbcb833bebd5d1d832.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 8227c3f6b22af1a8539e41fbcb833bebd5d1d832
parent 687f89b9f73329728ef91712fa41b883f2bdbcfd
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Sat,  5 Oct 2024 13:01:49 +0200

sync drw.{c,h} from dmenu

- drw: minor improvement to the nomatches cache
- overhaul utf8decoding and render invalid utf8 sequences as U+FFFD.

Thanks NRK for these improvements!

</content>
</entry>
<entry>
<id>687f89b9f73329728ef91712fa41b883f2bdbcfd</id>
<published>2024-06-08T10:36:15Z</published>
<updated>2024-06-08T10:36:15Z</updated>
<title>Add missing void to updateclientlist definition</title>
<link rel="alternate" type="text/html" href="commit/687f89b9f73329728ef91712fa41b883f2bdbcfd.html" />
<author>
<name>Pontus Stenetorp</name>
<email>pontus@stenetorp.se</email>
</author>
<content>commit 687f89b9f73329728ef91712fa41b883f2bdbcfd
parent 395dc58cec032bf2be703060923c97e0964ec3f9
Author: Pontus Stenetorp &lt;pontus@stenetorp.se&gt;
Date:   Sat,  8 Jun 2024 19:36:15 +0900

Add missing void to updateclientlist definition

Caught by -pedantic implying -Wstrict-prototypes for OpenBSD&#39;s 16.0.6 Clang.

</content>
</entry>
<entry>
<id>395dc58cec032bf2be703060923c97e0964ec3f9</id>
<published>2024-03-19T11:13:16Z</published>
<updated>2024-03-19T11:13:16Z</updated>
<title>bump version to 6.5</title>
<link rel="alternate" type="text/html" href="commit/395dc58cec032bf2be703060923c97e0964ec3f9.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 395dc58cec032bf2be703060923c97e0964ec3f9
parent ee140885c5096c434bbbb998785bb472980fc16a
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Tue, 19 Mar 2024 12:13:16 +0100

bump version to 6.5

</content>
</entry>
<entry>
<id>ee140885c5096c434bbbb998785bb472980fc16a</id>
<published>2023-09-22T13:13:29Z</published>
<updated>2023-09-22T13:13:29Z</updated>
<title>Makefile: remove the options target</title>
<link rel="alternate" type="text/html" href="commit/ee140885c5096c434bbbb998785bb472980fc16a.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit ee140885c5096c434bbbb998785bb472980fc16a
parent 71659b66bb5d692215ecc98079cecc38d1b7a6be
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Fri, 22 Sep 2023 15:13:29 +0200

Makefile: remove the options target

The Makefile used to suppress output (by using @), so this target made sense at
the time.

But the Makefile should be simple and make debugging with less abstractions or
fancy printing.  The Makefile was made verbose and doesn&#39;t hide the build
output, so remove this target.

Prompted by a question on the mailing list about the options target.

</content>
</entry>
<entry>
<id>71659b66bb5d692215ecc98079cecc38d1b7a6be</id>
<published>2023-04-09T10:37:14Z</published>
<updated>2023-04-09T10:37:14Z</updated>
<title>restore SIGCHLD sighandler to default before spawning a program</title>
<link rel="alternate" type="text/html" href="commit/71659b66bb5d692215ecc98079cecc38d1b7a6be.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 71659b66bb5d692215ecc98079cecc38d1b7a6be
parent df9ff60b2c5f0330daa02ba06b3240afdb8ceea8
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Sun,  9 Apr 2023 12:37:14 +0200

restore SIGCHLD sighandler to default before spawning a program

From sigaction(2):
A child created via fork(2) inherits a copy of its parent&#39;s signal dispositions.
During an execve(2), the dispositions of handled signals are reset to the default;
the dispositions of ignored signals are left unchanged.

This refused to start directly some programs from configuring in config.h:

static Key keys[] = {
	MODKEY,                       XK_o,      spawn,          {.v = cmd } },
};

Some reported programs that didn&#39;t start were: mpv, anki, dmenu_extended.

Reported by pfx.
Initial patch suggestion by Storkman.

</content>
</entry>
<entry>
<id>df9ff60b2c5f0330daa02ba06b3240afdb8ceea8</id>
<published>2023-02-17T05:05:09Z</published>
<updated>2023-02-17T05:05:09Z</updated>
<title>config.mk: update to _XOPEN_SOURCE=700L</title>
<link rel="alternate" type="text/html" href="commit/df9ff60b2c5f0330daa02ba06b3240afdb8ceea8.html" />
<author>
<name>NRK</name>
<email>nrk@disroot.org</email>
</author>
<content>commit df9ff60b2c5f0330daa02ba06b3240afdb8ceea8
parent a8d48d9f7a547d324501d9891a4002448eedbd21
Author: NRK &lt;nrk@disroot.org&gt;
Date:   Fri, 17 Feb 2023 11:05:09 +0600

config.mk: update to _XOPEN_SOURCE=700L

SA_NOCLDWAIT is marked as XSI in the posix spec [0] and FreeBSD and NetBSD
seems to more be strict about the feature test macro [1].

so update the macro to use _XOPEN_SOURCE=700L instead, which is equivalent to
_POSIX_C_SOURCE=200809L except that it also unlocks the X/Open System
Interfaces.

[0]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html#tag_13_42
[1]: https://lists.suckless.org/dev/2302/35111.html

Tested on:
* NetBSD 9.3 (fixed).
* FreeBSD 13 (fixed).
* Void Linux musl.
* Void Linux glibc.
* OpenBSD 7.2 (stable).
* Slackware 11.

Reported-by: beastie &lt;pufferfish@riseup.net&gt;

</content>
</entry>
<entry>
<id>a8d48d9f7a547d324501d9891a4002448eedbd21</id>
<published>2023-01-28T11:53:48Z</published>
<updated>2023-01-28T11:53:48Z</updated>
<title>Use sigaction(SA_NOCLDWAIT) for SIGCHLD handling</title>
<link rel="alternate" type="text/html" href="commit/a8d48d9f7a547d324501d9891a4002448eedbd21.html" />
<author>
<name>Chris Down</name>
<email>chris@chrisdown.name</email>
</author>
<content>commit a8d48d9f7a547d324501d9891a4002448eedbd21
parent 23f5c6266ef52645955788026aa9ef8c935bd74c
Author: Chris Down &lt;chris@chrisdown.name&gt;
Date:   Sat, 28 Jan 2023 12:53:48 +0100

Use sigaction(SA_NOCLDWAIT) for SIGCHLD handling

signal() semantics are pretty unclearly specified. For example, depending on OS
kernel and libc, the handler may be returned to SIG_DFL (hence the inner call
to read the signal handler). Moving to sigaction() means the behaviour is
consistently defined.

Using SA_NOCLDWAIT also allows us to avoid calling the non-reentrant function
die() in the handler.

Some addditional notes for archival purposes:

* NRK pointed out errno of waitpid could also theoretically get clobbered.
* The original patch was iterated on and modified by NRK and Hiltjo:
  * SIG_DFL was changed to SIG_IGN, this is required, atleast on older systems
    such as tested on Slackware 11.
  * signals are not blocked using sigprocmask, because in theory it would
    briefly for example also ignore a SIGTERM signal. It is OK if waitpid() is (in
    theory interrupted).

POSIX reference:
&quot;Consequences of Process Termination&quot;:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/_Exit.html#tag_16_01_03_01

</content>
</entry>
<entry>
<id>23f5c6266ef52645955788026aa9ef8c935bd74c</id>
<published>2022-12-07T14:55:08Z</published>
<updated>2022-12-07T14:55:08Z</updated>
<title>grabkeys: Avoid missing events when a keysym maps to multiple keycodes</title>
<link rel="alternate" type="text/html" href="commit/23f5c6266ef52645955788026aa9ef8c935bd74c.html" />
<author>
<name>Chris Down</name>
<email>chris@chrisdown.name</email>
</author>
<content>commit 23f5c6266ef52645955788026aa9ef8c935bd74c
parent 6cb076bb1f8ac08cae863af2fa10fc99ab1fd256
Author: Chris Down &lt;chris@chrisdown.name&gt;
Date:   Wed,  7 Dec 2022 14:55:08 +0000

grabkeys: Avoid missing events when a keysym maps to multiple keycodes

It&#39;s not uncommon for one keysym to map to multiple keycodes. For
example, the &quot;play&quot; button on my keyboard sends keycode 172, but my
bluetooth headphones send keycode 208, both of which map back to
XF86AudioPlay:

    % xmodmap -pke | grep XF86AudioPlay
    keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause
    keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay
    keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay

This is a problem because the current code only grabs a single one of
these keycodes, which means that events for any other keycode also
mapping to the bound keysym will not be handled by dwm. In my case, this
means that binding XF86AudioPlay does the right thing and correctly
handles my keyboard&#39;s keys, but does nothing on my headphones. I&#39;m not
the only person affected by this, there are other reports[0].

In order to fix this, we look at the mappings between keycodes and
keysyms at grabkeys() time and pick out all matching keycodes rather
than just the first one. The keypress() side of this doesn&#39;t need any
changes because the keycode gets converted back to a canonical keysym
before any action is taken.

0: https://github.com/cdown/dwm/issues/11

</content>
</entry>
<entry>
<id>6cb076bb1f8ac08cae863af2fa10fc99ab1fd256</id>
<published>2022-10-28T14:37:56Z</published>
<updated>2022-10-28T14:37:56Z</updated>
<title>Revert &quot;Remove dmenumon variable&quot;</title>
<link rel="alternate" type="text/html" href="commit/6cb076bb1f8ac08cae863af2fa10fc99ab1fd256.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 6cb076bb1f8ac08cae863af2fa10fc99ab1fd256
parent eefb0cb72b715a34aad0612724f426d996032537
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Fri, 28 Oct 2022 16:37:56 +0200

Revert &quot;Remove dmenumon variable&quot;

This reverts commit 4a0e6aed056c1d76d36af1f29713864ec00fcf6f.

Revert back this change. It seems to not be an edge-case anymore since
multiple users have asked about this new behaviour now.

</content>
</entry>
<entry>
<id>eefb0cb72b715a34aad0612724f426d996032537</id>
<published>2022-10-04T17:35:13Z</published>
<updated>2022-10-04T17:35:13Z</updated>
<title>bump version to 6.4</title>
<link rel="alternate" type="text/html" href="commit/eefb0cb72b715a34aad0612724f426d996032537.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit eefb0cb72b715a34aad0612724f426d996032537
parent 4e9bbf9e2ac5ac7e3135c566a228516f6dbc7e82
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Tue,  4 Oct 2022 19:35:13 +0200

bump version to 6.4

</content>
</entry>
<entry>
<id>4e9bbf9e2ac5ac7e3135c566a228516f6dbc7e82</id>
<published>2022-09-16T21:06:47Z</published>
<updated>2022-09-16T21:06:47Z</updated>
<title>remove workaround for a crash with color emojis on some systems, now fixed in libXft 2.3.5</title>
<link rel="alternate" type="text/html" href="commit/4e9bbf9e2ac5ac7e3135c566a228516f6dbc7e82.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 4e9bbf9e2ac5ac7e3135c566a228516f6dbc7e82
parent 4a0e6aed056c1d76d36af1f29713864ec00fcf6f
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Fri, 16 Sep 2022 23:06:47 +0200

remove workaround for a crash with color emojis on some systems, now fixed in libXft 2.3.5

https://gitlab.freedesktop.org/xorg/lib/libxft/-/blob/libXft-2.3.5/NEWS

</content>
</entry>
<entry>
<id>4a0e6aed056c1d76d36af1f29713864ec00fcf6f</id>
<published>2022-08-26T12:48:46Z</published>
<updated>2022-08-26T12:48:46Z</updated>
<title>Remove dmenumon variable</title>
<link rel="alternate" type="text/html" href="commit/4a0e6aed056c1d76d36af1f29713864ec00fcf6f.html" />
<author>
<name>Stein</name>
<email>bakkeby@gmail.com</email>
</author>
<content>commit 4a0e6aed056c1d76d36af1f29713864ec00fcf6f
parent cfdd59578176fba7b212763ea0e64465c5e00e03
Author: Stein &lt;bakkeby@gmail.com&gt;
Date:   Fri, 26 Aug 2022 14:48:46 +0200

Remove dmenumon variable

Reasoning: Since 2011 dmenu has been capable of working out which
monitor currently has focus in a Xinerama setup, making the use
of the -m flag more or less redundant.

This is easily demonstrated by using dmenu in any other window
manager.

There used to be a nodmenu patch that provided these changes:
https://git.suckless.org/sites/commit/ed68e3629de4ef2ca2d3f8893a79fb570b4c0cbc.html

but this was removed on the basis that it was very easy to work
out and apply manually if needed.

The proposal here is to remove this dependency from dwm. The
mechanism of the dmenumon variable could be provided via a patch
if need be.

The edge case scenario that dmenu does not handle on its own, and
the effect of removing this mechanism, is that if the user trigger
focusmon via keybindings to change focus to another monitor that
has no clients, then dmenu will open on the monitor containing the
window with input focus (or the monitor with the mouse cursor if
no windows have input focus).

If this edge case is important to cover then this can be addressed
by setting input focus to selmon-&gt;barwin in the focus function if
there is no client to give focus to (rather than giving focus back
to the root window).

</content>
</entry>
<entry>
<id>cfdd59578176fba7b212763ea0e64465c5e00e03</id>
<published>2022-08-18T16:13:08Z</published>
<updated>2022-08-18T16:13:08Z</updated>
<title>config.def.h: make keys and buttons const</title>
<link rel="alternate" type="text/html" href="commit/cfdd59578176fba7b212763ea0e64465c5e00e03.html" />
<author>
<name>NRK</name>
<email>nrk@disroot.org</email>
</author>
<content>commit cfdd59578176fba7b212763ea0e64465c5e00e03
parent 575dc056b5ab2896ff8d48b3891555bce30565af
Author: NRK &lt;nrk@disroot.org&gt;
Date:   Thu, 18 Aug 2022 22:13:08 +0600

config.def.h: make keys and buttons const

pretty much all other variables are declared as const when they&#39;re not
modified.

</content>
</entry>
<entry>
<id>575dc056b5ab2896ff8d48b3891555bce30565af</id>
<published>2022-08-15T12:31:22Z</published>
<updated>2022-08-15T12:31:22Z</updated>
<title>Remove blw variable in favour of calculating the value when needed</title>
<link rel="alternate" type="text/html" href="commit/575dc056b5ab2896ff8d48b3891555bce30565af.html" />
<author>
<name>Stein</name>
<email>bakkeby@gmail.com</email>
</author>
<content>commit 575dc056b5ab2896ff8d48b3891555bce30565af
parent b0597d2bbf828887209e117c8e579e6995f4673f
Author: Stein &lt;bakkeby@gmail.com&gt;
Date:   Mon, 15 Aug 2022 14:31:22 +0200

Remove blw variable in favour of calculating the value when needed

The purpose and reasoning behind the bar layout width (blw) variable
in dwm the way it is today may not be immediately obvious.

The use of the variable makes more sense when looking at commit
2ce37bc from 2009 where blw was initialised in the setup function
and it represented the maximum of all available layout symbols.

	for(blw = i = 0; LENGTH(layouts) &gt; 1 &amp;&amp; i &lt; LENGTH(layouts); i++) {
		w = TEXTW(layouts[i].symbol);
		blw = MAX(blw, w);
	}

As such the layout symbol back then was fixed in size and both drawbar
and buttonpress depended on this variable.

The the way the blw variable is set today in drawbar means that it
merely caches the size of the layout symbol for the last bar drawn.

While unlikely to happen in practice it is possible that the last bar
drawn is not that of the currently selected monitor, which can result
in misaligned button clicks if there is a difference in layout symbol
width between monitors.

</content>
</entry>
<entry>
<id>b0597d2bbf828887209e117c8e579e6995f4673f</id>
<published>2022-08-11T09:15:55Z</published>
<updated>2022-08-11T09:15:55Z</updated>
<title>Make floating windows spawn within the monitor&#39;s window area</title>
<link rel="alternate" type="text/html" href="commit/b0597d2bbf828887209e117c8e579e6995f4673f.html" />
<author>
<name>Stein</name>
<email>bakkeby@gmail.com</email>
</author>
<content>commit b0597d2bbf828887209e117c8e579e6995f4673f
parent f01916dc1bd8b6f94150d10403eaeb153113c44c
Author: Stein &lt;bakkeby@gmail.com&gt;
Date:   Thu, 11 Aug 2022 11:15:55 +0200

Make floating windows spawn within the monitor&#39;s window area

This is a follow-up on this thread:
https://lists.suckless.org/hackers/2208/18462.html

The orginal code had constraints such that if a window&#39;s starting
attributes (position and size) were to place the window outside of
the edges of the monitor, then the window would be moved into view
at the closest monitor edge.

There was an exception to this where if a top bar is used then the
window should not obscure the bar if present, which meant to place
the window within the window area instead.

The proposed change here makes it the general rule that floating
windows should spawn within the window area rather than within the
monitor area. This makes it simple and consistent with no
exceptions and it makes the intention of the code clear.

This has the benefit of making the behaviour consistent regardless
of whether the user is using a top bar or a bottom bar.

Additionally this will have an effect on patches that modify the
size of the window area. For example if the insets patch is used to
reserve space on the left hand side of the monitor for a dock or a
vertical bar then new floating clients will not obscure that area.

</content>
</entry>
<entry>
<id>f01916dc1bd8b6f94150d10403eaeb153113c44c</id>
<published>2022-08-09T08:38:08Z</published>
<updated>2022-08-09T08:38:08Z</updated>
<title>Simplify client y-offset correction</title>
<link rel="alternate" type="text/html" href="commit/f01916dc1bd8b6f94150d10403eaeb153113c44c.html" />
<author>
<name>Stein</name>
<email>bakkeby@gmail.com</email>
</author>
<content>commit f01916dc1bd8b6f94150d10403eaeb153113c44c
parent 16bc12e35b497d38f9170a9a57db5044432dc17a
Author: Stein &lt;bakkeby@gmail.com&gt;
Date:   Tue,  9 Aug 2022 10:38:08 +0200

Simplify client y-offset correction

The reasoning behind the original line may be lost to time as
it does not make much sense checking the position on the x-axis
to determine how to position the client on the y-axis.

In the context of multi-monitor setups the monitor y position
(m-&gt;my) may be greater than 0 (say 500), in which case the window
could be placed out of view if:
   - the window attributes have a 0 value for the y position and
   - we end up using the y position of bh (e.g. 22)

If the aim is to avoid a new floating client covering the bar then
restricting y position to be at least that of the window area
(m-&gt;wy) should cover the two cases of using a top bar and using a
bottom bar.

</content>
</entry>
<entry>
<id>16bc12e35b497d38f9170a9a57db5044432dc17a</id>
<published>2022-08-08T08:43:09Z</published>
<updated>2022-08-08T08:43:09Z</updated>
<title>sync code-style patch from libsl</title>
<link rel="alternate" type="text/html" href="commit/16bc12e35b497d38f9170a9a57db5044432dc17a.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 16bc12e35b497d38f9170a9a57db5044432dc17a
parent 9a039c0a1cb7314128e65de508c5d73483a46c27
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Mon,  8 Aug 2022 10:43:09 +0200

sync code-style patch from libsl

</content>
</entry>
<entry>
<id>9a039c0a1cb7314128e65de508c5d73483a46c27</id>
<published>2022-08-05T22:27:13Z</published>
<updated>2022-08-05T22:27:13Z</updated>
<title>code-style: simplify some checks</title>
<link rel="alternate" type="text/html" href="commit/9a039c0a1cb7314128e65de508c5d73483a46c27.html" />
<author>
<name>NRK</name>
<email>nrk@disroot.org</email>
</author>
<content>commit 9a039c0a1cb7314128e65de508c5d73483a46c27
parent aecae937bbba587df311630c16acafb0acd00d0d
Author: NRK &lt;nrk@disroot.org&gt;
Date:   Sat,  6 Aug 2022 04:27:13 +0600

code-style: simplify some checks

main change here is making the `zoom()` logic saner. the rest of the
changes are just small stuff which accumulated on my local branch.

pop() must not be called with NULL. and `zoom()` achieves this, but in a
very (unnecessarily) complicated way:

if c == NULL then nexttiled() will return NULL as well, so we enter this
branch:

	if (c == nexttiled(selmon-&gt;clients))

in here the !c check fails and the function returns before calling pop()

		if (!c || !(c = nexttiled(c-&gt;next)))
			return;

however, none of this was needed. we can simply return early if c was NULL.
Also `c` is set to `selmon-&gt;sel` so we can use `c` in the first check
instead which makes things shorter.

</content>
</entry>
<entry>
<id>aecae937bbba587df311630c16acafb0acd00d0d</id>
<published>2022-07-29T23:26:04Z</published>
<updated>2022-07-29T23:26:04Z</updated>
<title>spawn: reduce 2 lines, change fprintf() + perror() + exit() to die(&quot;... :&quot;)</title>
<link rel="alternate" type="text/html" href="commit/aecae937bbba587df311630c16acafb0acd00d0d.html" />
<author>
<name>explosion-mental</name>
<email>explosion0mental@gmail.com</email>
</author>
<content>commit aecae937bbba587df311630c16acafb0acd00d0d
parent 76d746015b80f1fce2373fde7bed23f140983be0
Author: explosion-mental &lt;explosion0mental@gmail.com&gt;
Date:   Fri, 29 Jul 2022 18:26:04 -0500

spawn: reduce 2 lines, change fprintf() + perror() + exit() to die(&quot;... :&quot;)

when calling die and the last character of the string corresponds to
&#39;:&#39;, die() will call perror(). See util.c

Also change EXIT_SUCCESS to EXIT_FAILURE

</content>
</entry>
<entry>
<id>76d746015b80f1fce2373fde7bed23f140983be0</id>
<published>2022-08-01T09:42:44Z</published>
<updated>2022-08-01T09:42:44Z</updated>
<title>unmanage: stop listening for events for unmanaged windows</title>
<link rel="alternate" type="text/html" href="commit/76d746015b80f1fce2373fde7bed23f140983be0.html" />
<author>
<name>Stein</name>
<email>bakkeby@gmail.com</email>
</author>
<content>commit 76d746015b80f1fce2373fde7bed23f140983be0
parent 3c43bd1c775bf1f9093bb979689d4c14132e92bc
Author: Stein &lt;bakkeby@gmail.com&gt;
Date:   Mon,  1 Aug 2022 11:42:44 +0200

unmanage: stop listening for events for unmanaged windows

This is in particular to avoid flickering in dwm (and high CPU usage)
when hovering the mouse over a tabbed window that was previously
managed by dwm.

Consider the following two scenarios:

1)

We start tabbed (window 0xc000003), tabbed is managed by the
window manager.
We start st being embedded into tabbed.

$ st -w 0xc000003

What happens here is that:
   - tabbed gets a MapRequest for the st window
   - tabbed reparents the st window
   - tabbed will receive X events for the window

The window manager will have no awareness of the st window and the
X server will not send X events to the window manager relating to
the st window.

There is no flickering or any other issues relating to focus.

2)

We start tabbed (window 0xc000003), tabbed is managed by the
window manager.
We start st as normal (window 0xd400005).

What happens here is that:
   - the window manager gets a MapRequest for the st window
   - dwm manages the st window as a normal client
   - dwm will receive X events for the window

Now we use xdotool to trigger a reparenting of the st window into
tabbed.

$ xdotool windowreparent 0xd400005 0xc000003

What happens here is that:
   - tabbed gets a MapRequest for the st window
   - tabbed reparents the st window
   - the window manager gets an UnmapNotify
   - the window manager no longer manages the st window
   - both the window manager and tabbed will receive X events
     for the st window

In dwm move the mouse cursor over the tabbed window.

What happens now is that:
   - dwm will receive a FocusIn event for the tabbed window
   - dwm will set input focus for the tabbed window
   - tabbed will receive a FocusIn event for the main window
   - tabbed will give focus to the window on the currently selected
     tab
   - which again triggers a FocusIn event which dwm receives
   - dwm determines that the window that the FocusIn event is for
     (0xd400005) is not the currently selected client (tabbed)
   - dwm sets input focus for the tabbed window
   - this causes an infinite loop as long as the mouse cursor hovers
     the tabbed window, resulting in flickering and high CPU usage

The fix here is to tell the X server that we are no longer interested
in receiving events for this window when the window manager stops
managing the window.

</content>
</entry>
<entry>
<id>3c43bd1c775bf1f9093bb979689d4c14132e92bc</id>
<published>2022-07-22T07:18:52Z</published>
<updated>2022-07-22T07:18:52Z</updated>
<title>Revert &quot;do not call signal-unsafe function inside sighanlder&quot;</title>
<link rel="alternate" type="text/html" href="commit/3c43bd1c775bf1f9093bb979689d4c14132e92bc.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 3c43bd1c775bf1f9093bb979689d4c14132e92bc
parent 7aaac398b371885c8a892865e4d5076303e177f1
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Fri, 22 Jul 2022 09:18:52 +0200

Revert &quot;do not call signal-unsafe function inside sighanlder&quot;

This reverts commit 7aaac398b371885c8a892865e4d5076303e177f1.

Discussed on the mailinglist:
https://lists.suckless.org/hackers/2207/18405.html

</content>
</entry>
<entry>
<id>7aaac398b371885c8a892865e4d5076303e177f1</id>
<published>2022-07-14T01:26:40Z</published>
<updated>2022-07-14T01:26:40Z</updated>
<title>do not call signal-unsafe function inside sighanlder</title>
<link rel="alternate" type="text/html" href="commit/7aaac398b371885c8a892865e4d5076303e177f1.html" />
<author>
<name>NRK</name>
<email>nrk@disroot.org</email>
</author>
<content>commit 7aaac398b371885c8a892865e4d5076303e177f1
parent 0d862487725077c188f65b351414379311aadf63
Author: NRK &lt;nrk@disroot.org&gt;
Date:   Thu, 14 Jul 2022 07:26:40 +0600

do not call signal-unsafe function inside sighanlder

die() calls vprintf, fputc and exit; none of these are
async-signal-safe, see `man 7 signal-safety`.

</content>
</entry>
<entry>
<id>0d862487725077c188f65b351414379311aadf63</id>
<published>2022-07-14T01:27:34Z</published>
<updated>2022-07-14T01:27:34Z</updated>
<title>use named parameter for func prototype</title>
<link rel="alternate" type="text/html" href="commit/0d862487725077c188f65b351414379311aadf63.html" />
<author>
<name>NRK</name>
<email>nrk@disroot.org</email>
</author>
<content>commit 0d862487725077c188f65b351414379311aadf63
parent 20d8bfd2cf59c70499a84409957adbc20711278b
Author: NRK &lt;nrk@disroot.org&gt;
Date:   Thu, 14 Jul 2022 07:27:34 +0600

use named parameter for func prototype

all the other prototypes use names.

</content>
</entry>
<entry>
<id>20d8bfd2cf59c70499a84409957adbc20711278b</id>
<published>2022-05-10T17:07:56Z</published>
<updated>2022-05-10T17:07:56Z</updated>
<title>sync latest drw.{c,h} changes from dmenu</title>
<link rel="alternate" type="text/html" href="commit/20d8bfd2cf59c70499a84409957adbc20711278b.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 20d8bfd2cf59c70499a84409957adbc20711278b
parent d0c53d719b4defef0e2fc4e4be2f6da7eeab273a
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Tue, 10 May 2022 19:07:56 +0200

sync latest drw.{c,h} changes from dmenu

</content>
</entry>
<entry>
<id>d0c53d719b4defef0e2fc4e4be2f6da7eeab273a</id>
<published>2022-05-01T16:37:54Z</published>
<updated>2022-05-01T16:37:54Z</updated>
<title>Makefile: add manual path for OpenBSD</title>
<link rel="alternate" type="text/html" href="commit/d0c53d719b4defef0e2fc4e4be2f6da7eeab273a.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit d0c53d719b4defef0e2fc4e4be2f6da7eeab273a
parent 77298e68c4cfe6836c4e8a4b165bfaa0ba171a31
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Sun,  1 May 2022 18:37:54 +0200

Makefile: add manual path for OpenBSD

Reported by fossy &lt;fossy@dnmx.org&gt;, thanks

</content>
</entry>
<entry>
<id>77298e68c4cfe6836c4e8a4b165bfaa0ba171a31</id>
<published>2022-04-26T08:42:23Z</published>
<updated>2022-04-26T08:42:23Z</updated>
<title>manage: Make sure c-&gt;isfixed is applied before floating checks</title>
<link rel="alternate" type="text/html" href="commit/77298e68c4cfe6836c4e8a4b165bfaa0ba171a31.html" />
<author>
<name>Chris Down</name>
<email>chris@chrisdown.name</email>
</author>
<content>commit 77298e68c4cfe6836c4e8a4b165bfaa0ba171a31
parent 08a37324fce7db4d751c5987436193082b7cd4e1
Author: Chris Down &lt;chris@chrisdown.name&gt;
Date:   Tue, 26 Apr 2022 09:42:23 +0100

manage: Make sure c-&gt;isfixed is applied before floating checks

Commit b274e4936373 (&quot;manage: propertynotify: Reduce cost of unused size
hints&quot;) mistakenly removed an early size hints update that&#39;s needed to
populate c-&gt;isfixed for floating checks at manage() time. This resulted
in fixed (size hint min dimensions == max dimensions) subset of windows
not floating when they should.

See https://lists.suckless.org/dev/2204/34730.html for discussion.

</content>
</entry>
<entry>
<id>08a37324fce7db4d751c5987436193082b7cd4e1</id>
<published>2022-04-26T13:50:32Z</published>
<updated>2022-04-26T13:50:32Z</updated>
<title>LICENSE: add Chris Down</title>
<link rel="alternate" type="text/html" href="commit/08a37324fce7db4d751c5987436193082b7cd4e1.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit 08a37324fce7db4d751c5987436193082b7cd4e1
parent f747127b786e43158d75c6b69f89cb7def0c9352
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Tue, 26 Apr 2022 15:50:32 +0200

LICENSE: add Chris Down

</content>
</entry>
<entry>
<id>f747127b786e43158d75c6b69f89cb7def0c9352</id>
<published>2022-04-26T08:30:59Z</published>
<updated>2022-04-26T08:30:59Z</updated>
<title>Revert &quot;manage: For isfloating/oldstate check/set, ensure trans client actually exists&quot;</title>
<link rel="alternate" type="text/html" href="commit/f747127b786e43158d75c6b69f89cb7def0c9352.html" />
<author>
<name>Hiltjo Posthuma</name>
<email>hiltjo@codemadness.org</email>
</author>
<content>commit f747127b786e43158d75c6b69f89cb7def0c9352
parent f41c424da1491579254e53347190ffea60a0242e
Author: Hiltjo Posthuma &lt;hiltjo@codemadness.org&gt;
Date:   Tue, 26 Apr 2022 10:30:59 +0200

Revert &quot;manage: For isfloating/oldstate check/set, ensure trans client actually exists&quot;

This reverts commit 41a5ec907129a7b2de18e148bc9ec5f22fd3e8c9.

It caused a regression, for example:
https://lists.suckless.org/hackers/2203/18220.html

</content>
</entry>
<entry>
<id>f41c424da1491579254e53347190ffea60a0242e</id>
<published>2022-02-21T14:58:28Z</published>
<updated>2022-02-21T14:58:28Z</updated>
<title>Update monitor positions also on removal</title>
<link rel="alternate" type="text/html" href="commit/f41c424da1491579254e53347190ffea60a0242e.html" />
<author>
<name>Santtu Lakkala</name>
<email>inz@inz.fi</email>
</author>
<content>commit f41c424da1491579254e53347190ffea60a0242e
parent b274e49363731a91a61a5f965b1bf801a5d39c8f
Author: Santtu Lakkala &lt;inz@inz.fi&gt;
Date:   Mon, 21 Feb 2022 16:58:28 +0200

Update monitor positions also on removal

When monitors are removed, the coordinates of existing monitors may
change, if the removed monitors had smaller coordinates than the
remaining ones.

Remove special case handling so that the same update-if-necessary loop
is run also in the case when monitors are removed.

</content>
</entry>
<entry>
<id>b274e49363731a91a61a5f965b1bf801a5d39c8f</id>
<published>2022-03-17T15:56:13Z</published>
<updated>2022-03-17T15:56:13Z</updated>
<title>manage: propertynotify: Reduce cost of unused size hints</title>
<link rel="alternate" type="text/html" href="commit/b274e49363731a91a61a5f965b1bf801a5d39c8f.html" />
<author>
<name>Chris Down</name>
<email>chris@chrisdown.name</email>
</author>
<content>commit b274e49363731a91a61a5f965b1bf801a5d39c8f
parent 41a5ec907129a7b2de18e148bc9ec5f22fd3e8c9
Author: Chris Down &lt;chris@chrisdown.name&gt;
Date:   Thu, 17 Mar 2022 15:56:13 +0000

manage: propertynotify: Reduce cost of unused size hints

This patch defers all size hint calculations until they are actually
needed, drastically reducing the number of calls to updatesizehints(),
which can be expensive when called repeatedly (as it currently is during
resizes).

In my unscientific testing this reduces calls to updatesizehints() by
over 90% during a typical work session. There are no functional changes
for users other than an increase in responsiveness after resizes and
a reduction in CPU time.

In slower environments or X servers, this patch also offers an
improvement in responsiveness that is often tangible after resizing a
client that changes hints during resizes.

There are two main motivations to defer this work to the time of hint
application:

1. Some clients, especially terminals using incremental size hints,
   resend XA_WM_NORMAL_HINTS events on resize to avoid fighting with the
   WM or mouse resizing. For example, some terminals like urxvt clear
   PBaseSize and PResizeInc during XResizeWindow and restore them
   afterwards.

   For this reason, after the resize is concluded, we typically receive
   a backlogged XA_WM_NORMAL_HINTS message for each update period with
   movement, which is useless. In some cases one may get hundreds or
   thousands of XA_WM_NORMAL_HINTS messages on large resizes, and
   currently all of these result in a separate updatesizehints() call,
   of which all but the final one are immediately outdated.

   (We can&#39;t just blindly discard these messages during resizes like we
   do for EnterNotify, because some of them might actually be for other
   windows, and may not be XA_WM_NORMAL_HINTS events.)

2. For users which use resizehints=0 most of these updates are unused
   anyway -- in the normal case where the client is not floating these
   values won&#39;t be used, so there&#39;s no need to calculate them up front.

A synthetic test using the mouse to resize a floating terminal window
from roughly 256x256 to 1024x1024 and back again shows that the number
of calls to updatesizehints() goes from over 500 before this patch (one
for each update interval with movement) to 2 after this patch (one for
each hint application), with no change in user visible behaviour.

This also reduces the delay before dwm is ready to process new events
again after a large resize on such a client, as it avoids the thundering
herd of updatesizehints() calls when hundreds of backlogged
XA_WM_NORMAL_HINTS messages appear at once after a resize is finished.

</content>
</entry>
<entry>
<id>41a5ec907129a7b2de18e148bc9ec5f22fd3e8c9</id>
<published>2022-02-21T06:10:56Z</published>
<updated>2022-02-21T06:10:56Z</updated>
<title>manage: For isfloating/oldstate check/set, ensure trans client actually exists</title>
<link rel="alternate" type="text/html" href="commit/41a5ec907129a7b2de18e148bc9ec5f22fd3e8c9.html" />
<author>
<name>Miles Alan</name>
<email>m@milesalan.com</email>
</author>
<content>commit 41a5ec907129a7b2de18e148bc9ec5f22fd3e8c9
parent c838f93093296588bcaecd8fc2192e8d179ca8b1
Author: Miles Alan &lt;m@milesalan.com&gt;
Date:   Mon, 21 Feb 2022 01:10:56 -0500

manage: For isfloating/oldstate check/set, ensure trans client actually exists

In certain instances trans may be set to a window that doesn&#39;t actually
map to a client via wintoclient; in this case it doesn&#39;t make sense
to set isfloating/oldstate since trans is essentially invalid in that
case / correlates to the above condition check where trans is set /
XGetTransientForHint is called.

</content>
</entry>
</feed>
