tapplied Martti Kühne's dmenu monitor patch https://gist.github.com/mar77i/3349298/raw/f6581ca96627f4c71c0bd1faf531daaf2a613b95/monarg.patch becomes upstream now - dmenu - Dmenu fork with xft fonts.
 (HTM) git clone git://r-36.net/dmenu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 13f787306f46a5f838987e3b546d85d1bb1c3c01
 (DIR) parent 597d4b43379433a5bf86d490f747c0eeda38bba8
 (HTM) Author: Anselm R Garbe <anselm@garbe.us>
       Date:   Fri,  2 Aug 2013 22:30:20 +0200
       
       applied Martti Kühne's dmenu monitor patch
       https://gist.github.com/mar77i/3349298/raw/f6581ca96627f4c71c0bd1faf531daaf2a613b95/monarg.patch becomes upstream now
       
       Diffstat:
         LICENSE                             |       2 +-
         dmenu.1                             |       5 +++++
         dmenu.c                             |      11 ++++++++---
       
       3 files changed, 14 insertions(+), 4 deletions(-)
       ---
 (DIR) diff --git a/LICENSE b/LICENSE
       t@@ -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>
 (DIR) diff --git a/dmenu.1 b/dmenu.1
       t@@ -7,6 +7,8 @@ dmenu \- dynamic menu
        .RB [ \-f ]
        .RB [ \-i ]
        .RB [ \-l
       +.RB [ \-m
       +.IR monitor ]
        .IR lines ]
        .RB [ \-p
        .IR prompt ]
       t@@ -49,6 +51,9 @@ dmenu matches menu items case insensitively.
        .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.
        .TP
 (DIR) diff --git a/dmenu.c b/dmenu.c
       t@@ -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"
        
       t@@ -84,6 +85,8 @@ main(int argc, char *argv[]) {
                        /* 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 */
       t@@ -557,7 +560,9 @@ setup(void) {
                        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)
       t@@ -572,7 +577,7 @@ setup(void) {
                                                }
                        }
                        /* 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;
       t@@ -614,7 +619,7 @@ setup(void) {
        
        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);
        }