dmenu-printinputtext-20190822-bbc464d.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dmenu-printinputtext-20190822-bbc464d.diff (2502B)
---
1 From fb5db7880838c7691fb789b7f204906a1539e833 Mon Sep 17 00:00:00 2001
2 From: efe <efe@efe.kim>
3 Date: Wed, 22 Aug 2018 20:22:04 -0400
4 Subject: [PATCH] print input text patch for dmenu
5
6 ---
7 dmenu.1 | 8 ++++++--
8 dmenu.c | 10 ++++++++--
9 2 files changed, 14 insertions(+), 4 deletions(-)
10
11 diff --git a/dmenu.1 b/dmenu.1
12 index c065087..8d6f155 100644
13 --- a/dmenu.1
14 +++ b/dmenu.1
15 @@ -3,7 +3,7 @@
16 dmenu \- dynamic menu
17 .SH SYNOPSIS
18 .B dmenu
19 -.RB [ \-bfiv ]
20 +.RB [ \-bfitv ]
21 .RB [ \-l
22 .IR lines ]
23 .RB [ \-m
24 @@ -75,6 +75,9 @@ defines the selected background color.
25 .BI \-sf " color"
26 defines the selected foreground color.
27 .TP
28 +.B \-t
29 +Return key prints input text instead of selection.
30 +.TP
31 .B \-v
32 prints version information to stdout, then exits.
33 .TP
34 @@ -89,13 +92,14 @@ Copy the selected item to the input field.
35 .TP
36 .B Return
37 Confirm selection. Prints the selected item to stdout and exits, returning
38 -success.
39 +success. If \-t option is given it confirms input instead of selection.
40 .TP
41 .B Ctrl-Return
42 Confirm selection. Prints the selected item to stdout and continues.
43 .TP
44 .B Shift\-Return
45 Confirm input. Prints the input text to stdout and exits, returning success.
46 +If \-t option is given it confirms selection instead of input.
47 .TP
48 .B Escape
49 Exit without selecting an item, returning failure.
50 diff --git a/dmenu.c b/dmenu.c
51 index 5c835dd..9abb7ce 100644
52 --- a/dmenu.c
53 +++ b/dmenu.c
54 @@ -46,6 +46,7 @@ static struct item *items = NULL;
55 static struct item *matches, *matchend;
56 static struct item *prev, *curr, *next, *sel;
57 static int mon = -1, screen;
58 +static int use_text_input = 0;
59
60 static Atom clip, utf8;
61 static Display *dpy;
62 @@ -466,7 +467,10 @@ insert:
63 break;
64 case XK_Return:
65 case XK_KP_Enter:
66 - puts((sel && !(ev->state & ShiftMask)) ? sel->text : text);
67 + if (use_text_input)
68 + puts((sel && (ev->state & ShiftMask)) ? sel->text : text);
69 + else
70 + puts((sel && !(ev->state & ShiftMask)) ? sel->text : text);
71 if (!(ev->state & ControlMask)) {
72 cleanup();
73 exit(0);
74 @@ -707,7 +711,9 @@ main(int argc, char *argv[])
75 else if (!strcmp(argv[i], "-i")) { /* case-insensitive item matching */
76 fstrncmp = strncasecmp;
77 fstrstr = cistrstr;
78 - } else if (i + 1 == argc)
79 + } else if (!strcmp(argv[i], "-t")) /* favors text input over selection */
80 + use_text_input = 1;
81 + else if (i + 1 == argc)
82 usage();
83 /* these options take one argument */
84 else if (!strcmp(argv[i], "-l")) /* number of lines in vertical list */
85 --
86 2.11.0
87