Hi all,

first of all thank you so much for this genius piece of software (dwm)!

Using a combination of 'bbkeys', 'blackbox', 'devilspie' and 'gkrellm'
for years I started to look for a more compact solution yesterday.

So I finally stumbled over 'dwm' tried it and begun to love it since 
the first second. I use a triple monitor setup with xinerama. So I tried
the patch [1]. Unfortunately that does not work for me. It appears to 
confuse the tags somehow but I didn't dig deeper into this.

Instead I wrote the mini patch attached. At a first glance it does 
present a single list of tags for all monitors. Switching tags affects
all monitors at the same time. 

Surely I missed something to reach the functionality of [1] :-)

Cheers
  Thomas

[1] http://dwm.suckless.org/patches/single_tagset

diff -ur ../dwm-6.0/dwm.c ./dwm.c
--- ../dwm-6.0.1/dwm.c	2011-12-19 16:02:46.000000000 +0100
+++ ./dwm.c	2012-11-04 19:27:41.000000000 +0100
@@ -1872,9 +1872,14 @@
 		if(n <= nn) {
 			for(i = 0; i < (nn - n); i++) { /* new monitors available */
 				for(m = mons; m && m->next; m = m->next);
-				if(m)
+				if(m) {
 					m->next = createmon();
-				else
+
+					/*
+					 * show status bar only for the first monitor (if at all)
+					 */
+					m->next->showbar = 0;
+				} else
 					mons = createmon();
 			}
 			for(i = 0, m = mons; i < nn && m; m = m->next, i++)
@@ -2043,13 +2048,17 @@
 
 void
 view(const Arg *arg) {
-	if((arg->ui & TAGMASK) == selmon->tagset[selmon->seltags])
-		return;
-	selmon->seltags ^= 1; /* toggle sel tagset */
-	if(arg->ui & TAGMASK)
-		selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
-	focus(NULL);
-	arrange(selmon);
+	Monitor *selmoni;
+
+	for(selmoni = mons; selmoni; selmoni = selmoni->next) {
+		if((arg->ui & TAGMASK) == selmoni->tagset[selmoni->seltags])
+			return;
+		selmoni->seltags ^= 1; /* toggle sel tagset */
+		if(arg->ui & TAGMASK)
+			selmoni->tagset[selmoni->seltags] = arg->ui & TAGMASK;
+		focus(NULL);
+		arrange(selmoni);
+	}
 }
 
 Client *

Reply via email to