<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>dmenu, branch HEAD</title>
<subtitle>dynamic menu
</subtitle>
<entry>
<id>b1e217b29aab8936e9831961943676acd9cdcdd8</id>
<published>2025-03-15T18:53:56Z</published>
<updated>2025-03-17T20:01:05Z</updated>
<title>XUngrabKeyboard() instead of XUngrabKey()</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/b1e217b29aab8936e9831961943676acd9cdcdd8.gph" />
<author>
<name>Adam Purkrt</name>
<email>[email protected]</email>
</author>
<content>commit b1e217b29aab8936e9831961943676acd9cdcdd8
parent 86f0b5119eaa39943013d009967432ffd9d18365
Author: Adam Purkrt &lt;[email protected]&gt;
Date:   Sat, 15 Mar 2025 19:53:56 +0100

XUngrabKeyboard() instead of XUngrabKey()

XUngrabKey(), which is currently used in cleanup(), is not the right
counterpart to XGrabKeyboard(), which is used in grabkeyboard(),
called from main().

XUngrabKeyboard() is the function to use, as grabbing the whole
keyboard is different to grabbing individual keys.

With the current code the keyboard gets ungrabbed, as far as I can tell,
only by the final XCloseDisplay() in cleanup(), as the XUngrabKey()
there effectively does nothing.

</content>
</entry>
<entry>
<id>86f0b5119eaa39943013d009967432ffd9d18365</id>
<published>2024-10-30T12:03:25Z</published>
<updated>2024-10-30T12:03:25Z</updated>
<title>remove extra newline</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/86f0b5119eaa39943013d009967432ffd9d18365.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 86f0b5119eaa39943013d009967432ffd9d18365
parent dd3d348ae86065edf2d1e2a1bc920685dc4982fc
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Wed, 30 Oct 2024 13:03:25 +0100

remove extra newline

</content>
</entry>
<entry>
<id>dd3d348ae86065edf2d1e2a1bc920685dc4982fc</id>
<published>2024-10-30T12:02:57Z</published>
<updated>2024-10-30T12:02:57Z</updated>
<title>Avoid unsigned integer underflow in drw_text()</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/dd3d348ae86065edf2d1e2a1bc920685dc4982fc.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit dd3d348ae86065edf2d1e2a1bc920685dc4982fc
parent 545031a076d4b5712442a8fc2d983f1e9d9f4f79
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Wed, 30 Oct 2024 13:02:57 +0100

Avoid unsigned integer underflow in drw_text()

Patch by Raymond Cole &lt;[email protected]&gt;, thanks.

</content>
</entry>
<entry>
<id>545031a076d4b5712442a8fc2d983f1e9d9f4f79</id>
<published>2024-10-27T19:08:46Z</published>
<updated>2024-10-27T19:08:46Z</updated>
<title>util.c: output function might override errno and thus affect perror()</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/545031a076d4b5712442a8fc2d983f1e9d9f4f79.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 545031a076d4b5712442a8fc2d983f1e9d9f4f79
parent 475d8093cb8d29d5756937bfa9e0b3b9e415f632
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sun, 27 Oct 2024 20:08:46 +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>475d8093cb8d29d5756937bfa9e0b3b9e415f632</id>
<published>2024-07-14T09:40:20Z</published>
<updated>2024-07-14T09:43:01Z</updated>
<title>drw.c: use the same pattern as ellipsis_width to check for infinite recursion</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/475d8093cb8d29d5756937bfa9e0b3b9e415f632.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 475d8093cb8d29d5756937bfa9e0b3b9e415f632
parent 59936c7d972587a47d61161279bb8e8abc0b02f3
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sun, 14 Jul 2024 11:40:20 +0200

drw.c: use the same pattern as ellipsis_width to check for infinite recursion

</content>
</entry>
<entry>
<id>59936c7d972587a47d61161279bb8e8abc0b02f3</id>
<published>2024-07-04T21:27:47Z</published>
<updated>2024-07-14T09:42:58Z</updated>
<title>render invalid utf8 sequences as U+FFFD</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/59936c7d972587a47d61161279bb8e8abc0b02f3.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 59936c7d972587a47d61161279bb8e8abc0b02f3
parent 51e32d49b56c86cd288c64fccf6cd765547781b9
Author: NRK &lt;[email protected]&gt;
Date:   Thu,  4 Jul 2024 21:27:47 +0000

render invalid utf8 sequences as U+FFFD

previously drw_text would do the width calculations as if
invalid utf8 sequences were replaced with U+FFFD but would pass
the invalid utf8 sequence to xft to render where xft would just
cut it off at the first invalid byte.

this change makes invalid utf8 render as U+FFFD and avoids
sending invalid sequences to xft. the following can be used to
check the behavior before and after the patch:

       $ printf &quot;0\xef1234567\ntest&quot; | dmenu

Ref: https://lists.suckless.org/dev/2407/35646.html

</content>
</entry>
<entry>
<id>51e32d49b56c86cd288c64fccf6cd765547781b9</id>
<published>2024-07-04T21:25:37Z</published>
<updated>2024-07-14T09:42:55Z</updated>
<title>overhaul utf8decode()</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/51e32d49b56c86cd288c64fccf6cd765547781b9.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 51e32d49b56c86cd288c64fccf6cd765547781b9
parent 7be720cc88ed2294338f7182600df10f21c575ce
Author: NRK &lt;[email protected]&gt;
Date:   Thu,  4 Jul 2024 21:25:37 +0000

overhaul utf8decode()

this changes the utf8decode function to:

* report when an error occurs
* report how many bytes to advance on error

these will be useful in the next commit to render invalid utf8
sequences.

the new implementation is also shorter and more direct.

</content>
</entry>
<entry>
<id>7be720cc88ed2294338f7182600df10f21c575ce</id>
<published>2024-03-19T11:12:52Z</published>
<updated>2024-03-19T11:12:52Z</updated>
<title>bump version to 5.3</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/7be720cc88ed2294338f7182600df10f21c575ce.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 7be720cc88ed2294338f7182600df10f21c575ce
parent 8df553e0048733bab4bc85a6b76bcfd44c046e71
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue, 19 Mar 2024 12:12:52 +0100

bump version to 5.3

</content>
</entry>
<entry>
<id>8df553e0048733bab4bc85a6b76bcfd44c046e71</id>
<published>2023-09-22T13:16:44Z</published>
<updated>2023-09-22T13:16:44Z</updated>
<title>Makefile: remove the options target</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/8df553e0048733bab4bc85a6b76bcfd44c046e71.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 8df553e0048733bab4bc85a6b76bcfd44c046e71
parent 7ab0cb5ef0e19352fc5d64ae0d57a5cf4540acbf
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri, 22 Sep 2023 15:16:44 +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>7ab0cb5ef0e19352fc5d64ae0d57a5cf4540acbf</id>
<published>2023-07-07T11:00:42Z</published>
<updated>2023-07-07T13:03:57Z</updated>
<title>drw: minor improvement to the nomatches cache</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/7ab0cb5ef0e19352fc5d64ae0d57a5cf4540acbf.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 7ab0cb5ef0e19352fc5d64ae0d57a5cf4540acbf
parent 0fe460dbd469a1d5b6a7140d0e1801935e4a923b
Author: NRK &lt;[email protected]&gt;
Date:   Fri,  7 Jul 2023 17:00:42 +0600

drw: minor improvement to the nomatches cache

1. use `unsigned int` to store the codepoints, this avoids waste on
  common case where `long` is 64bits. and POSIX guarantees `int` to be
  at least 32bits so there&#39;s no risk of truncation.
2. since switching to `unsigned int` cuts down the memory requirement by
  half, double the cache size from 64 to 128.
3. instead of a linear search, use a simple hash-table for O(1) lookups.

</content>
</entry>
<entry>
<id>0fe460dbd469a1d5b6a7140d0e1801935e4a923b</id>
<published>2023-04-05T20:11:49Z</published>
<updated>2023-04-06T18:28:56Z</updated>
<title>fix BadMatch error when embedding on some windows</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/0fe460dbd469a1d5b6a7140d0e1801935e4a923b.gph" />
<author>
<name>Lucas de Sena</name>
<email>[email protected]</email>
</author>
<content>commit 0fe460dbd469a1d5b6a7140d0e1801935e4a923b
parent dfbbf7f6e1b22ccf9e5a45d77ee10995577fb4fc
Author: Lucas de Sena &lt;[email protected]&gt;
Date:   Wed,  5 Apr 2023 17:11:49 -0300

fix BadMatch error when embedding on some windows

When embedded into another window, dmenu will fail with the BadMatch
error if that window have not the same colormap/depth/visual as the
root window.

That happens because dmenu inherits the colormap/depth/visual from
its parent, but draws on a pixmap created based on the root window
using a GC created for the root window (see drw.c).  A BadMatch will
occur when copying the content of the pixmap into dmenu&#39;s window.

A solution is to create dmenu&#39;s window inside root and then reparent
it if embeded.

See this mail[1] on [email protected] mailing list for context.

[1]: https://marc.info/?l=openbsd-ports&amp;m=168072150814664&amp;w=2

</content>
</entry>
<entry>
<id>dfbbf7f6e1b22ccf9e5a45d77ee10995577fb4fc</id>
<published>2023-03-08T20:20:52Z</published>
<updated>2023-03-08T20:28:51Z</updated>
<title>readstdin: reduce memory-usage by duplicating the line from getline()</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/dfbbf7f6e1b22ccf9e5a45d77ee10995577fb4fc.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit dfbbf7f6e1b22ccf9e5a45d77ee10995577fb4fc
parent ba1a347dcaba055f824161007dfee60db3ea785b
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Wed,  8 Mar 2023 21:20:52 +0100

