sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | 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