Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Reported by Santtu Lakkala <inz@inz.fi>, thanks!
|
|
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).
|
|
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.
|
|
|
|
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).
|
|
From commit 6818e07291f3b2913e687c8ec3d3fe4711724050 by NRK, thanks
|
|
This reverts commit 6818e07291f3b2913e687c8ec3d3fe4711724050.
This broke keys such as ^W to delete-backward-word
|
|
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.
|
|
`items` itself is not checked for NULL as calling free on NULL is defined to be
a no-op.
|
|
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.
|
|
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.
|
|
Reported by Prathu Baronia <prathu.baronia@praton.me>, patch slightly changed.
Thanks!
|
|
|
|
... compared to the old cistrstr().
Thanks for the feedback!
|
|
|
|
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.
|
|
dmenu will not handle IME support (st will, atleast for now).
revert parts of commit 377bd37e212b1ec4c03a481245603c6560d0be22
this commit also broke input focus.
|
|
die() already prints a newline.
|
|
for example when IME variables are set, but the program is not started (yet).
|
|
|
|
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.
|
|
this is the proper idiom
|
|
feedback from Klemens, thanks
|
|
|
|
|
|
Thanks to nzl <uruabi@gmail.com> for the patch!
|
|
|
|
Mod1+b/^Left and Mod1+f/^Right
|
|
Reported by Jochen Sprickerhof, thanks!
Applied patch with minor change (only initialize `i` for XINERAMA).
|
|
loop outside directive
|
|
|
|
this makes it slightly easier to add colors to schemes.
|
|
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.
|
|
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.
|
|
|
|
|
|
|
|
|
|
for example: dmenu -m '-9001'
|
|
This reverts commit a4053bc4e403ae57343f43b7e363a0911bba5a3a.
My bad, was working on the wrong branch and accidently pushed it...
*facepalm*
|
|
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.
|
|
Without this, we discard the item if it's longer than assigned width
instead of truncating it.
|
|
|