readstdin: reduce memory-usage by duplicating the line from getline()

Improves upon commit 32db2b125190d366be472ccb7cad833248696144

The getline() implementation often uses a more greedy way of allocating memory.
Using this buffer directly and forcing an allocation (by setting it to NULL)
would waste a bit of extra space, depending on the implementation of course.

Tested on musl libc and glibc.
The current glibc version allocates a minimum of 120 bytes per line.
For smaller lines musl libc seems less wasteful but still wastes a few bytes
per line.

On a dmenu_path listing on my system the memory usage was about 350kb (old) vs
30kb (new) on Void Linux glibc.

Side-note that getline() also reads NUL bytes in lines, while strdup() would
read until the NUL byte. Since dmenu reads text lines either is probably
fine(tm). Also rename junk to linesiz.

</content>
</entry>
<entry>
<id>ba1a347dcaba055f824161007dfee60db3ea785b</id>
<published>2022-10-31T10:52:30Z</published>
<updated>2022-10-31T10:52:30Z</updated>
<title>readstdin: allocate amount of items</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/ba1a347dcaba055f824161007dfee60db3ea785b.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit ba1a347dcaba055f824161007dfee60db3ea785b
parent bcbc1ef5c4cf4875a4d66e7dc0919da88a6096a5
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Mon, 31 Oct 2022 11:52:30 +0100

readstdin: allocate amount of items

Keep track of the amount of items (not a total buffer size), allocate an array of
new items. For now change BUFSIZ bytes to 256 * sizeof(struct item)).

</content>
</entry>
<entry>
<id>bcbc1ef5c4cf4875a4d66e7dc0919da88a6096a5</id>
<published>2022-10-31T10:43:34Z</published>
<updated>2022-10-31T10:46:10Z</updated>
<title>readstdin: add a comment</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/bcbc1ef5c4cf4875a4d66e7dc0919da88a6096a5.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit bcbc1ef5c4cf4875a4d66e7dc0919da88a6096a5
parent 689d9bfcf6859e5ce85c296ff0f23b5c08b1fedc
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Mon, 31 Oct 2022 11:43:34 +0100

readstdin: add a comment

Maybe too obvious / redundant, but OK.

</content>
</entry>
<entry>
<id>689d9bfcf6859e5ce85c296ff0f23b5c08b1fedc</id>
<published>2022-10-30T18:10:45Z</published>
<updated>2022-10-31T10:40:35Z</updated>
<title>fix leak when getline fails</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/689d9bfcf6859e5ce85c296ff0f23b5c08b1fedc.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 689d9bfcf6859e5ce85c296ff0f23b5c08b1fedc
parent e42c03663442f5fb2f66dd59cc5bfdc61c53192c
Author: NRK &lt;[email protected]&gt;
Date:   Mon, 31 Oct 2022 00:10:45 +0600

fix leak when getline fails

according to the getline(3) documentation, the calling code needs to
free the buffer even if getline fails.

dmenu currently doesn&#39;t do that which results in a small leak in case of
failure (e.g when piped /dev/null)

       $ ./dmenu &lt; /dev/null
       ==8201==ERROR: LeakSanitizer: detected memory leaks
       Direct leak of 120 byte(s) in 1 object(s) allocated from:
           #0 0x7f6bf5785ef7 in malloc
           #1 0x7f6bf538ec84 in __getdelim
           #2 0x405d0c in readstdin dmenu.c:557

moving `line = NULL` inside the loop body wasn&#39;t strictly necessary, but
IMO it makes it more apparent that `line` is getting cleared to NULL
after each successful iteration.

</content>
</entry>
<entry>
<id>e42c03663442f5fb2f66dd59cc5bfdc61c53192c</id>
<published>2022-10-26T07:43:17Z</published>
<updated>2022-10-26T07:43:17Z</updated>
<title>dmenu: small XmbLookupString code improvements</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/e42c03663442f5fb2f66dd59cc5bfdc61c53192c.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit e42c03663442f5fb2f66dd59cc5bfdc61c53192c
parent 1d2b462acf1210b8f86966b8dd9bb6e36e369ee1
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Wed, 26 Oct 2022 09:43:17 +0200

dmenu: small XmbLookupString code improvements

* Increase the length of composed strings to the same limit as st (32 to 64 bytes).
* Initialize ksym to NoSymbol to be safe: currently this is not an issue though.
* Add comments to clarify the return values of XmbLookupString a bit.

</content>
</entry>
<entry>
<id>1d2b462acf1210b8f86966b8dd9bb6e36e369ee1</id>
<published>2022-10-04T17:36:02Z</published>
<updated>2022-10-04T17:36:02Z</updated>
<title>bump version to 5.2</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/1d2b462acf1210b8f86966b8dd9bb6e36e369ee1.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 1d2b462acf1210b8f86966b8dd9bb6e36e369ee1
parent 7ec32fe4944d4f7137cf2a23366324ffe0f10a70
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue,  4 Oct 2022 19:36:02 +0200

bump version to 5.2

</content>
</entry>
<entry>
<id>7ec32fe4944d4f7137cf2a23366324ffe0f10a70</id>
<published>2022-09-26T09:24:15Z</published>
<updated>2022-10-01T11:20:40Z</updated>
<title>dmenu: use die() to print the usage message</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/7ec32fe4944d4f7137cf2a23366324ffe0f10a70.gph" />
<author>
<name>Tom Schwindl</name>
<email>[email protected]</email>
</author>
<content>commit 7ec32fe4944d4f7137cf2a23366324ffe0f10a70
parent fce06f437dcec646ee0a2728fe695f3084cc6ccb
Author: Tom Schwindl &lt;[email protected]&gt;
Date:   Mon, 26 Sep 2022 09:24:15 +0000

dmenu: use die() to print the usage message

</content>
</entry>
<entry>
<id>fce06f437dcec646ee0a2728fe695f3084cc6ccb</id>
<published>2022-09-16T21:05:07Z</published>
<updated>2022-09-17T13:32:26Z</updated>
<title>remove workaround for a crash with color emojis on some systems, now fixed in libXft 2.3.5</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/fce06f437dcec646ee0a2728fe695f3084cc6ccb.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit fce06f437dcec646ee0a2728fe695f3084cc6ccb
parent 1e8c5b68f4881bd4ae257c780fd41f129c79f419
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri, 16 Sep 2022 23:05:07 +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>1e8c5b68f4881bd4ae257c780fd41f129c79f419</id>
<published>2022-09-02T17:09:50Z</published>
<updated>2022-09-02T17:09:50Z</updated>
<title>fix a regression in the previous commit for tab complete</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/1e8c5b68f4881bd4ae257c780fd41f129c79f419.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 1e8c5b68f4881bd4ae257c780fd41f129c79f419
parent 528d39b011afb7ef6fd794ba6b74155d4e69bc68
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri,  2 Sep 2022 19:09:50 +0200

fix a regression in the previous commit for tab complete

Reported by Santtu Lakkala &lt;[email protected]&gt;, thanks!

</content>
</entry>
<entry>
<id>528d39b011afb7ef6fd794ba6b74155d4e69bc68</id>
<published>2022-09-01T17:51:43Z</published>
<updated>2022-09-02T11:00:48Z</updated>
<title>tab-complete: figure out the size before copying</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/528d39b011afb7ef6fd794ba6b74155d4e69bc68.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 528d39b011afb7ef6fd794ba6b74155d4e69bc68
parent 32db2b125190d366be472ccb7cad833248696144
Author: NRK &lt;[email protected]&gt;
Date:   Thu,  1 Sep 2022 23:51:43 +0600

tab-complete: figure out the size before copying

we already need to know the string length since `cursor` needs to be
adjusted.

so just calculate the length beforehand and use `memcpy` to copy exactly
as much as needed (as opposed to `strncpy` which always writes `n`
bytes).

</content>
</entry>
<entry>
<id>32db2b125190d366be472ccb7cad833248696144</id>
<published>2022-09-01T18:35:18Z</published>
<updated>2022-09-02T10:53:34Z</updated>
<title>readstdin: use getline(3)</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/32db2b125190d366be472ccb7cad833248696144.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 32db2b125190d366be472ccb7cad833248696144
parent e35976f4a50f884c2162f71e4128d7c273e3e042
Author: NRK &lt;[email protected]&gt;
Date:   Fri,  2 Sep 2022 00:35:18 +0600

readstdin: use getline(3)

currently readstdin():
  - fgets() into a local buffer,
  - strchr() the buffer to eleminate the newline
  - stdups() the buffer into items

a simpler way is to just use getline(3), which will do the allocation
for us; eliminating the need for stdup()-ing.

additionally getline returns back the amount of bytes read, which
eliminates the need for strchr()-ing to find the newline.

</content>
</entry>
<entry>
<id>e35976f4a50f884c2162f71e4128d7c273e3e042</id>
<published>2022-08-08T08:42:54Z</published>
<updated>2022-08-08T08:42:54Z</updated>
<title>sync code-style patch from libsl</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/e35976f4a50f884c2162f71e4128d7c273e3e042.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit e35976f4a50f884c2162f71e4128d7c273e3e042
parent 28fb3e28120db29ea45d1951eee7047b4109ab5f
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Mon,  8 Aug 2022 10:42:54 +0200

sync code-style patch from libsl

