diff options
| author | stkhan <personal@slickd.xyz> | 2025-07-24 19:02:41 -0500 |
|---|---|---|
| committer | stkhan <personal@slickd.xyz> | 2025-07-24 19:02:41 -0500 |
| commit | 1d431d19b17b8bf362b323918f3c906ee858343f (patch) | |
| tree | 9d484920fde94c2ab4a8ccd524811cba6fe608a7 /wm/dmenu-5.3/patches/dmenu-instant-5.3.diff | |
| parent | c6ed3de8a62fc3a8eae866eaa7ac076b28d88ad7 (diff) | |
Clean
Diffstat (limited to 'wm/dmenu-5.3/patches/dmenu-instant-5.3.diff')
| -rw-r--r-- | wm/dmenu-5.3/patches/dmenu-instant-5.3.diff | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/wm/dmenu-5.3/patches/dmenu-instant-5.3.diff b/wm/dmenu-5.3/patches/dmenu-instant-5.3.diff new file mode 100644 index 0000000..0aefd08 --- /dev/null +++ b/wm/dmenu-5.3/patches/dmenu-instant-5.3.diff @@ -0,0 +1,88 @@ +From 26b302783a16dc2aa19451d9ba4515c8484f4a05 Mon Sep 17 00:00:00 2001 +From: Max Schillinger <maxschillinger@web.de> +Date: Tue, 27 Aug 2024 16:19:41 +0200 +Subject: [PATCH] Instant mode + +Add '-n' flag to select the only (remaining) entry automatically. +--- + config.def.h | 1 + + dmenu.1 | 5 ++++- + dmenu.c | 13 +++++++++++-- + 3 files changed, 16 insertions(+), 3 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 1edb647..7e6f1ed 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -1,6 +1,7 @@ + /* See LICENSE file for copyright and license details. */ + /* Default settings; can be overriden by command line. */ + ++static int instant = 0; /* -n option; if 1, select single entry automatically */ + static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */ + /* -fn option overrides fonts[0]; default X11 font or font set */ + static const char *fonts[] = { +diff --git a/dmenu.1 b/dmenu.1 +index 323f93c..29bdf7f 100644 +--- a/dmenu.1 ++++ b/dmenu.1 +@@ -3,7 +3,7 @@ + dmenu \- dynamic menu + .SH SYNOPSIS + .B dmenu +-.RB [ \-bfiv ] ++.RB [ \-bfinv ] + .RB [ \-l + .IR lines ] + .RB [ \-m +@@ -47,6 +47,9 @@ is faster, but will lock up X until stdin reaches end\-of\-file. + .B \-i + dmenu matches menu items case insensitively. + .TP ++.B \-n ++dmenu instantly selects if only one match. ++.TP + .BI \-l " lines" + dmenu lists items vertically, with the given number of lines. + .TP +diff --git a/dmenu.c b/dmenu.c +index 40f93e0..92d5154 100644 +--- a/dmenu.c ++++ b/dmenu.c +@@ -277,6 +277,13 @@ match(void) + matchend = substrend; + } + curr = sel = matches; ++ ++ if (instant && matches && matches==matchend && !lsubstr) { ++ puts(matches->text); ++ cleanup(); ++ exit(0); ++ } ++ + calcoffsets(); + } + +@@ -715,7 +722,7 @@ setup(void) + static void + usage(void) + { +- die("usage: dmenu [-bfiv] [-l lines] [-p prompt] [-fn font] [-m monitor]\n" ++ die("usage: dmenu [-bfinv] [-l lines] [-p prompt] [-fn font] [-m monitor]\n" + " [-nb color] [-nf color] [-sb color] [-sf color] [-w windowid]"); + } + +@@ -737,7 +744,9 @@ main(int argc, char *argv[]) + else if (!strcmp(argv[i], "-i")) { /* case-insensitive item matching */ + fstrncmp = strncasecmp; + fstrstr = cistrstr; +- } else if (i + 1 == argc) ++ } else if (!strcmp(argv[i], "-n")) /* instant select only match */ ++ instant = 1; ++ else if (i + 1 == argc) + usage(); + /* these options take one argument */ + else if (!strcmp(argv[i], "-l")) /* number of lines in vertical list */ +-- +2.46.0 + |