aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LICENSE2
-rw-r--r--dmenu.15
-rw-r--r--dmenu.c11
3 files changed, 14 insertions, 4 deletions
diff --git a/LICENSE b/LICENSE
index e2bfc83..0df62c6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,7 @@
1MIT/X Consortium License 1MIT/X Consortium License
2 2
3© 2006-2013 Anselm R Garbe <anselm@garbe.us>
3© 2010-2012 Connor Lane Smith <cls@lubutu.com> 4© 2010-2012 Connor Lane Smith <cls@lubutu.com>
4© 2006-2012 Anselm R Garbe <anselm@garbe.us>
5© 2009 Gottox <gottox@s01.de> 5© 2009 Gottox <gottox@s01.de>
6© 2009 Markus Schnalke <meillo@marmaro.de> 6© 2009 Markus Schnalke <meillo@marmaro.de>
7© 2009 Evan Gates <evan.gates@gmail.com> 7© 2009 Evan Gates <evan.gates@gmail.com>
diff --git a/dmenu.1 b/dmenu.1
index 88f77de..bbee17d 100644
--- a/dmenu.1
+++ b/dmenu.1
@@ -7,6 +7,8 @@ dmenu \- dynamic menu
7.RB [ \-f ] 7.RB [ \-f ]
8.RB [ \-i ] 8.RB [ \-i ]
9.RB [ \-l 9.RB [ \-l
10.RB [ \-m
11.IR monitor ]
10.IR lines ] 12.IR lines ]
11.RB [ \-p 13.RB [ \-p
12.IR prompt ] 14.IR prompt ]
@@ -49,6 +51,9 @@ dmenu matches menu items case insensitively.
49.BI \-l " lines" 51.BI \-l " lines"
50dmenu lists items vertically, with the given number of lines. 52dmenu lists items vertically, with the given number of lines.
51.TP 53.TP
54.BI \-m " monitor"
55dmenu is displayed on the monitor supplied.
56.TP
52.BI \-p " prompt" 57.BI \-p " prompt"
53defines the prompt to be displayed to the left of the input field. 58defines the prompt to be displayed to the left of the input field.
54.TP 59.TP
diff --git a/dmenu.c b/dmenu.c
index 5e0a19c..8d9bbb6 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -54,6 +54,7 @@ static Item *matches, *matchend;
54static Item *prev, *curr, *next, *sel; 54static Item *prev, *curr, *next, *sel;
55static Window win; 55static Window win;
56static XIC xic; 56static XIC xic;
57static int mon = -1;
57 58
58#include "config.h" 59#include "config.h"
59 60
@@ -84,6 +85,8 @@ main(int argc, char *argv[]) {
84 /* these options take one argument */ 85 /* these options take one argument */
85 else if(!strcmp(argv[i], "-l")) /* number of lines in vertical list */ 86 else if(!strcmp(argv[i], "-l")) /* number of lines in vertical list */
86 lines = atoi(argv[++i]); 87 lines = atoi(argv[++i]);
88 else if(!strcmp(argv[i], "-m"))
89 mon = atoi(argv[++i]);
87 else if(!strcmp(argv[i], "-p")) /* adds prompt to left of input field */ 90 else if(!strcmp(argv[i], "-p")) /* adds prompt to left of input field */
88 prompt = argv[++i]; 91 prompt = argv[++i];
89 else if(!strcmp(argv[i], "-fn")) /* font or font set */ 92 else if(!strcmp(argv[i], "-fn")) /* font or font set */
@@ -557,7 +560,9 @@ setup(void) {
557 XWindowAttributes wa; 560 XWindowAttributes wa;
558 561
559 XGetInputFocus(dc->dpy, &w, &di); 562 XGetInputFocus(dc->dpy, &w, &di);
560 if(w != root && w != PointerRoot && w != None) { 563 if(mon != -1 && mon < n)
564 i = mon;
565 if(!i && w != root && w != PointerRoot && w != None) {
561 /* find top-level window containing current input focus */ 566 /* find top-level window containing current input focus */
562 do { 567 do {
563 if(XQueryTree(dc->dpy, (pw = w), &dw, &w, &dws, &du) && dws) 568 if(XQueryTree(dc->dpy, (pw = w), &dw, &w, &dws, &du) && dws)
@@ -572,7 +577,7 @@ setup(void) {
572 } 577 }
573 } 578 }
574 /* no focused window is on screen, so use pointer location instead */ 579 /* no focused window is on screen, so use pointer location instead */
575 if(!area && XQueryPointer(dc->dpy, root, &dw, &dw, &x, &y, &di, &di, &du)) 580 if(mon == -1 && !area && XQueryPointer(dc->dpy, root, &dw, &dw, &x, &y, &di, &di, &du))
576 for(i = 0; i < n; i++) 581 for(i = 0; i < n; i++)
577 if(INTERSECT(x, y, 1, 1, info[i])) 582 if(INTERSECT(x, y, 1, 1, info[i]))
578 break; 583 break;
@@ -614,7 +619,7 @@ setup(void) {
614 619
615void 620void
616usage(void) { 621usage(void) {
617 fputs("usage: dmenu [-b] [-f] [-i] [-l lines] [-p prompt] [-fn font]\n" 622 fputs("usage: dmenu [-b] [-f] [-i] [-l lines] [-p prompt] [-fn font] [-m monitor]\n"
618 " [-nb color] [-nf color] [-sb color] [-sf color] [-v]\n", stderr); 623 " [-nb color] [-nf color] [-sb color] [-sf color] [-v]\n", stderr);
619 exit(EXIT_FAILURE); 624 exit(EXIT_FAILURE);
620} 625}