diff -ruNd dwm-4.3.orig/dwm.h dwm-4.3/dwm.h --- dwm-4.3.orig/dwm.h 2007-07-14 21:11:29.000000000 +0200 +++ dwm-4.3/dwm.h 2007-07-23 11:20:46.562651000 +0200 @@ -144,6 +144,7 @@ void toggletag(const char *arg); /* toggles sel tags with arg's index */ void toggleview(const char *arg); /* toggles the tag with arg's index (in)visible */ void view(const char *arg); /* views the tag with arg's index */ +void shiftview(const char *arg); /* views next(1)/previous(-1) tag */ /* util.c */ void *emallocz(unsigned int size); /* allocates zero-initialized memory, exits on error */ diff -ruNd dwm-4.3.orig/event.c dwm-4.3/event.c --- dwm-4.3.orig/event.c 2007-07-14 21:11:29.000000000 +0200 +++ dwm-4.3/event.c 2007-07-23 11:30:31.943651000 +0200 @@ -135,6 +135,10 @@ else toggleview(buf); } + else if(ev->button == Button4) + shiftview("-1"); + else if( ev->button == Button5) + shiftview("1"); return; } } diff -ruNd dwm-4.3.orig/tag.c dwm-4.3/tag.c --- dwm-4.3.orig/tag.c 2007-07-14 21:11:29.000000000 +0200 +++ dwm-4.3/tag.c 2007-07-23 11:44:57.380651000 +0200 @@ -150,3 +150,21 @@ seltag[i] = True; lt->arrange(); } + +void +shiftview(const char *arg) { + int i, j; + + for(i = 0; !seltag[i]; i++); + for(j = i + 1; j < ntags && !seltag[j]; j++); + if(j < ntags) + return; /* more then one tag selected */ + seltag[i] = False; + i += arg ? atoi(arg) : 0; + if(i < 0) + i = ntags - 1; + else if(i >= ntags) + i = 0; + seltag[i] = True; + lt->arrange(); +}