[hackers] [dwm] extended rule to apply monitors if set up accordingly || Anselm R Garbe

From: <hg_AT_suckless.org>
Date: Thu, 9 Jul 2009 20:52:22 +0000 (UTC)

changeset: 1458:e30739eebeed
tag: tip
user: Anselm R Garbe <anselm_AT_garbe.us>
date: Thu Jul 09 21:52:17 2009 +0100
files: config.def.h dwm.c
description:
extended rule to apply monitors if set up accordingly

diff -r 96862665fd92 -r e30739eebeed config.def.h
--- a/config.def.h Thu Jul 09 20:49:48 2009 +0100
+++ b/config.def.h Thu Jul 09 21:52:17 2009 +0100
@@ -17,9 +17,9 @@
 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) */
diff -r 96862665fd92 -r e30739eebeed dwm.c
--- a/dwm.c Thu Jul 09 20:49:48 2009 +0100
+++ b/dwm.c Thu Jul 09 21:52:17 2009 +0100
@@ -121,8 +121,8 @@
 } 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 @@
         const char *title;
         unsigned int tags;
         Bool isfloating;
+ int monitor;
 } Rule;
 
 /* function declarations */
@@ -238,7 +239,7 @@
 /* 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 @@
 applyrules(Client *c) {
         unsigned int i;
         const Rule *r;
+ Monitor *m;
         XClassHint ch = { 0 };
 
         /* rule matching */
@@ -289,6 +291,9 @@
                         {
                                 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 @@
 #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 @@
 #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;
Received on Thu Jul 09 2009 - 20:52:22 UTC

This archive was generated by hypermail 2.2.0 : Thu Jul 09 2009 - 21:00:06 UTC