dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit e237b2a76fb3dac1f43b91e5c7b6adb9ef04c9ed
parent dd9ee6d248397dcd3483131808e5c967bad3900f
Author: Anselm R Garbe <garbeam@gmail.com>
Date:   Fri, 14 Mar 2008 14:35:45 +0000

some changes towards 4.9
Diffstat:
Mconfig.anselm.h | 37++++++++++++++++++++-----------------
Mconfig.def.h | 13++++++++-----
Mconfig.mk | 2+-
Mdwm.c | 17+++++++++--------
4 files changed, 38 insertions(+), 31 deletions(-)
diff --git a/config.anselm.h b/config.anselm.h
@@ -14,24 +14,15 @@
 const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
 
 Rule rules[] = {
-    /* class:instance:title substr    tags ref    isfloating */
-    { "Firefox",            tags[8],    False },
-    { "Gimp",            NULL,        True },
-    { "MPlayer",            NULL,        True },
-    { "Acroread",            NULL,        True },
+    /* class    instance    title        tags ref    isfloating */
+    { NULL,        NULL,        "Firefox",    tags[8],    False },
+    { NULL,        NULL,        "Gimp",        NULL,        True },
+    { NULL,        NULL,        "MPlayer",    NULL,        True },
+    { NULL,        NULL,        "Acroread",    NULL,        True },
 };
 
-/* layout(s) */
-#define RESIZEHINTS        True    /* False - respect size hints in tiled resizals */
-#define SNAP            32    /* snap pixel */
-
-Layout layouts[] = {
-    /* symbol        function    isfloating */
-    { "[]|",        tileh,        False }, /* first entry is default */
-    { "[]=",        tilev,        False },
-    { "><>",        floating,    True },
-    { "[M]",        monocle,    True },
-};
+/* geometry function */
+void (*setgeoms)(void) = setdefgeoms;
 
 void
 setanselmgeoms(void) {
@@ -83,12 +74,24 @@ anselmgeoms(const char *arg) {
 
 void
 defgeoms(const char *arg) {
-    setgeoms = setdefaultgeoms;
+    setgeoms = setdefgeoms;
     setgeoms();
     updatebarpos();
     setlayout("[]=");
 }
 
+/* layout(s) */
+#define RESIZEHINTS        True    /* False - respect size hints in tiled resizals */
+#define SNAP            32    /* snap pixel */
+
+Layout layouts[] = {
+    /* symbol        function    isfloating */
+    { "[]|",        tileh,        False }, /* first entry is default */
+    { "[]=",        tilev,        False },
+    { "><>",        floating,    True },
+    { "[M]",        monocle,    True },
+};
+
 /* key definitions */
 #define MODKEY            Mod1Mask
 Key keys[] = {
diff --git a/config.def.h b/config.def.h
@@ -14,13 +14,16 @@
 const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
 
 Rule rules[] = {
-    /* class:instance:title substr    tags ref    isfloating */
-    { "Firefox",            tags[8],    False },
-    { "Gimp",            NULL,        True },
-    { "MPlayer",            NULL,        True },
-    { "Acroread",            NULL,        True },
+    /* class    instance    title        tags ref    isfloating */
+    { NULL,        NULL,        "Firefox",    tags[8],    False },
+    { NULL,        NULL,        "Gimp",        NULL,        True },
+    { NULL,        NULL,        "MPlayer",    NULL,        True },
+    { NULL,        NULL,        "Acroread",    NULL,        True },
 };
 
+/* geometry function */
+void (*setgeoms)(void) = setdefgeoms;
+
 /* layout(s) */
 #define RESIZEHINTS        True    /* False - respect size hints in tiled resizals */
 #define SNAP            32    /* snap pixel */
diff --git a/config.mk b/config.mk
@@ -1,5 +1,5 @@
 # dwm version
-VERSION = 4.8
+VERSION = 4.9
 
 # Customize below to fit your system
 
diff --git a/dwm.c b/dwm.c
@@ -99,7 +99,9 @@ typedef struct {
 } Layout; 
 
 typedef struct {
-    const char *prop;
+    const char *class;
+    const char *instance;
+    const char *title;
     const char *tag;
     Bool isfloating;
 } Rule;
@@ -161,7 +163,7 @@ void restack(void);
 void run(void);
 void scan(void);
 void setclientstate(Client *c, long state);
-void setdefaultgeoms(void);
+void setdefgeoms(void);
 void setlayout(const char *arg);
 void setup(void);
 void spawn(const char *arg);
@@ -224,7 +226,6 @@ Display *dpy;
 DC dc = {0};
 Layout *lt = NULL;
 Window root, barwin;
-void (*setgeoms)(void) = setdefaultgeoms;
 
 /* configuration, allows nested code to access above variables */
 #include "config.h"
@@ -244,9 +245,9 @@ applyrules(Client *c) {
     XGetClassHint(dpy, c->win, &ch);
     for(i = 0; i < LENGTH(rules); i++) {
         r = &rules[i];
-        if(strstr(c->name, r->prop)
-        || (ch.res_class && strstr(ch.res_class, r->prop))
-        || (ch.res_name && strstr(ch.res_name, r->prop)))
+        if(strstr(c->name, r->title)
+        || (ch.res_class && r->class && strstr(ch.res_class, r->class))
+        || (ch.res_name && r->instance && strstr(ch.res_name, r->instance)))
         {
             c->isfloating = r->isfloating;
             if(r->tag) {
@@ -1051,7 +1052,7 @@ maprequest(XEvent *e) {
 }
 
 void
-monocle(void) { 
+monocle(void) {
     Client *c;
 
     for(c = clients; c; c = c->next)
@@ -1390,7 +1391,7 @@ setclientstate(Client *c, long state) {
 }
 
 void
-setdefaultgeoms(void) {
+setdefgeoms(void) {
 
     /* screen dimensions */
     sx = 0;