summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-05-29version 5.3.0HEADmasterSuleyman Farajli
2025-05-29tarball generation: `dmenu-farajli-(VERSION)` -> `dmenu_farajli-(VERSION)`Suleyman Farajli
2025-05-29LICENSE addedSuleyman Farajli
2025-05-29typoSuleyman Farajli
2025-01-18include version number in the generated tarballSuleyman Farajli
2025-01-18generated tar file renamed to XXX-farajli.tar.gzSuleyman Farajli
2025-01-08config.h: font changedSuleyman Farajli
2024-12-18color changed from blue to greenSuleyman Farajli
2024-09-06gitignore updatedSuleyman Farajli
2024-09-06center width increasedSuleyman Farajli
2024-09-05gitignore updatedSuleyman Farajli
2024-09-05man page updatedSuleyman Farajli
2024-09-05README updatedSuleyman Farajli
2024-09-05makefile prefix can be setSuleyman Farajli
2024-09-05Makefile config.def.h removedSuleyman Farajli
2024-09-05make dist updatedSuleyman Farajli
2024-09-05makefile updated for the new directory layoutSuleyman Farajli
2024-09-05config.mk addedSuleyman Farajli
2024-09-05directory layout changedSuleyman Farajli
2024-08-18small update on MakefileSuleyman Farajli
2024-08-05directory layout changed and Makefile updatedSuleyman Farajli
2024-08-05config.h: border_width addedSuleyman Farajli
2024-08-05border patchedSuleyman Farajli
2024-08-05keybinds changed for multiline promptSuleyman Farajli
2024-08-05gitignore updatedSuleyman Farajli
2024-08-05gitignore addedSuleyman Farajli
2024-08-05config.def.h moved to config.hSuleyman Farajli
2024-08-05Merge branch 'grid' into centerSuleyman Farajli
2024-08-05center patchedSuleyman Farajli
2024-08-05grid patchedSuleyman Farajli
2024-08-04first commitSuleyman Farajli
2024-03-19bump version to 5.3Hiltjo Posthuma
2023-09-22Makefile: remove the options targetHiltjo Posthuma
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't hide the build output, so remove this target. Prompted by a question on the mailing list about the options target.
2023-07-07drw: minor improvement to the nomatches cacheNRK
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'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.
2023-04-06fix BadMatch error when embedding on some windowsLucas de Sena
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's window. A solution is to create dmenu's window inside root and then reparent it if embeded. See this mail[1] on ports@openbsd.org mailing list for context. [1]: https://marc.info/?l=openbsd-ports&m=168072150814664&w=2
2023-03-08readstdin: reduce memory-usage by duplicating the line from getline()Hiltjo Posthuma
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.
2022-10-31readstdin: allocate amount of itemsHiltjo Posthuma
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)).
2022-10-31readstdin: add a commentHiltjo Posthuma
Maybe too obvious / redundant, but OK.
2022-10-31fix leak when getline failsNRK
according to the getline(3) documentation, the calling code needs to free the buffer even if getline fails. dmenu currently doesn't do that which results in a small leak in case of failure (e.g when piped /dev/null) $ ./dmenu < /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't strictly necessary, but IMO it makes it more apparent that `line` is getting cleared to NULL after each successful iteration.
2022-10-26dmenu: small XmbLookupString code improvementsHiltjo Posthuma
* 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.
2022-10-04bump version to 5.2Hiltjo Posthuma
2022-10-01dmenu: use die() to print the usage messageTom Schwindl
2022-09-17remove workaround for a crash with color emojis on some systems, now fixed ↵Hiltjo Posthuma
in libXft 2.3.5 https://gitlab.freedesktop.org/xorg/lib/libxft/-/blob/libXft-2.3.5/NEWS
2022-09-02fix a regression in the previous commit for tab completeHiltjo Posthuma
Reported by Santtu Lakkala <inz@inz.fi>, thanks!
2022-09-02tab-complete: figure out the size before copyingNRK
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).
2022-09-02readstdin: use getline(3)NRK
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.
2022-08-08sync code-style patch from libslHiltjo Posthuma
2022-05-01Makefile: add manual path for OpenBSDHiltjo Posthuma
2022-04-30fix incorrect comment, math is hardHiltjo Posthuma
2022-04-29inputw: improve correctness and startup performance, by NRKHiltjo Posthuma
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).