about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--config.anselm.h37
-rw-r--r--config.def.h13
-rw-r--r--config.mk2
-rw-r--r--dwm.c17
4 files changed, 38 insertions, 31 deletions
diff --git a/config.anselm.h b/config.anselm.h
index aef5947..09cccd1 100644
--- 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
index c1eedd4..4254c43 100644
--- 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
index b63e2ca..5176248 100644
--- 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
index a54329a..3f896dc 100644
--- 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;
383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448