summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dwm.h1
-rw-r--r--event.c4
-rw-r--r--tag.c18
3 files changed, 23 insertions, 0 deletions
diff --git a/dwm.h b/dwm.h
index 999f027..d54fdc0 100644
--- a/dwm.h
+++ b/dwm.h
@@ -144,6 +144,7 @@ void tag(const char *arg); /* tags sel with arg's index */
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 --git a/event.c b/event.c
index 3f06ea7..ac96df1 100644
--- a/event.c
+++ b/event.c
@@ -135,6 +135,10 @@ buttonpress(XEvent *e) {
else
toggleview(buf);
}
+ else if(ev->button == Button4)
+ shiftview("-1");
+ else if(ev->button == Button5)
+ shiftview("1");
return;
}
}
diff --git a/tag.c b/tag.c
index c44954b..19c63b1 100644
--- a/tag.c
+++ b/tag.c
@@ -99,6 +99,24 @@ settags(Client *c, Client *trans) {
c->tags[i] = seltag[i];
}
+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();
+}
+
void
tag(const char *arg) {
int i;