</content>
</entry>
<entry>
<id>28fb3e28120db29ea45d1951eee7047b4109ab5f</id>
<published>2022-05-01T16:38:25Z</published>
<updated>2022-05-01T16:38:25Z</updated>
<title>Makefile: add manual path for OpenBSD</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/28fb3e28120db29ea45d1951eee7047b4109ab5f.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 28fb3e28120db29ea45d1951eee7047b4109ab5f
parent fe5d5c6709a77ac5d554e26dda76a67df68618ae
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sun,  1 May 2022 18:38:25 +0200

Makefile: add manual path for OpenBSD

</content>
</entry>
<entry>
<id>fe5d5c6709a77ac5d554e26dda76a67df68618ae</id>
<published>2022-04-30T11:19:33Z</published>
<updated>2022-04-30T11:19:33Z</updated>
<title>fix incorrect comment, math is hard</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/fe5d5c6709a77ac5d554e26dda76a67df68618ae.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit fe5d5c6709a77ac5d554e26dda76a67df68618ae
parent e1e1de7b3b8399cba90ddca9613f837b2dbef7b9
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sat, 30 Apr 2022 13:19:33 +0200

fix incorrect comment, math is hard

</content>
</entry>
<entry>
<id>e1e1de7b3b8399cba90ddca9613f837b2dbef7b9</id>
<published>2022-04-29T18:15:48Z</published>
<updated>2022-04-29T18:18:02Z</updated>
<title>inputw: improve correctness and startup performance, by NRK</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/e1e1de7b3b8399cba90ddca9613f837b2dbef7b9.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit e1e1de7b3b8399cba90ddca9613f837b2dbef7b9
parent 33685b06e9332638769e677e77b257e24e069fd1
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri, 29 Apr 2022 20:15:48 +0200

inputw: improve correctness and startup performance, by NRK

Always use ~30% of the monitor width for the input in horizontal mode.

Patch adapted from NRK patches.
This also does not calculate inputw when using vertical mode anymore (because
the code is removed).

</content>
</entry>
<entry>
<id>33685b06e9332638769e677e77b257e24e069fd1</id>
<published>2022-03-28T15:38:49Z</published>
<updated>2022-04-16T14:21:01Z</updated>
<title>drw_text: account for fallback fonts in ellipsis_width</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/33685b06e9332638769e677e77b257e24e069fd1.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 33685b06e9332638769e677e77b257e24e069fd1
parent e4827b0c4048718ab06670cf60ef68d028fe7fc4
Author: NRK &lt;[email protected]&gt;
Date:   Mon, 28 Mar 2022 21:38:49 +0600

drw_text: account for fallback fonts in ellipsis_width

