dmenu_term.patch: Patch that adds a command line-only option to make dmenu_run spawn the command in a new terminal window. Useful for curses based interfaces or other interactive command line applications. dwm_dmenu_term.patch: Adds a dwm keybind for the new dmenu option.
diff --git a/dmenu.1 b/dmenu.1 index bbee17d..f5ee529 100644 --- a/dmenu.1 +++ b/dmenu.1 @@ -22,6 +22,8 @@ dmenu \- dynamic menu .IR color ] .RB [ \-sf .IR color ] +.RB [ \-term +.IR command ] .RB [ \-v ] .P .BR dmenu_run " ..." diff --git a/dmenu.c b/dmenu.c index 8d9bbb6..d20697b 100644 --- a/dmenu.c +++ b/dmenu.c @@ -55,6 +55,7 @@ static Item *prev, *curr, *next, *sel; static Window win; static XIC xic; static int mon = -1; +static const char *term = NULL; #include "config.h" @@ -99,6 +100,8 @@ main(int argc, char *argv[]) { selbgcolor = argv[++i]; else if(!strcmp(argv[i], "-sf")) /* selected foreground color */ selfgcolor = argv[++i]; + else if(!strcmp(argv[i], "-term")) + term = argv[++i]; else usage(); @@ -367,6 +370,8 @@ keypress(XKeyEvent *ev) { break; case XK_Return: case XK_KP_Enter: + if(term) + printf("%s -e ", term); puts((sel && !(ev->state & ShiftMask)) ? sel->text : text); if(!(ev->state & ControlMask)) exit(EXIT_SUCCESS);
diff --git a/config.def.h b/config.def.h index 875885b..e1a9483 100644 --- a/config.def.h +++ b/config.def.h @@ -51,12 +51,15 @@ static const Layout layouts[] = { /* commands */ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ +static const char terminal[] = "st"; static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL }; -static const char *termcmd[] = { "st", NULL }; +static const char *sdmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, "-term", terminal, NULL }; +static const char *termcmd[] = { terminal, NULL }; static Key keys[] = { /* modifier key function argument */ { MODKEY, XK_p, spawn, {.v = dmenucmd } }, + { MODKEY|ShiftMask, XK_p, spawn, {.v = sdmenucmd } }, { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, { MODKEY, XK_b, togglebar, {0} }, { MODKEY, XK_j, focusstack, {.i = +1 } },