tgot rid of compile time xidx, grabbing the mouse pointer instead, falling back to screen 0 if no pointer available - 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 4d8a646958fa2e0c8fe9d8da3dd26357e8bb4317
 (DIR) parent b89a9501c75744f1393ec943ca520c8b59501610
 (HTM) Author: Anselm R Garbe <garbeam@gmail.com>
       Date:   Wed, 16 Jul 2008 18:38:53 +0100
       
       got rid of compile time xidx, grabbing the mouse pointer instead, falling back to screen 0 if no pointer available
       Diffstat:
         config.h                            |       5 -----
         dmenu.c                             |      23 +++++++++++++++++------
       
       2 files changed, 17 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/config.h b/config.h
       t@@ -6,9 +6,4 @@ static const char *normbgcolor = "#cccccc";
        static const char *normfgcolor = "#000000";
        static const char *selbgcolor  = "#0066ff";
        static const char *selfgcolor  = "#ffffff";
       -
        static unsigned int spaceitem  = 30; /* px between menu items */
       -
       -#ifdef XINERAMA
       -static unsigned int xidx       = 0;  /* Xinerama screen index to use */
       -#endif
 (DIR) diff --git a/dmenu.c b/dmenu.c
       t@@ -16,7 +16,8 @@
        #endif
        
        /* macros */
       -#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
       +#define CLEANMASK(mask)         (mask & ~(numlockmask | LockMask))
       +#define INRECT(X,Y,RX,RY,RW,RH) ((X) >= (RX) && (X) < (RX) + (RW) && (Y) >= (RY) && (Y) < (RY) + (RH))
        
        /* enums */
        enum { ColFG, ColBG, ColLast };
       t@@ -585,7 +586,7 @@ run(void) {
        
        void
        setup(Bool topbar) {
       -        int i, j, x, y;
       +        int i, j, n, x, y;
                XModifierKeymap *modmap;
                XSetWindowAttributes wa;
        #if XINERAMA
       t@@ -618,10 +619,20 @@ setup(Bool topbar) {
                mh = dc.font.height + 2;
        #if XINERAMA
                if(XineramaIsActive(dpy)) {
       -                info = XineramaQueryScreens(dpy, &i);
       -                x = info[xidx].x_org;
       -                y = topbar ? info[xidx].y_org : info[xidx].y_org + info[xidx].height - mh;
       -                mw = info[xidx].width;
       +                i = 0;
       +                info = XineramaQueryScreens(dpy, &n);
       +                if(n > 1) {
       +                        int di;
       +                        unsigned int dui;
       +                        Window dummy;
       +                        if(XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui))
       +                                for(i = 0; i < n; i++)
       +                                        if(INRECT(x, y, info[i].x_org, info[i].y_org, info[i].width, info[i].height))
       +                                                break;
       +                }
       +                x = info[i].x_org;
       +                y = topbar ? info[i].y_org : info[i].y_org + info[i].height - mh;
       +                mw = info[i].width;
                        XFree(info);
                }
                else