fast grab patch (thanks Rob)
This commit is contained in:
parent
cd3b4915c3
commit
e0e6b071c6
22
dmenu.1
22
dmenu.1
|
@ -4,6 +4,7 @@ dmenu \- dynamic menu
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B dmenu
|
.B dmenu
|
||||||
.RB [ \-b ]
|
.RB [ \-b ]
|
||||||
|
.RB [ \-f ]
|
||||||
.RB [ \-i ]
|
.RB [ \-i ]
|
||||||
.RB [ \-l
|
.RB [ \-l
|
||||||
.IR lines ]
|
.IR lines ]
|
||||||
|
@ -32,9 +33,9 @@ is a dynamic menu for X, originally designed for
|
||||||
.BR dwm (1).
|
.BR dwm (1).
|
||||||
It manages huge numbers of user-defined menu items efficiently.
|
It manages huge numbers of user-defined menu items efficiently.
|
||||||
.P
|
.P
|
||||||
dmenu reads a list of newline-separated items from standard input and creates a
|
dmenu reads a list of newline-separated items from stdin and creates a menu.
|
||||||
menu. When the user selects an item or enters any text and presses Return,
|
When the user selects an item or enters any text and presses Return, their
|
||||||
their choice is printed to standard output and dmenu terminates.
|
choice is printed to stdout and dmenu terminates.
|
||||||
.P
|
.P
|
||||||
.B dmenu_run
|
.B dmenu_run
|
||||||
is a dmenu script used by dwm which lists programs in the user's PATH and
|
is a dmenu script used by dwm which lists programs in the user's PATH and
|
||||||
|
@ -47,6 +48,10 @@ is a program used by dmenu_run to find and cache a list of executables.
|
||||||
.B \-b
|
.B \-b
|
||||||
dmenu appears at the bottom of the screen.
|
dmenu appears at the bottom of the screen.
|
||||||
.TP
|
.TP
|
||||||
|
.B \-f
|
||||||
|
dmenu grabs the keyboard before reading stdin. This is faster, but may lock up
|
||||||
|
X if stdin is from a terminal.
|
||||||
|
.TP
|
||||||
.B \-i
|
.B \-i
|
||||||
dmenu matches menu items case insensitively.
|
dmenu matches menu items case insensitively.
|
||||||
.TP
|
.TP
|
||||||
|
@ -66,7 +71,7 @@ defines the font or font set used.
|
||||||
defines the normal background color.
|
defines the normal background color.
|
||||||
.IR #RGB ,
|
.IR #RGB ,
|
||||||
.IR #RRGGBB ,
|
.IR #RRGGBB ,
|
||||||
and color names are supported.
|
and X color names are supported.
|
||||||
.TP
|
.TP
|
||||||
.BI \-nf " color"
|
.BI \-nf " color"
|
||||||
defines the normal foreground color.
|
defines the normal foreground color.
|
||||||
|
@ -78,7 +83,7 @@ defines the selected background color.
|
||||||
defines the selected foreground color.
|
defines the selected foreground color.
|
||||||
.TP
|
.TP
|
||||||
.B \-v
|
.B \-v
|
||||||
prints version information to standard output, then exits.
|
prints version information to stdout, then exits.
|
||||||
.SH USAGE
|
.SH USAGE
|
||||||
dmenu is completely controlled by the keyboard. Besides standard Unix line
|
dmenu is completely controlled by the keyboard. Besides standard Unix line
|
||||||
editing and item selection (Up/Down/Left/Right, PageUp/PageDown, Home/End), the
|
editing and item selection (Up/Down/Left/Right, PageUp/PageDown, Home/End), the
|
||||||
|
@ -88,12 +93,11 @@ following keys are recognized:
|
||||||
Copy the selected item to the input field.
|
Copy the selected item to the input field.
|
||||||
.TP
|
.TP
|
||||||
.B Return (Control\-j)
|
.B Return (Control\-j)
|
||||||
Confirm selection. Prints the selected item to standard output and exits,
|
Confirm selection. Prints the selected item to stdout and exits, returning
|
||||||
returning success.
|
success.
|
||||||
.TP
|
.TP
|
||||||
.B Shift\-Return (Control\-Shift\-j)
|
.B Shift\-Return (Control\-Shift\-j)
|
||||||
Confirm input. Prints the input text to standard output and exits, returning
|
Confirm input. Prints the input text to stdout and exits, returning success.
|
||||||
success.
|
|
||||||
.TP
|
.TP
|
||||||
.B Escape (Control\-c)
|
.B Escape (Control\-c)
|
||||||
Exit without selecting an item, returning failure.
|
Exit without selecting an item, returning failure.
|
||||||
|
|
14
dmenu.c
14
dmenu.c
|
@ -64,6 +64,7 @@ static int (*fstrncmp)(const char *, const char *, size_t) = strncmp;
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[]) {
|
main(int argc, char *argv[]) {
|
||||||
|
Bool fast = False;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
progname = "dmenu";
|
progname = "dmenu";
|
||||||
|
@ -77,6 +78,8 @@ main(int argc, char *argv[]) {
|
||||||
topbar = False;
|
topbar = False;
|
||||||
else if(!strcmp(argv[i], "-i"))
|
else if(!strcmp(argv[i], "-i"))
|
||||||
fstrncmp = strncasecmp;
|
fstrncmp = strncasecmp;
|
||||||
|
else if(!strcmp(argv[i], "-f"))
|
||||||
|
fast = True;
|
||||||
else if(i == argc-1)
|
else if(i == argc-1)
|
||||||
goto usage;
|
goto usage;
|
||||||
/* double flags */
|
/* double flags */
|
||||||
|
@ -101,13 +104,21 @@ main(int argc, char *argv[]) {
|
||||||
|
|
||||||
dc = initdc();
|
dc = initdc();
|
||||||
initfont(dc, font);
|
initfont(dc, font);
|
||||||
|
|
||||||
|
if(fast) {
|
||||||
|
setup();
|
||||||
|
readstdin();
|
||||||
|
}
|
||||||
|
else {
|
||||||
readstdin();
|
readstdin();
|
||||||
setup();
|
setup();
|
||||||
|
}
|
||||||
|
match();
|
||||||
run();
|
run();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
usage:
|
usage:
|
||||||
fputs("usage: dmenu [-b] [-i] [-l lines] [-m monitor] [-p prompt] [-fn font]\n"
|
fputs("usage: dmenu [-b] [-f] [-i] [-l lines] [-m monitor] [-p prompt] [-fn font]\n"
|
||||||
" [-nb color] [-nf color] [-sb color] [-sf color] [-v]\n", stderr);
|
" [-nb color] [-nf color] [-sb color] [-sf color] [-v]\n", stderr);
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
@ -530,5 +541,4 @@ setup(void) {
|
||||||
inputw = MIN(inputw, mw/3);
|
inputw = MIN(inputw, mw/3);
|
||||||
promptw = prompt ? textw(dc, prompt) : 0;
|
promptw = prompt ? textw(dc, prompt) : 0;
|
||||||
XMapRaised(dc->dpy, win);
|
XMapRaised(dc->dpy, win);
|
||||||
match();
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue