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 *