URI: 
       extended rule to apply monitors if set up accordingly - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 758b100d12ba1c52b5d7479e3ed334ba89e701f8
   DIR parent 8420fb1cedf067ce230d5d69e5d4edb3031745e7
  HTML Author: Anselm R Garbe <anselm@garbe.us>
       Date:   Thu,  9 Jul 2009 21:52:17 +0100
       
       extended rule to apply monitors if set up accordingly
       Diffstat:
         M config.def.h                        |       6 +++---
         M dwm.c                               |      13 +++++++++----
       
       2 files changed, 12 insertions(+), 7 deletions(-)
       ---
   DIR diff --git a/config.def.h b/config.def.h
       @@ -17,9 +17,9 @@ static const Bool topbar            = True;     /* False means bottom bar */
        static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
        
        static const Rule rules[] = {
       -        /* class      instance    title       tags mask     isfloating */
       -        { "Gimp",     NULL,       NULL,       0,            True },
       -        { "Firefox",  NULL,       NULL,       1 << 8,       False },
       +        /* class      instance    title       tags mask     isfloating   monitor */
       +        { "Gimp",     NULL,       NULL,       0,            True,        -1 },
       +        { "Firefox",  NULL,       NULL,       1 << 8,       False,       -1 },
        };
        
        /* layout(s) */
   DIR diff --git a/dwm.c b/dwm.c
       @@ -121,8 +121,8 @@ typedef struct {
        } Layout;
        
        struct Monitor {
       -        int screen_number;
                float mfact;
       +        int num;
                int by;               /* bar geometry */
                int mx, my, mw, mh;   /* screen size */
                int wx, wy, ww, wh;   /* window area  */
       @@ -145,6 +145,7 @@ typedef struct {
                const char *title;
                unsigned int tags;
                Bool isfloating;
       +        int monitor;
        } Rule;
        
        /* function declarations */
       @@ -238,7 +239,7 @@ static void zoom(const Arg *arg);
        /* variables */
        static char stext[256], ntext[8];
        static int screen;
       -static int sw, sh;           /* X display screen geometry x, y, width, height */
       +static int sw, sh;           /* X display screen geometry width, height */
        static int bh, blw = 0;      /* bar geometry */
        static int (*xerrorxlib)(Display *, XErrorEvent *);
        static unsigned int numlockmask = 0;
       @@ -276,6 +277,7 @@ void
        applyrules(Client *c) {
                unsigned int i;
                const Rule *r;
       +        Monitor *m;
                XClassHint ch = { 0 };
        
                /* rule matching */
       @@ -289,6 +291,9 @@ applyrules(Client *c) {
                                {
                                        c->isfloating = r->isfloating;
                                        c->tags |= r->tags;
       +                                for(m = mons; m && m->num != r->monitor; m = m->next);
       +                                if(m)
       +                                        c->mon = m;
                                }
                        }
                        if(ch.res_class)
       @@ -1698,7 +1703,7 @@ updategeom(void) {
        #ifdef XINERAMA
                if(XineramaIsActive(dpy)) {
                        for(i = 0, m = newmons; m; m = m->next, i++) {
       -                        m->screen_number = info[i].screen_number;
       +                        m->num = info[i].screen_number;
                                m->mx = m->wx = info[i].x_org;
                                m->my = m->wy = info[i].y_org;
                                m->mw = m->ww = info[i].width;
       @@ -1710,7 +1715,7 @@ updategeom(void) {
        #endif /* XINERAMA */
                /* default monitor setup */
                {
       -                m->screen_number = 0;
       +                m->num = 0;
                        m->mx = m->wx = 0;
                        m->my = m->wy = 0;
                        m->mw = m->ww = sw;