all repos — dmenu @ 13f787306f46a5f838987e3b546d85d1bb1c3c01

my build of dmenu

applied Martti Kühne's dmenu monitor patch
https://gist.github.com/mar77i/3349298/raw/f6581ca96627f4c71c0bd1faf531daaf2a613b95/monarg.patch becomes upstream now
Anselm R Garbe anselm@garbe.us
Fri, 02 Aug 2013 22:30:20 +0200
commit

13f787306f46a5f838987e3b546d85d1bb1c3c01

parent

597d4b43379433a5bf86d490f747c0eeda38bba8

3 files changed, 14 insertions(+), 4 deletions(-)

jump to
M LICENSELICENSE

@@ -1,7 +1,7 @@

MIT/X Consortium License +© 2006-2013 Anselm R Garbe <anselm@garbe.us> © 2010-2012 Connor Lane Smith <cls@lubutu.com> -© 2006-2012 Anselm R Garbe <anselm@garbe.us> © 2009 Gottox <gottox@s01.de> © 2009 Markus Schnalke <meillo@marmaro.de> © 2009 Evan Gates <evan.gates@gmail.com>
M dmenu.1dmenu.1

@@ -7,6 +7,8 @@ .RB [ \-b ]

.RB [ \-f ] .RB [ \-i ] .RB [ \-l +.RB [ \-m +.IR monitor ] .IR lines ] .RB [ \-p .IR prompt ]

@@ -48,6 +50,9 @@ dmenu matches menu items case insensitively.

.TP .BI \-l " lines" dmenu lists items vertically, with the given number of lines. +.TP +.BI \-m " monitor" +dmenu is displayed on the monitor supplied. .TP .BI \-p " prompt" defines the prompt to be displayed to the left of the input field.
M dmenu.cdmenu.c

@@ -54,6 +54,7 @@ static Item *matches, *matchend;

static Item *prev, *curr, *next, *sel; static Window win; static XIC xic; +static int mon = -1; #include "config.h"

@@ -84,6 +85,8 @@ usage();

/* these options take one argument */ else if(!strcmp(argv[i], "-l")) /* number of lines in vertical list */ lines = atoi(argv[++i]); + else if(!strcmp(argv[i], "-m")) + mon = atoi(argv[++i]); else if(!strcmp(argv[i], "-p")) /* adds prompt to left of input field */ prompt = argv[++i]; else if(!strcmp(argv[i], "-fn")) /* font or font set */

@@ -557,7 +560,9 @@ Window w, pw, dw, *dws;

XWindowAttributes wa; XGetInputFocus(dc->dpy, &w, &di); - if(w != root && w != PointerRoot && w != None) { + if(mon != -1 && mon < n) + i = mon; + if(!i && w != root && w != PointerRoot && w != None) { /* find top-level window containing current input focus */ do { if(XQueryTree(dc->dpy, (pw = w), &dw, &w, &dws, &du) && dws)

@@ -572,7 +577,7 @@ i = j;

} } /* no focused window is on screen, so use pointer location instead */ - if(!area && XQueryPointer(dc->dpy, root, &dw, &dw, &x, &y, &di, &di, &du)) + if(mon == -1 && !area && XQueryPointer(dc->dpy, root, &dw, &dw, &x, &y, &di, &di, &du)) for(i = 0; i < n; i++) if(INTERSECT(x, y, 1, 1, info[i])) break;

@@ -614,7 +619,7 @@ }

void usage(void) { - fputs("usage: dmenu [-b] [-f] [-i] [-l lines] [-p prompt] [-fn font]\n" + fputs("usage: dmenu [-b] [-f] [-i] [-l lines] [-p prompt] [-fn font] [-m monitor]\n" " [-nb color] [-nf color] [-sb color] [-sf color] [-v]\n", stderr); exit(EXIT_FAILURE); }