additionally, ellipsis_width (which shouldn&#39;t change) is made static to
avoid re-calculating it on each drw_text() call.

</content>
</entry>
<entry>
<id>e4827b0c4048718ab06670cf60ef68d028fe7fc4</id>
<published>2022-03-27T19:02:52Z</published>
<updated>2022-04-16T14:21:01Z</updated>
<title>drw_text: don&#39;t segfault when called with 0 width</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/e4827b0c4048718ab06670cf60ef68d028fe7fc4.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit e4827b0c4048718ab06670cf60ef68d028fe7fc4
parent e73651f12a406629778f02d8e5acbe2caec0dfc2
Author: NRK &lt;[email protected]&gt;
Date:   Mon, 28 Mar 2022 01:02:52 +0600

drw_text: don&#39;t segfault when called with 0 width

this patch just rejects *any* 0 width draws, which is surely an error by
the caller.

this also guards against cases where the width is too small for the
ellipsis to fit, so ellipsis_w will remain 0.
reported by Bakkeby &lt;[email protected]&gt;

</content>
</entry>
<entry>
<id>e73651f12a406629778f02d8e5acbe2caec0dfc2</id>
<published>2022-03-26T16:58:47Z</published>
<updated>2022-03-26T16:58:47Z</updated>
<title>fix UB with the function iscntrl()</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/e73651f12a406629778f02d8e5acbe2caec0dfc2.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit e73651f12a406629778f02d8e5acbe2caec0dfc2
parent 31fa07b9849b0ffbf4b7efb55943f466b3ff160f
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sat, 26 Mar 2022 17:58:47 +0100

fix UB with the function iscntrl()

From commit 6818e07291f3b2913e687c8ec3d3fe4711724050 by NRK, thanks

</content>
</entry>
<entry>
<id>31fa07b9849b0ffbf4b7efb55943f466b3ff160f</id>
<published>2022-03-26T16:57:50Z</published>
<updated>2022-03-26T16:57:50Z</updated>
<title>Revert &quot;avoid redraw when there&#39;s no change&quot;</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/31fa07b9849b0ffbf4b7efb55943f466b3ff160f.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 31fa07b9849b0ffbf4b7efb55943f466b3ff160f
parent 6818e07291f3b2913e687c8ec3d3fe4711724050
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sat, 26 Mar 2022 17:57:50 +0100

Revert &quot;avoid redraw when there&#39;s no change&quot;

This reverts commit 6818e07291f3b2913e687c8ec3d3fe4711724050.

This broke keys such as ^W to delete-backward-word

</content>
</entry>
<entry>
<id>6818e07291f3b2913e687c8ec3d3fe4711724050</id>
<published>2022-03-25T21:51:45Z</published>
<updated>2022-03-25T21:53:50Z</updated>
<title>avoid redraw when there&#39;s no change</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/6818e07291f3b2913e687c8ec3d3fe4711724050.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 6818e07291f3b2913e687c8ec3d3fe4711724050
parent b43ec0577f2ad8ad33a0b893fe5360d966036786
Author: NRK &lt;[email protected]&gt;
Date:   Fri, 25 Mar 2022 22:51:45 +0100

avoid redraw when there&#39;s no change

while i was timing the performance issue, i noticed that there was lots
of random redrawing going on.

turns out there were coming from here; if someone presses CTRL/ALT etc
without pressing anything else, nothing will be inserted, so nothing
will change. but the code will `break`, go down and do a needless redraw.

this patch changes it to simply return if the keypress iscntrl()

also avoid potential UB by casting *buf into an unsigned char.

</content>
</entry>
<entry>
<id>b43ec0577f2ad8ad33a0b893fe5360d966036786</id>
<published>2022-03-25T21:51:09Z</published>
<updated>2022-03-25T21:53:50Z</updated>
<title>free all allocated items, use %zu for size_t</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/b43ec0577f2ad8ad33a0b893fe5360d966036786.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit b43ec0577f2ad8ad33a0b893fe5360d966036786
parent 22511c41d55a38a770541ae617a09383d5e6ad1c
Author: NRK &lt;[email protected]&gt;
Date:   Fri, 25 Mar 2022 22:51:09 +0100

free all allocated items, use %zu for size_t

`items` itself is not checked for NULL as calling free on NULL is defined to be
a no-op.

</content>
</entry>
<entry>
<id>22511c41d55a38a770541ae617a09383d5e6ad1c</id>
<published>2022-03-23T18:37:55Z</published>
<updated>2022-03-25T21:49:07Z</updated>
<title>drw_text: improve performance when there&#39;s no match</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/22511c41d55a38a770541ae617a09383d5e6ad1c.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 22511c41d55a38a770541ae617a09383d5e6ad1c
parent 77526f756e23e362081ac807521f901f2e5cd5e6
Author: NRK &lt;[email protected]&gt;
Date:   Thu, 24 Mar 2022 00:37:55 +0600

drw_text: improve performance when there&#39;s no match

this was the last piece of the puzzle, the case where we can&#39;t find any
font to draw the codepoint.

in such cases, we use XftFontMatch() which is INSANELY slow. but that&#39;s
not the real problem. the real problem was we were continuously trying
to match the same thing over and over again.

this patch introduces a small cache, which keeps track a couple
codepoints for which we know we won&#39;t find any matches.

with this, i can dump lots of emojies into dmenu where some of them
don&#39;t have any matching font, and still not have dmenu lag insanely or
FREEZE completely when scrolling up and down.

this also improves startup time, which will of course depend on the
system and all installed fonts; but on my system and test case i see the
following startup time drop:

before -&gt; after
60ms   -&gt; 34ms

</content>
</entry>
<entry>
<id>77526f756e23e362081ac807521f901f2e5cd5e6</id>
<published>2022-03-23T18:37:55Z</published>
<updated>2022-03-25T21:49:07Z</updated>
<title>inputw: improve correctness and startup performance</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/77526f756e23e362081ac807521f901f2e5cd5e6.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 77526f756e23e362081ac807521f901f2e5cd5e6
parent 7269c5355d257dd2ad2c53f15dc9c1cf6796aea5
Author: NRK &lt;[email protected]&gt;
Date:   Thu, 24 Mar 2022 00:37:55 +0600

inputw: improve correctness and startup performance

a massive amount of time inside readstdin() is spent trying to get the
max input width and then put it into inputw, only for it to get clamped
down to mw/3 inside setup().

it makes more sense to calculate inputw inside setup() once we have mw
available. similar to the last patch, i see noticeable startup
performance improvement:

before -&gt; after
160ms  -&gt; 60ms

additionally this will take fallback fonts into account compared to the
previous version, so it&#39;s not only more performant but also more correct.

</content>
</entry>
<entry>
<id>7269c5355d257dd2ad2c53f15dc9c1cf6796aea5</id>
<published>2022-03-23T20:04:04Z</published>
<updated>2022-03-25T21:49:07Z</updated>
<title>significantly improve performance on large strings</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/7269c5355d257dd2ad2c53f15dc9c1cf6796aea5.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 7269c5355d257dd2ad2c53f15dc9c1cf6796aea5
parent 6be057f060543bb0f3ed9423904263617cdffffe
Author: NRK &lt;[email protected]&gt;
Date:   Thu, 24 Mar 2022 02:04:04 +0600

significantly improve performance on large strings

this replaces inefficient pattern of `MIN(TEXTW(..), n)` with
drw_fontset_getwidth_clamp() instead, which is far more efficient when
we only want up to a certain width.

dumping a decently sized (unicode) emoji file into dmenu, I see the
startup time drop significantly with this patch.

before -&gt; after
360ms  -&gt; 160ms

this should also noticeably improve input latency (responsiveness) given
that calcoffsets() and drawmenu() are pretty hot functions.

</content>
</entry>
<entry>
<id>6be057f060543bb0f3ed9423904263617cdffffe</id>
<published>2022-03-23T20:00:00Z</published>
<updated>2022-03-25T21:49:07Z</updated>
<title>introduce drw_fontset_getwidth_clamp()</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/6be057f060543bb0f3ed9423904263617cdffffe.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 6be057f060543bb0f3ed9423904263617cdffffe
parent 41fdabbf7c517f8d524b70cbd78238cc319ccef3
Author: NRK &lt;[email protected]&gt;
Date:   Thu, 24 Mar 2022 02:00:00 +0600

introduce drw_fontset_getwidth_clamp()

getting the width of a string is an O(n) operation, and in many cases
users only care about getting the width upto a certain number.

instead of calling drw_fontset_getwidth() and *then* clamping the
result, this patch introduces drw_fontset_getwidth_clamp() function,
similar to strnlen(), which will stop once we reach n.

the `invert` parameter was overloaded internally to preserve the API,
however library users should be calling drw_fontset_getwidth_clamp() and
not depend upon internal behavior of drw_text().

</content>
</entry>
<entry>
<id>41fdabbf7c517f8d524b70cbd78238cc319ccef3</id>
<published>2022-03-23T18:37:55Z</published>
<updated>2022-03-25T21:49:07Z</updated>
<title>drw_text: improve both performance and correctness</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/41fdabbf7c517f8d524b70cbd78238cc319ccef3.gph" />
<author>
<name>NRK</name>
<email>[email protected]</email>
</author>
<content>commit 41fdabbf7c517f8d524b70cbd78238cc319ccef3
parent 3a505cebe8adab204e5619357e0bfe3f9f3a92ff
Author: NRK &lt;[email protected]&gt;
Date:   Thu, 24 Mar 2022 00:37:55 +0600

drw_text: improve both performance and correctness

this patch makes some non-trivial changes, which significantly improves
the performance of drawing large strings as well as fixes any issues
regarding the printing of the ellipsis when string gets truncated.

* performance:

before there were two O(n) loops, one which finds how long we can go
without changing font, and the second loop would (incorrectly) truncate
the string if it&#39;s too big.

this patch merges the overflow calculation into the first loop and exits
out when overflow is detected. when dumping lots of emojies into dmenu,
i see some noticeable startup time improvement:

before -&gt; after
460ms  -&gt; 360ms

input latency when scrolling up/down is also noticeably better and can
be tested with the following:

       for _ in $(seq 20); do
               cat /dev/urandom | base64 | tr -d &#39;\n&#39; | head -c 1000000
       echo
       done | ./dmenu -l 10

* correctness:

the previous version would incorrectly assumed single byte chars and
would overwrite them with &#39;.&#39; , this caused a whole bunch of obvious
problems, including the ellipsis not getting rendered if then font
changed.

in addition to exiting out when we detect overflow, this patch also
keeps track of the last x-position where the ellipsis would fit. if we
detect overflow, we simply make a recursing call to drw_text() at the
ellipsis_x position and overwrite what was there.

so now the ellipsis will always be printed properly, regardless of
weather the font changes or if the string is single byte char or not.

the idea of rendering the ellipsis on top incase of overflow was
from Bakkeby &lt;[email protected]&gt;, thanks! however the original patch had
some issues incorrectly truncating the prompt (-p flag) and cutting off
emojies. those have been fixed in here.

</content>
</entry>
<entry>
<id>3a505cebe8adab204e5619357e0bfe3f9f3a92ff</id>
<published>2022-03-01T21:45:39Z</published>
<updated>2022-03-01T21:45:39Z</updated>
<title>remove false-positive warning for int comparison as bool</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/3a505cebe8adab204e5619357e0bfe3f9f3a92ff.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 3a505cebe8adab204e5619357e0bfe3f9f3a92ff
parent 308fe78b83836371720c7d7eb2c3eac409f3cc16
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue,  1 Mar 2022 22:45:39 +0100

remove false-positive warning for int comparison as bool

Reported by Prathu Baronia &lt;[email protected]&gt;, patch slightly changed.

Thanks!

</content>
</entry>
<entry>
<id>308fe78b83836371720c7d7eb2c3eac409f3cc16</id>
<published>2022-02-11T11:26:35Z</published>
<updated>2022-02-11T11:26:35Z</updated>
<title>bump version to 5.1</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/308fe78b83836371720c7d7eb2c3eac409f3cc16.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 308fe78b83836371720c7d7eb2c3eac409f3cc16
parent c4b656e0da36070a834b03ceb76269ffee8ac952
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri, 11 Feb 2022 12:26:35 +0100

bump version to 5.1

</content>
</entry>
<entry>
<id>c4b656e0da36070a834b03ceb76269ffee8ac952</id>
<published>2022-02-08T20:45:28Z</published>
<updated>2022-02-08T20:45:28Z</updated>
<title>code-style: rm newline (oops)</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/c4b656e0da36070a834b03ceb76269ffee8ac952.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit c4b656e0da36070a834b03ceb76269ffee8ac952
parent 3e39c526d28582b0b5606d3e3bb36ee3d271e616
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue,  8 Feb 2022 21:45:28 +0100

code-style: rm newline (oops)

</content>
</entry>
<entry>
<id>3e39c526d28582b0b5606d3e3bb36ee3d271e616</id>
<published>2022-02-08T18:32:25Z</published>
<updated>2022-02-08T18:38:23Z</updated>
<title>revert using strcasestr and use a more optimized portable version</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/3e39c526d28582b0b5606d3e3bb36ee3d271e616.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 3e39c526d28582b0b5606d3e3bb36ee3d271e616
parent a9a3836861bd23387b5a51d6f6ac23377e98e26f
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue,  8 Feb 2022 19:32:25 +0100

revert using strcasestr and use a more optimized portable version

.. compared to the old cistrstr().

Thanks for the feedback!

</content>
</entry>
<entry>
<id>a9a3836861bd23387b5a51d6f6ac23377e98e26f</id>
<published>2022-02-07T09:36:13Z</published>
<updated>2022-02-07T09:36:13Z</updated>
<title>follow-up fix: add -D_GNU_SOURCE for strcasestr for some systems</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/a9a3836861bd23387b5a51d6f6ac23377e98e26f.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit a9a3836861bd23387b5a51d6f6ac23377e98e26f
parent eb96af27f4059c93d7e000e910b71d74829a239b
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Mon,  7 Feb 2022 10:36:13 +0100

follow-up fix: add -D_GNU_SOURCE for strcasestr for some systems

</content>
</entry>
<entry>
<id>eb96af27f4059c93d7e000e910b71d74829a239b</id>
<published>2022-02-06T23:21:12Z</published>
<updated>2022-02-06T23:21:12Z</updated>
<title>improve performance of case-insensitive matching</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/eb96af27f4059c93d7e000e910b71d74829a239b.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit eb96af27f4059c93d7e000e910b71d74829a239b
parent d78ff08d99780a73447d5a95bf1e358e8c23aa3c
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Mon,  7 Feb 2022 00:21:12 +0100

improve performance of case-insensitive matching

</content>
</entry>
<entry>
<id>d78ff08d99780a73447d5a95bf1e358e8c23aa3c</id>
<published>2021-08-20T21:05:53Z</published>
<updated>2021-08-20T21:05:53Z</updated>
<title>Revert &quot;Improve speed of drw_text when provided with large strings&quot;</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/d78ff08d99780a73447d5a95bf1e358e8c23aa3c.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit d78ff08d99780a73447d5a95bf1e358e8c23aa3c
parent cd2133a5f66b42f992a9a1b92bbbce11dc26b941
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri, 20 Aug 2021 23:05:53 +0200

Revert &quot;Improve speed of drw_text when provided with large strings&quot;

This reverts commit c585e8e498ec6f9c423ab8ea07cf853ee5b05fbe.

It causes issues with truncation of characters when the text does not fit and
so on.  The patch should be reworked and properly tested.

</content>
</entry>
<entry>
<id>cd2133a5f66b42f992a9a1b92bbbce11dc26b941</id>
<published>2021-08-09T16:39:25Z</published>
<updated>2021-08-09T16:39:25Z</updated>
<title>add support for more keypad keys</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/cd2133a5f66b42f992a9a1b92bbbce11dc26b941.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit cd2133a5f66b42f992a9a1b92bbbce11dc26b941
parent c585e8e498ec6f9c423ab8ea07cf853ee5b05fbe
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Mon,  9 Aug 2021 18:39:25 +0200

add support for more keypad keys

The keypad Enter key was already supported. On some keyboard layouts like my
laptop the page-up and page-down key is more comfortable to use.
This adds a few lines but no complexity.

</content>
</entry>
<entry>
<id>c585e8e498ec6f9c423ab8ea07cf853ee5b05fbe</id>
<published>2021-08-08T01:34:35Z</published>
<updated>2021-08-09T16:20:51Z</updated>
<title>Improve speed of drw_text when provided with large strings</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/c585e8e498ec6f9c423ab8ea07cf853ee5b05fbe.gph" />
<author>
<name>Miles Alan</name>
<email>[email protected]</email>
</author>
<content>commit c585e8e498ec6f9c423ab8ea07cf853ee5b05fbe
parent 523aa08f51a88c59ad4b1f600f8ce3d122e9e289
Author: Miles Alan &lt;[email protected]&gt;
Date:   Sat,  7 Aug 2021 21:34:35 -0400

Improve speed of drw_text when provided with large strings

Calculates len &amp; ew in drw_font_getexts loop by incrementing instead of
decrementing; as such avoids proportional increase in time spent in loop
based on provided strings size.

</content>
</entry>
<entry>
<id>523aa08f51a88c59ad4b1f600f8ce3d122e9e289</id>
<published>2021-07-25T01:55:25Z</published>
<updated>2021-07-25T08:55:45Z</updated>
<title>remove always true condition in if statement</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/523aa08f51a88c59ad4b1f600f8ce3d122e9e289.gph" />
<author>
<name>Guilherme Janczak</name>
<email>[email protected]</email>
</author>
<content>commit 523aa08f51a88c59ad4b1f600f8ce3d122e9e289
parent 1a13d0465d1a6f4f74bc5b07b04c9bd542f20ba6
Author: Guilherme Janczak &lt;[email protected]&gt;
Date:   Sun, 25 Jul 2021 01:55:25 +0000

remove always true condition in if statement

</content>
</entry>
<entry>
<id>1a13d0465d1a6f4f74bc5b07b04c9bd542f20ba6</id>
<published>2020-09-02T16:30:56Z</published>
<updated>2020-09-02T16:31:23Z</updated>
<title>bump version to 5.0</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/1a13d0465d1a6f4f74bc5b07b04c9bd542f20ba6.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 1a13d0465d1a6f4f74bc5b07b04c9bd542f20ba6
parent 9b38fda6feda68f95754d5b8932b1a69471df960
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Wed,  2 Sep 2020 18:30:56 +0200

bump version to 5.0

.. and bump LICENSE year.

</content>
</entry>
<entry>
<id>9b38fda6feda68f95754d5b8932b1a69471df960</id>
<published>2020-06-11T16:45:33Z</published>
<updated>2020-06-11T16:45:33Z</updated>
<title>Fix memory leaks in drw</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/9b38fda6feda68f95754d5b8932b1a69471df960.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 9b38fda6feda68f95754d5b8932b1a69471df960
parent db6093f6ec1bb884f7540f2512935b5254750b30
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Thu, 11 Jun 2020 18:45:33 +0200

Fix memory leaks in drw

Synced from dwm.
Patch by Alex Flierl &lt;[email protected]&gt;, thanks.

</content>
</entry>
<entry>
<id>db6093f6ec1bb884f7540f2512935b5254750b30</id>
<published>2019-03-03T12:08:54Z</published>
<updated>2019-03-03T12:08:54Z</updated>
<title>revert IME support</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/db6093f6ec1bb884f7540f2512935b5254750b30.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit db6093f6ec1bb884f7540f2512935b5254750b30
parent a9b1de384ae1ad30805e893af5cd6ea9b87c89da
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sun,  3 Mar 2019 13:08:54 +0100

revert IME support

dmenu will not handle IME support (st will, atleast for now).

revert parts of commit 377bd37e212b1ec4c03a481245603c6560d0be22
this commit also broke input focus.

</content>
</entry>
<entry>
<id>a9b1de384ae1ad30805e893af5cd6ea9b87c89da</id>
<published>2019-02-12T21:58:35Z</published>
<updated>2019-02-12T21:58:35Z</updated>
<title>improve xopenim error message</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/a9b1de384ae1ad30805e893af5cd6ea9b87c89da.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit a9b1de384ae1ad30805e893af5cd6ea9b87c89da
parent 43b0c2c3dd3e694cf674097d493ef6630efc5403
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue, 12 Feb 2019 22:58:35 +0100

improve xopenim error message

die() already prints a newline.

</content>
</entry>
<entry>
<id>43b0c2c3dd3e694cf674097d493ef6630efc5403</id>
<published>2019-02-12T21:13:58Z</published>
<updated>2019-02-12T21:13:58Z</updated>
<title>make dmenu_path script executable</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/43b0c2c3dd3e694cf674097d493ef6630efc5403.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 43b0c2c3dd3e694cf674097d493ef6630efc5403
parent f5036b90efd9423d805923a0bc73cd54e30e72ab
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue, 12 Feb 2019 22:13:58 +0100

make dmenu_path script executable

(as dmenu_run is)

</content>
</entry>
<entry>
<id>f5036b90efd9423d805923a0bc73cd54e30e72ab</id>
<published>2019-02-12T18:10:43Z</published>
<updated>2019-02-12T18:10:43Z</updated>
<title>fix crash when XOpenIM returns NULL</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/f5036b90efd9423d805923a0bc73cd54e30e72ab.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit f5036b90efd9423d805923a0bc73cd54e30e72ab
parent 153aaf88bf9bf5c6c4b118bd871f8cf1eafdcab5
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue, 12 Feb 2019 19:10:43 +0100

fix crash when XOpenIM returns NULL

for example when IME variables are set, but the program is not started (yet).

</content>
</entry>
<entry>
<id>153aaf88bf9bf5c6c4b118bd871f8cf1eafdcab5</id>
<published>2019-02-03T23:29:26Z</published>
<updated>2019-02-04T18:49:34Z</updated>
<title>Close when the embedding window is destroyed</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/153aaf88bf9bf5c6c4b118bd871f8cf1eafdcab5.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit 153aaf88bf9bf5c6c4b118bd871f8cf1eafdcab5
parent 65be875f5adf31e9c4762ac8a8d74b1dfdd78584
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Mon,  4 Feb 2019 00:29:26 +0100

Close when the embedding window is destroyed

</content>
</entry>
<entry>
<id>65be875f5adf31e9c4762ac8a8d74b1dfdd78584</id>
<published>2019-02-02T12:54:15Z</published>
<updated>2019-02-02T12:54:15Z</updated>
<title>Prepared 4.9 release.</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/65be875f5adf31e9c4762ac8a8d74b1dfdd78584.gph" />
<author>
<name>Anselm R Garbe</name>
<email>[email protected]</email>
</author>
<content>commit 65be875f5adf31e9c4762ac8a8d74b1dfdd78584
parent 7d19b2055d98e5c0249efe582c852b8b8b30cd41
Author: Anselm R Garbe &lt;[email protected]&gt;
Date:   Sat,  2 Feb 2019 04:54:15 -0800

Prepared 4.9 release.

</content>
</entry>
<entry>
<id>7d19b2055d98e5c0249efe582c852b8b8b30cd41</id>
<published>2019-01-27T14:28:02Z</published>
<updated>2019-01-27T14:28:02Z</updated>
<title>dmenu.1: document improved fastgrab behaviour from previous patch</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/7d19b2055d98e5c0249efe582c852b8b8b30cd41.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 7d19b2055d98e5c0249efe582c852b8b8b30cd41
parent 11a65377da8fc198d15cf041dbbbb9718e5798cd
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sun, 27 Jan 2019 15:28:02 +0100

dmenu.1: document improved fastgrab behaviour from previous patch

</content>
</entry>
<entry>
<id>11a65377da8fc198d15cf041dbbbb9718e5798cd</id>
<published>2019-01-26T14:49:15Z</published>
<updated>2019-01-27T14:26:04Z</updated>
<title>Use slow path if stdin is a tty</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/11a65377da8fc198d15cf041dbbbb9718e5798cd.gph" />
<author>
<name>dok</name>
<email>[email protected]</email>
</author>
<content>commit 11a65377da8fc198d15cf041dbbbb9718e5798cd
parent bbc464dc80225b8cf9390f14fac6c682f63940d2
Author: dok &lt;[email protected]&gt;
Date:   Sat, 26 Jan 2019 15:49:15 +0100

Use slow path if stdin is a tty

If stdin is a tty and dmenu is ran with the fast option then it&#39;s
impossible to close stdin because the keyboard is already grabbed.

</content>
</entry>
<entry>
<id>bbc464dc80225b8cf9390f14fac6c682f63940d2</id>
<published>2018-07-21T10:47:43Z</published>
<updated>2018-07-21T10:49:00Z</updated>
<title>dmenu_path: always use the cachedir</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/bbc464dc80225b8cf9390f14fac6c682f63940d2.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit bbc464dc80225b8cf9390f14fac6c682f63940d2
parent a314412f4b80af5100901344856a341f8ea4cc7a
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Sat, 21 Jul 2018 12:47:43 +0200

dmenu_path: always use the cachedir

</content>
</entry>
<entry>
<id>a314412f4b80af5100901344856a341f8ea4cc7a</id>
<published>2018-06-02T15:09:01Z</published>
<updated>2018-06-02T15:09:01Z</updated>
<title>Makefile: just show the compiler output</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/a314412f4b80af5100901344856a341f8ea4cc7a.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit a314412f4b80af5100901344856a341f8ea4cc7a
parent a9eae39e934d8dab7f1772570efb5f25825bfe01
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sat,  2 Jun 2018 17:09:01 +0200

Makefile: just show the compiler output

Don&#39;t be fancy and just show the actual output so debugging is simpler.

</content>
</entry>
<entry>
<id>a9eae39e934d8dab7f1772570efb5f25825bfe01</id>
<published>2018-06-02T15:01:24Z</published>
<updated>2018-06-02T15:01:24Z</updated>
<title>Do not strip at link stage</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/a9eae39e934d8dab7f1772570efb5f25825bfe01.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit a9eae39e934d8dab7f1772570efb5f25825bfe01
parent 851b73d178c8d7665c6d8a0bc34dbd4f9d1aa77b
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sat,  2 Jun 2018 17:01:24 +0200

Do not strip at link stage

Building with debug symbols is worthless unless LDFLAGS are manually adjusted
as well.

</content>
</entry>
<entry>
<id>851b73d178c8d7665c6d8a0bc34dbd4f9d1aa77b</id>
<published>2018-05-25T11:07:17Z</published>
<updated>2018-05-25T11:07:17Z</updated>
<title>code-style for pledge: check the return code -1, not &lt; 0</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/851b73d178c8d7665c6d8a0bc34dbd4f9d1aa77b.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 851b73d178c8d7665c6d8a0bc34dbd4f9d1aa77b
parent 05c138f5b8f19070a190b97728c83b454855f52b
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri, 25 May 2018 13:07:17 +0200

code-style for pledge: check the return code -1, not &lt; 0

this is the proper idiom

</content>
</entry>
<entry>
<id>05c138f5b8f19070a190b97728c83b454855f52b</id>
<published>2018-05-25T11:03:25Z</published>
<updated>2018-05-25T11:03:25Z</updated>
<title>code-style for pledge(2)</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/05c138f5b8f19070a190b97728c83b454855f52b.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 05c138f5b8f19070a190b97728c83b454855f52b
parent cd132c8d5b17ac2f4a3e611836d4cde4995d7a0c
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri, 25 May 2018 13:03:25 +0200

code-style for pledge(2)

feedback from Klemens, thanks

</content>
</entry>
<entry>
<id>cd132c8d5b17ac2f4a3e611836d4cde4995d7a0c</id>
<published>2018-05-25T10:04:22Z</published>
<updated>2018-05-25T10:04:22Z</updated>
<title>Pledge on OpenBSD</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/cd132c8d5b17ac2f4a3e611836d4cde4995d7a0c.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit cd132c8d5b17ac2f4a3e611836d4cde4995d7a0c
parent e75494b730ea6883e68072a106a09a301cfaf845
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri, 25 May 2018 12:04:22 +0200

Pledge on OpenBSD

</content>
</entry>
<entry>
<id>e75494b730ea6883e68072a106a09a301cfaf845</id>
<published>2018-05-09T19:27:29Z</published>
<updated>2018-05-12T17:12:25Z</updated>
<title>Use bold for keyboard shortcuts in dmenu.1</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/e75494b730ea6883e68072a106a09a301cfaf845.gph" />
<author>
<name>David Demelier</name>
<email>[email protected]</email>
</author>
<content>commit e75494b730ea6883e68072a106a09a301cfaf845
parent 0f76dd2fb89748eb5460adbc87c4e98bcce09763
Author: David Demelier &lt;[email protected]&gt;
Date:   Wed,  9 May 2018 21:27:29 +0200

Use bold for keyboard shortcuts in dmenu.1

Like dwm, use the same syntax for all keyboard shortcuts for
consistency.

</content>
</entry>
<entry>
<id>0f76dd2fb89748eb5460adbc87c4e98bcce09763</id>
<published>2018-04-22T12:18:34Z</published>
<updated>2018-04-22T12:19:20Z</updated>
<title>Fix cursor drawn position with wide glyphs</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/0f76dd2fb89748eb5460adbc87c4e98bcce09763.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit 0f76dd2fb89748eb5460adbc87c4e98bcce09763
parent 0b5748021877b2f214474b034d8bf0122ee88ed2
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Sun, 22 Apr 2018 14:18:34 +0200

Fix cursor drawn position with wide glyphs

</content>
</entry>
<entry>
<id>0b5748021877b2f214474b034d8bf0122ee88ed2</id>
<published>2018-03-22T10:18:56Z</published>
<updated>2018-04-22T12:09:05Z</updated>
<title>Makefile: bikesheddingly replace ${} with $()</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/0b5748021877b2f214474b034d8bf0122ee88ed2.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit 0b5748021877b2f214474b034d8bf0122ee88ed2
parent 377bd37e212b1ec4c03a481245603c6560d0be22
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Thu, 22 Mar 2018 11:18:56 +0100

Makefile: bikesheddingly replace ${} with $()

</content>
</entry>
<entry>
<id>377bd37e212b1ec4c03a481245603c6560d0be22</id>
<published>2018-03-19T14:42:28Z</published>
<updated>2018-04-22T12:09:05Z</updated>
<title>Handle IME input</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/377bd37e212b1ec4c03a481245603c6560d0be22.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit 377bd37e212b1ec4c03a481245603c6560d0be22
parent b6d2cc9aea979cb3557db39dbe65a2870d13e597
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Mon, 19 Mar 2018 15:42:28 +0100

Handle IME input

Thanks to nzl &lt;[email protected]&gt; for the patch!

</content>
</entry>
<entry>
<id>b6d2cc9aea979cb3557db39dbe65a2870d13e597</id>
<published>2018-03-16T15:51:22Z</published>
<updated>2018-04-22T12:09:05Z</updated>
<title>Fix handling of input strings</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/b6d2cc9aea979cb3557db39dbe65a2870d13e597.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit b6d2cc9aea979cb3557db39dbe65a2870d13e597
parent 2f398981feb562285b0a96cd315bf2b3244c7309
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri, 16 Mar 2018 16:51:22 +0100

Fix handling of input strings

</content>
</entry>
<entry>
<id>2f398981feb562285b0a96cd315bf2b3244c7309</id>
<published>2018-03-15T09:16:10Z</published>
<updated>2018-03-15T17:29:32Z</updated>
<title>Update LICENSE</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/2f398981feb562285b0a96cd315bf2b3244c7309.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit 2f398981feb562285b0a96cd315bf2b3244c7309
parent 23051d78dd80468042e2a5095533ec68bfb43a51
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Thu, 15 Mar 2018 10:16:10 +0100

Update LICENSE

Only &quot;meaningful&quot; commits and contributors who made changes over the
years have been added.

</content>
</entry>
<entry>
<id>23051d78dd80468042e2a5095533ec68bfb43a51</id>
<published>2018-03-14T18:48:05Z</published>
<updated>2018-03-14T18:48:05Z</updated>
<title>bump version to 4.8</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/23051d78dd80468042e2a5095533ec68bfb43a51.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 23051d78dd80468042e2a5095533ec68bfb43a51
parent e2a280541eab62717d6a9a72d047c832e5cb1edc
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Wed, 14 Mar 2018 19:48:05 +0100

bump version to 4.8

</content>
</entry>
<entry>
<id>e2a280541eab62717d6a9a72d047c832e5cb1edc</id>
<published>2018-03-13T16:15:09Z</published>
<updated>2018-03-13T19:10:46Z</updated>
<title>add key bindings for moving to the word start or end</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/e2a280541eab62717d6a9a72d047c832e5cb1edc.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit e2a280541eab62717d6a9a72d047c832e5cb1edc
parent 889512811d7ae410eb4ab60be3568278b3e23f2e
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Tue, 13 Mar 2018 17:15:09 +0100

add key bindings for moving to the word start or end

Mod1+b/^Left and Mod1+f/^Right

</content>
</entry>
<entry>
<id>889512811d7ae410eb4ab60be3568278b3e23f2e</id>
<published>2018-01-04T22:45:49Z</published>
<updated>2018-01-04T22:45:49Z</updated>
<title>Fix regression in 84a1bc5</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/889512811d7ae410eb4ab60be3568278b3e23f2e.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 889512811d7ae410eb4ab60be3568278b3e23f2e
parent 84a1bc5d0d6b54eb23268e8f02a787be9ccbd919
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Thu,  4 Jan 2018 23:45:49 +0100

Fix regression in 84a1bc5

Reported by Jochen Sprickerhof, thanks!

Applied patch with minor change (only initialize `i` for XINERAMA).

</content>
</entry>
<entry>
<id>84a1bc5d0d6b54eb23268e8f02a787be9ccbd919</id>
<published>2018-01-04T12:27:37Z</published>
<updated>2018-01-04T17:14:41Z</updated>
<title>Instantiate j var outside #ifdef XINEMARA directive because it is used in loop outside directive</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/84a1bc5d0d6b54eb23268e8f02a787be9ccbd919.gph" />
<author>
<name>Vincent Carluer</name>
<email>[email protected]</email>
</author>
<content>commit 84a1bc5d0d6b54eb23268e8f02a787be9ccbd919
parent f0a5b75d6a0d2a62da45e9f65d92ea4a6a2d5831
Author: Vincent Carluer &lt;[email protected]&gt;
Date:   Thu,  4 Jan 2018 12:27:37 +0000

Instantiate j var outside #ifdef XINEMARA directive because it is used in loop outside directive

</content>
</entry>
<entry>
<id>f0a5b75d6a0d2a62da45e9f65d92ea4a6a2d5831</id>
<published>2017-11-03T20:10:38Z</published>
<updated>2017-11-03T20:10:38Z</updated>
<title>drw: drw_scm_create: use Clr type</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/f0a5b75d6a0d2a62da45e9f65d92ea4a6a2d5831.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit f0a5b75d6a0d2a62da45e9f65d92ea4a6a2d5831
parent 1cabeda5505dcc35d4d2ca2a09151a7c449fb401
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri,  3 Nov 2017 21:10:38 +0100

drw: drw_scm_create: use Clr type

in this context XftColor is a too low-level type.

</content>
</entry>
<entry>
<id>1cabeda5505dcc35d4d2ca2a09151a7c449fb401</id>
<published>2017-11-03T14:31:37Z</published>
<updated>2017-11-03T20:07:02Z</updated>
<title>fix a possible free of a uninitialize variable in paste()</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/1cabeda5505dcc35d4d2ca2a09151a7c449fb401.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 1cabeda5505dcc35d4d2ca2a09151a7c449fb401
parent 41379f7c39e6aa0a17d7807b22b49ea148f5b0fa
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri,  3 Nov 2017 15:31:37 +0100

fix a possible free of a uninitialize variable in paste()

</content>
</entry>
<entry>
<id>41379f7c39e6aa0a17d7807b22b49ea148f5b0fa</id>
<published>2017-11-03T20:05:29Z</published>
<updated>2017-11-03T20:05:29Z</updated>
<title>init colors using SchemeLast</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/41379f7c39e6aa0a17d7807b22b49ea148f5b0fa.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 41379f7c39e6aa0a17d7807b22b49ea148f5b0fa
parent 64ab2801fbbbcc028c359080ae4bd546fc871f67
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri,  3 Nov 2017 21:05:29 +0100

init colors using SchemeLast

this makes it slightly easier to add colors to schemes.

</content>
</entry>
<entry>
<id>64ab2801fbbbcc028c359080ae4bd546fc871f67</id>
<published>2017-11-03T16:49:10Z</published>
<updated>2017-11-03T19:41:03Z</updated>
<title>Set class name on menu window</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/64ab2801fbbbcc028c359080ae4bd546fc871f67.gph" />
<author>
<name>Omar Sandoval</name>
<email>[email protected]</email>
</author>
<content>commit 64ab2801fbbbcc028c359080ae4bd546fc871f67
parent f428f3e01a4ced5b1df07ddf913bb022692f8035
Author: Omar Sandoval &lt;[email protected]&gt;
Date:   Fri,  3 Nov 2017 09:49:10 -0700

Set class name on menu window

WM_CLASS is a standard ICCCM property which is used to identify windows.
Window managers and compositors use it to allow per-application
configurable behavior.

</content>
</entry>
<entry>
<id>f428f3e01a4ced5b1df07ddf913bb022692f8035</id>
<published>2017-05-02T16:32:04Z</published>
<updated>2017-05-02T16:32:04Z</updated>
<title>release 4.7</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/f428f3e01a4ced5b1df07ddf913bb022692f8035.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit f428f3e01a4ced5b1df07ddf913bb022692f8035
parent 5cd66e2c6ca6a82e59927d495498fa6e478594d6
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue,  2 May 2017 18:32:04 +0200

release 4.7

</content>
</entry>
<entry>
<id>5cd66e2c6ca6a82e59927d495498fa6e478594d6</id>
<published>2016-12-07T14:45:01Z</published>
<updated>2016-12-11T11:33:16Z</updated>
<title>Revert &quot;fix input text matching&quot;</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/5cd66e2c6ca6a82e59927d495498fa6e478594d6.gph" />
<author>
<name>Andrew Gregory</name>
<email>[email protected]</email>
</author>
<content>commit 5cd66e2c6ca6a82e59927d495498fa6e478594d6
parent e90b88e12a88d6214c00d5ee58ceb69446aa5ac4
Author: Andrew Gregory &lt;[email protected]&gt;
Date:   Wed,  7 Dec 2016 09:45:01 -0500

Revert &quot;fix input text matching&quot;

This reverts commit 09d0a36e0370f7ca9bdb171bf93c5ac3131c5a92.

Using strncmp with the length of the user input turns it into a prefix
match rather than an exact match as it&#39;s supposed to be.

</content>
</entry>
<entry>
<id>e90b88e12a88d6214c00d5ee58ceb69446aa5ac4</id>
<published>2016-11-25T12:38:09Z</published>
<updated>2016-11-25T13:21:40Z</updated>
<title>Xinerama: correct variable declarations in preprocessor conditional</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/e90b88e12a88d6214c00d5ee58ceb69446aa5ac4.gph" />
<author>
<name>Thomas Gardner</name>
<email>[email protected]</email>
</author>
<content>commit e90b88e12a88d6214c00d5ee58ceb69446aa5ac4
parent a280bdad1f16943a70eaff086852d3b11043b060
Author: Thomas Gardner &lt;[email protected]&gt;
Date:   Fri, 25 Nov 2016 22:38:09 +1000

Xinerama: correct variable declarations in preprocessor conditional

</content>
</entry>
<entry>
<id>a280bdad1f16943a70eaff086852d3b11043b060</id>
<published>2016-11-05T10:36:42Z</published>
<updated>2016-11-05T10:36:42Z</updated>
<title>die() on calloc failure</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/a280bdad1f16943a70eaff086852d3b11043b060.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit a280bdad1f16943a70eaff086852d3b11043b060
parent a9a5c6cc2d7d55ed7e556a4fe9d75307c6df2e84
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sat,  5 Nov 2016 11:36:42 +0100

die() on calloc failure

thanks Markus Teich and David!

</content>
</entry>
<entry>
<id>a9a5c6cc2d7d55ed7e556a4fe9d75307c6df2e84</id>
<published>2016-10-08T12:08:28Z</published>
<updated>2016-10-14T13:26:35Z</updated>
<title>add embedding support with -w option</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/a9a5c6cc2d7d55ed7e556a4fe9d75307c6df2e84.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit a9a5c6cc2d7d55ed7e556a4fe9d75307c6df2e84
parent a97f550aa7b81d2add1d2a99e594c038da01fc19
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Sat,  8 Oct 2016 14:08:28 +0200

add embedding support with -w option

</content>
</entry>
<entry>
<id>a97f550aa7b81d2add1d2a99e594c038da01fc19</id>
<published>2016-10-08T12:42:53Z</published>
<updated>2016-10-14T13:26:34Z</updated>
<title>dmenu.1: group single options</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/a97f550aa7b81d2add1d2a99e594c038da01fc19.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit a97f550aa7b81d2add1d2a99e594c038da01fc19
parent ff8daf88475960f6ccc4e3ded3214147ecb21809
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Sat,  8 Oct 2016 14:42:53 +0200

dmenu.1: group single options

</content>
</entry>
<entry>
<id>ff8daf88475960f6ccc4e3ded3214147ecb21809</id>
<published>2016-10-08T12:36:04Z</published>
<updated>2016-10-14T13:26:34Z</updated>
<title>dmenu.1: fix -l option</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/ff8daf88475960f6ccc4e3ded3214147ecb21809.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit ff8daf88475960f6ccc4e3ded3214147ecb21809
parent 026827fd65c1163a92a984c4eae3882a6d69f8df
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Sat,  8 Oct 2016 14:36:04 +0200

dmenu.1: fix -l option

</content>
</entry>
<entry>
<id>026827fd65c1163a92a984c4eae3882a6d69f8df</id>
<published>2016-08-12T12:39:30Z</published>
<updated>2016-08-12T12:39:30Z</updated>
<title>die() consistency: always add newline</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/026827fd65c1163a92a984c4eae3882a6d69f8df.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 026827fd65c1163a92a984c4eae3882a6d69f8df
parent d14670b9959f8b3760b63dd40a70687a90312b8a
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Fri, 12 Aug 2016 14:39:30 +0200

die() consistency: always add newline

</content>
</entry>
<entry>
<id>d14670b9959f8b3760b63dd40a70687a90312b8a</id>
<published>2016-07-26T21:13:06Z</published>
<updated>2016-07-26T21:13:06Z</updated>
<title>fix crash if negative monitor (&lt; -1) was passed</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/d14670b9959f8b3760b63dd40a70687a90312b8a.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit d14670b9959f8b3760b63dd40a70687a90312b8a
parent aa92cd68bdff95c181cc854043598e6c6007d45e
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue, 26 Jul 2016 23:13:06 +0200

fix crash if negative monitor (&lt; -1) was passed

for example: dmenu -m &#39;-9001&#39;

</content>
</entry>
<entry>
<id>aa92cd68bdff95c181cc854043598e6c6007d45e</id>
<published>2016-07-26T21:02:34Z</published>
<updated>2016-07-26T21:02:34Z</updated>
<title>Revert &quot;Print highlighted input text only on single match&quot;</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/aa92cd68bdff95c181cc854043598e6c6007d45e.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit aa92cd68bdff95c181cc854043598e6c6007d45e
parent a4053bc4e403ae57343f43b7e363a0911bba5a3a
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue, 26 Jul 2016 23:02:34 +0200

Revert &quot;Print highlighted input text only on single match&quot;

This reverts commit a4053bc4e403ae57343f43b7e363a0911bba5a3a.

My bad, was working on the wrong branch and accidently pushed it...
*facepalm*

</content>
</entry>
<entry>
<id>a4053bc4e403ae57343f43b7e363a0911bba5a3a</id>
<published>2016-07-26T10:48:23Z</published>
<updated>2016-07-26T16:29:42Z</updated>
<title>Print highlighted input text only on single match</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/a4053bc4e403ae57343f43b7e363a0911bba5a3a.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit a4053bc4e403ae57343f43b7e363a0911bba5a3a
parent 657122f7819fd74d66706ffb607deb44884401b7
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Tue, 26 Jul 2016 12:48:23 +0200

Print highlighted input text only on single match

When the input text fully matches a single item, do not draw the item
and highlight the input text to show that it matches an item in
opposition to regular input text not matching anything.

</content>
</entry>
<entry>
<id>657122f7819fd74d66706ffb607deb44884401b7</id>
<published>2016-07-25T09:33:25Z</published>
<updated>2016-07-25T17:57:31Z</updated>
<title>Partially revert 44c7de3: fix items text width offset calculation</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/657122f7819fd74d66706ffb607deb44884401b7.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit 657122f7819fd74d66706ffb607deb44884401b7
parent 3c91eed0fb74657c3fa25bc4fd65cd0aa88464c0
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Mon, 25 Jul 2016 11:33:25 +0200

Partially revert 44c7de3: fix items text width offset calculation

Without this, we discard the item if it&#39;s longer than assigned width
instead of truncating it.

</content>
</entry>
<entry>
<id>3c91eed0fb74657c3fa25bc4fd65cd0aa88464c0</id>
<published>2016-06-28T15:56:25Z</published>
<updated>2016-06-28T15:56:25Z</updated>
<title>config.def.h: style improvement, use color Scheme enum</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/3c91eed0fb74657c3fa25bc4fd65cd0aa88464c0.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 3c91eed0fb74657c3fa25bc4fd65cd0aa88464c0
parent 76eb5783046cf89ba6b7e9f8cdab35fe86d07a82
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Tue, 28 Jun 2016 17:56:25 +0200

config.def.h: style improvement, use color Scheme enum

</content>
</entry>
<entry>
<id>76eb5783046cf89ba6b7e9f8cdab35fe86d07a82</id>
<published>2016-06-28T05:11:50Z</published>
<updated>2016-06-28T15:51:28Z</updated>
<title>fix: Do not crash on e.g. dmenu &lt; /dev/null</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/76eb5783046cf89ba6b7e9f8cdab35fe86d07a82.gph" />
<author>
<name>S. Gilles</name>
<email>[email protected]</email>
</author>
<content>commit 76eb5783046cf89ba6b7e9f8cdab35fe86d07a82
parent 44c7de3dcf49ee568863f55610f40c7a05b4dfe7
Author: S. Gilles &lt;[email protected]&gt;
Date:   Tue, 28 Jun 2016 01:11:50 -0400

fix: Do not crash on e.g. dmenu &lt; /dev/null

</content>
</entry>
<entry>
<id>44c7de3dcf49ee568863f55610f40c7a05b4dfe7</id>
<published>2016-05-21T19:51:14Z</published>
<updated>2016-06-03T17:13:15Z</updated>
<title>import new drw from libsl and minor fixes.</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/44c7de3dcf49ee568863f55610f40c7a05b4dfe7.gph" />
<author>
<name>Markus Teich</name>
<email>[email protected]</email>
</author>
<content>commit 44c7de3dcf49ee568863f55610f40c7a05b4dfe7
parent b3d9451c2ddfad7c1b10e9a868afed4d92b37e41
Author: Markus Teich &lt;[email protected]&gt;
Date:   Sat, 21 May 2016 21:51:14 +0200

import new drw from libsl and minor fixes.

- extract drawitem function (code deduplication)
- fix bug where inputw was not correctly calculated from the widest item, but
 just from the one with the longest strlen() which is not the same. It&#39;s better
 now, but does not account for fallback fonts, since it would be too slow to
 calculate all the correct item widths on startup.
- minor code style fixes (indentation, useless line breaks)

</content>
</entry>
<entry>
<id>b3d9451c2ddfad7c1b10e9a868afed4d92b37e41</id>
<published>2016-02-22T14:03:36Z</published>
<updated>2016-02-22T23:31:03Z</updated>
<title>arg.h: fixed argv checks order</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/b3d9451c2ddfad7c1b10e9a868afed4d92b37e41.gph" />
<author>
<name>Lucas Gabriel Vuotto</name>
<email>[email protected]</email>
</author>
<content>commit b3d9451c2ddfad7c1b10e9a868afed4d92b37e41
parent 3de85ca21cedf2a9f67755afc8ef031a9170b96a
Author: Lucas Gabriel Vuotto &lt;[email protected]&gt;
Date:   Mon, 22 Feb 2016 11:03:36 -0300

arg.h: fixed argv checks order

This prevents accessing to a potentially out-of-bounds memory section.

Signed-off-by: Lucas Gabriel Vuotto &lt;[email protected]&gt;

</content>
</entry>
<entry>
<id>3de85ca21cedf2a9f67755afc8ef031a9170b96a</id>
<published>2016-01-11T12:26:37Z</published>
<updated>2016-01-14T22:02:27Z</updated>
<title>Typofix</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/3de85ca21cedf2a9f67755afc8ef031a9170b96a.gph" />
<author>
<name>Klemens Nanni</name>
<email>[email protected]</email>
</author>
<content>commit 3de85ca21cedf2a9f67755afc8ef031a9170b96a
parent bf3deb6357f1c864ba6b9771a33dc31e18a68e16
Author: Klemens Nanni &lt;[email protected]&gt;
Date:   Mon, 11 Jan 2016 13:26:37 +0100

Typofix

</content>
</entry>
<entry>
<id>bf3deb6357f1c864ba6b9771a33dc31e18a68e16</id>
<published>2015-12-19T18:58:03Z</published>
<updated>2015-12-19T19:32:17Z</updated>
<title>Shut up glibc about _BSD_SOURCE being deprecated</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/bf3deb6357f1c864ba6b9771a33dc31e18a68e16.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit bf3deb6357f1c864ba6b9771a33dc31e18a68e16
parent 120e8401074254d39be916ad83bafda9ef25e6a9
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Sat, 19 Dec 2015 19:58:03 +0100

Shut up glibc about _BSD_SOURCE being deprecated

</content>
</entry>
<entry>
<id>120e8401074254d39be916ad83bafda9ef25e6a9</id>
<published>2015-12-19T08:32:55Z</published>
<updated>2015-12-19T19:32:14Z</updated>
<title>Add config option for word delimiters</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/120e8401074254d39be916ad83bafda9ef25e6a9.gph" />
<author>
<name>Quentin Rameau</name>
<email>[email protected]</email>
</author>
<content>commit 120e8401074254d39be916ad83bafda9ef25e6a9
parent 32f2564dbbbf5aeafb7190a3d35066142f34448f
Author: Quentin Rameau &lt;[email protected]&gt;
Date:   Sat, 19 Dec 2015 09:32:55 +0100

Add config option for word delimiters

Let the user configure word boundaries other than &#39; &#39;, only works with
the portable character set.

</content>
</entry>
<entry>
<id>32f2564dbbbf5aeafb7190a3d35066142f34448f</id>
<published>2015-11-08T22:37:47Z</published>
<updated>2015-11-08T22:37:47Z</updated>
<title>arg.h: remove unused ARGNUM* macros</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/32f2564dbbbf5aeafb7190a3d35066142f34448f.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit 32f2564dbbbf5aeafb7190a3d35066142f34448f
parent cc596365ac9c522beb8978cfca741d23d3bf83ae
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sun,  8 Nov 2015 23:37:47 +0100

arg.h: remove unused ARGNUM* macros

</content>
</entry>
<entry>
<id>cc596365ac9c522beb8978cfca741d23d3bf83ae</id>
<published>2015-11-08T22:03:34Z</published>
<updated>2015-11-08T22:03:34Z</updated>
<title>unboolify dmenu</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/cc596365ac9c522beb8978cfca741d23d3bf83ae.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit cc596365ac9c522beb8978cfca741d23d3bf83ae
parent c9e4e152e61b22186ba4f4ca58ae8c8d3d83e81e
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sun,  8 Nov 2015 23:03:34 +0100

unboolify dmenu

</content>
</entry>
<entry>
<id>c9e4e152e61b22186ba4f4ca58ae8c8d3d83e81e</id>
<published>2015-11-08T15:46:34Z</published>
<updated>2015-11-08T15:46:34Z</updated>
<title>Makefile: package config.def.h on make dist</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/c9e4e152e61b22186ba4f4ca58ae8c8d3d83e81e.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit c9e4e152e61b22186ba4f4ca58ae8c8d3d83e81e
parent cc99007809b18c27ef441b1a2ccb38cbbec664c7
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sun,  8 Nov 2015 16:46:34 +0100

Makefile: package config.def.h on make dist

</content>
</entry>
<entry>
<id>cc99007809b18c27ef441b1a2ccb38cbbec664c7</id>
<published>2015-11-08T15:44:41Z</published>
<updated>2015-11-08T15:44:41Z</updated>
<title>remove .hgtags file</title>
<link rel="alternate" href="gopher://suckless.org/1/git/dmenu/commit/cc99007809b18c27ef441b1a2ccb38cbbec664c7.gph" />
<author>
<name>Hiltjo Posthuma</name>
<email>[email protected]</email>
</author>
<content>commit cc99007809b18c27ef441b1a2ccb38cbbec664c7
parent 34f549adb2f586b58467345c89a0082bcc8833f2
Author: Hiltjo Posthuma &lt;[email protected]&gt;
Date:   Sun,  8 Nov 2015 16:44:41 +0100

remove .hgtags file

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