# HG changeset patch # User paulo@localhost # Date 1237792488 25200 # Node ID ba504f41828f1e3f41df3cb20afd81c04070aeb5 # Parent 7024076fa9483facf80f50c60267187f98f179ca add prev/next control to view_tags() and setlayouts() diff -r 7024076fa948 -r ba504f41828f config.h --- a/config.h Sun Mar 22 23:26:35 2009 -0700 +++ b/config.h Mon Mar 23 00:14:48 2009 -0700 @@ -83,6 +83,7 @@ { MODKEY|ControlMask|ShiftMask, XK_0, toggletag, { .i = 9 } }, \ { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \ { MODKEY, XK_space, setlayout, { .i = -1 } }, \ + { MODKEY|ShiftMask, XK_space, setlayout, { .i = -2 } }, \ { MODKEY, XK_F1, setlayout, { .i = 0 } }, \ { MODKEY, XK_F2, setlayout, { .i = 1 } }, \ { MODKEY, XK_F3, setlayout, { .i = 2 } }, \ @@ -90,7 +91,7 @@ { MODKEY, XK_F5, setlayout, { .i = 4 } }, \ { MODKEY, XK_F6, setlayout, { .i = 5 } }, \ { MODKEY, XK_F7, setlayout, { .i = 6 } }, \ - { MODKEY|ShiftMask, XK_space, toggleversatile,{ 0 } }, \ + { MODKEY|ControlMask, XK_space, toggleversatile,{ 0 } }, \ { MODKEY, XK_grave, view, { .i = -1 } }, \ { MODKEY, XK_1, view, { .i = 0 } }, \ { MODKEY, XK_2, view, { .i = 1 } }, \ @@ -102,6 +103,8 @@ { MODKEY, XK_8, view, { .i = 7 } }, \ { MODKEY, XK_9, view, { .i = 8 } }, \ { MODKEY, XK_0, view, { .i = 9 } }, \ + { MODKEY, XK_minus, next_view, { .i = -1 } }, \ + { MODKEY, XK_equal, next_view, { .i = 1 } }, \ { MODKEY, XK_BackSpace, last_view, { 0 } }, \ { MODKEY|ControlMask, XK_1, toggleview, { .i = 0 } }, \ { MODKEY|ControlMask, XK_2, toggleview, { .i = 1 } }, \ diff -r 7024076fa948 -r ba504f41828f dwm.h --- a/dwm.h Sun Mar 22 23:26:35 2009 -0700 +++ b/dwm.h Mon Mar 23 00:14:48 2009 -0700 @@ -152,6 +152,7 @@ extern void toggleview(Arg *arg); /* toggles the tag with arg's index (in)visible */ extern void view(Arg *arg); /* views the tag with arg's index */ extern void last_view(Arg *arg); /* go to last viewed tag */ +extern void next_view(Arg *arg); /* go to next/prev tag */ /* util.c */ extern void *emallocz(unsigned int size); /* allocates zero-initialized memory, exits on error */ diff -r 7024076fa948 -r ba504f41828f layout.c --- a/layout.c Sun Mar 22 23:26:35 2009 -0700 +++ b/layout.c Mon Mar 23 00:14:48 2009 -0700 @@ -427,14 +427,14 @@ void setlayout(Arg *arg) { - unsigned int i; + int i; - if(arg->i == -1) { + if(arg->i < 0) { for(i = 0; i < nlayouts && lt != &layout[i]; i++); - if(i == nlayouts - 1) - lt = &layout[0]; - else - lt = &layout[++i]; + if(arg->i == -1) + lt = &layout[(i + 1) % nlayouts]; + else if(arg->i == -2) + lt = &layout[(i - 1) >= 0 ? i - 1 : nlayouts - 1]; } else { if(arg->i < 0 || arg->i >= nlayouts) diff -r 7024076fa948 -r ba504f41828f tag.c --- a/tag.c Sun Mar 22 23:26:35 2009 -0700 +++ b/tag.c Mon Mar 23 00:14:48 2009 -0700 @@ -164,3 +164,21 @@ a.i = lastview; view(&a); } + +void +next_view(Arg *arg) { + int i; + Arg a; + + a.i = 0; + setlayout(&a); /* back to default layout */ + + for(i = 0; i < ntags; i++) { + if (seltag[i] == True) { + seltag[i] = False; + seltag[(i + arg->i) >= 0 ? (i + arg->i) % ntags : ntags - 1] = True; + break; + } + } + lt->arrange(); +}