summaryrefslogtreecommitdiff
path: root/dmenu.c
AgeCommit message (Collapse)Author
2024-01-13different class when centeredtsxv478
2023-02-14line height variabletsxv478
2022-09-27always show border when centeredtsxv478
2022-09-27change navigation bindingstsxv478
2022-09-2120% input widthtsxv478
2022-09-21do not calculate width when centered, always use same widthtsxv478
2022-09-21smaller input widthtsxv478
2022-09-21remove curly brackettsxv478
2022-09-21topbar optiontsxv478
2022-09-21scroll patchtsxv478
2022-09-21border patchtsxv478
2022-09-21center patchtsxv478
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-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).
2022-03-26fix UB with the function iscntrl()Hiltjo Posthuma
From commit 6818e07291f3b2913e687c8ec3d3fe4711724050 by NRK, thanks
2022-03-26Revert "avoid redraw when there's no change"Hiltjo Posthuma
This reverts commit 6818e07291f3b2913e687c8ec3d3fe4711724050. This broke keys such as ^W to delete-backward-word
2022-03-25avoid redraw when there's no changeNRK
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.
2022-03-25free all allocated items, use %zu for size_tNRK
`items` itself is not checked for NULL as calling free on NULL is defined to be a no-op.
2022-03-25inputw: improve correctness and startup performanceNRK
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 -> after 160ms -> 60ms additionally this will take fallback fonts into account compared to the previous version, so it's not only more performant but also more correct.
2022-03-25significantly improve performance on large stringsNRK
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 -> after 360ms -> 160ms this should also noticeably improve input latency (responsiveness) given that calcoffsets() and drawmenu() are pretty hot functions.
2022-03-01remove false-positive warning for int comparison as boolHiltjo Posthuma
Reported by Prathu Baronia <prathu.baronia@praton.me>, patch slightly changed. Thanks!
2022-02-08code-style: rm newline (oops)Hiltjo Posthuma
2022-02-08revert using strcasestr and use a more optimized portable versionHiltjo Posthuma
... compared to the old cistrstr(). Thanks for the feedback!
2022-02-07improve performance of case-insensitive matchingHiltjo Posthuma
2021-08-09add support for more keypad keysHiltjo Posthuma
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.
2019-03-03revert IME supportHiltjo Posthuma
dmenu will not handle IME support (st will, atleast for now). revert parts of commit 377bd37e212b1ec4c03a481245603c6560d0be22 this commit also broke input focus.
2019-02-12improve xopenim error messageHiltjo Posthuma
die() already prints a newline.
2019-02-12fix crash when XOpenIM returns NULLHiltjo Posthuma
for example when IME variables are set, but the program is not started (yet).
2019-02-04Close when the embedding window is destroyedQuentin Rameau
2019-01-27Use slow path if stdin is a ttydok
If stdin is a tty and dmenu is ran with the fast option then it's impossible to close stdin because the keyboard is already grabbed.
2018-05-25code-style for pledge: check the return code -1, not < 0Hiltjo Posthuma
this is the proper idiom
2018-05-25code-style for pledge(2)Hiltjo Posthuma
feedback from Klemens, thanks
2018-05-25Pledge on OpenBSDHiltjo Posthuma
2018-04-22Fix cursor drawn position with wide glyphsQuentin Rameau
2018-04-22Handle IME inputQuentin Rameau
Thanks to nzl <uruabi@gmail.com> for the patch!
2018-04-22Fix handling of input stringsHiltjo Posthuma
2018-03-13add key bindings for moving to the word start or endQuentin Rameau
Mod1+b/^Left and Mod1+f/^Right
2018-01-04Fix regression in 84a1bc5Hiltjo Posthuma
Reported by Jochen Sprickerhof, thanks! Applied patch with minor change (only initialize `i` for XINERAMA).
2018-01-04Instantiate j var outside #ifdef XINEMARA directive because it is used in ↵Vincent Carluer
loop outside directive
2017-11-03fix a possible free of a uninitialize variable in paste()Hiltjo Posthuma
2017-11-03init colors using SchemeLastHiltjo Posthuma
this makes it slightly easier to add colors to schemes.
2017-11-03Set class name on menu windowOmar Sandoval
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.
2016-12-11Revert "fix input text matching"Andrew Gregory
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's supposed to be.
2016-11-25Xinerama: correct variable declarations in preprocessor conditionalThomas Gardner
2016-10-14add embedding support with -w optionQuentin Rameau
2016-10-14dmenu.1: group single optionsQuentin Rameau
2016-08-12die() consistency: always add newlineHiltjo Posthuma