diff options
-rw-r--r-- | config.arg.h | 12 | ||||
-rw-r--r-- | config.default.h | 20 | ||||
-rw-r--r-- | dwm.h | 6 | ||||
-rw-r--r-- | tag.c | 65 |
4 files changed, 55 insertions, 48 deletions
diff --git a/config.arg.h b/config.arg.h index 17215fb..a2257cf 100644 --- a/config.arg.h +++ b/config.arg.h @@ -33,17 +33,17 @@ static Key key[] = { \ { MODKEY|ControlMask, XK_1, toggleview, { .i = 0 } }, \ { MODKEY|ControlMask, XK_2, toggleview, { .i = 1 } }, \ { MODKEY|ControlMask, XK_3, toggleview, { .i = 2 } }, \ - { MODKEY|ShiftMask, XK_1, replacetag, { .i = 0 } }, \ - { MODKEY|ShiftMask, XK_2, replacetag, { .i = 1 } }, \ - { MODKEY|ShiftMask, XK_3, replacetag, { .i = 2 } }, \ + { MODKEY|ShiftMask, XK_1, tag, { .i = 0 } }, \ + { MODKEY|ShiftMask, XK_2, tag, { .i = 1 } }, \ + { MODKEY|ShiftMask, XK_3, tag, { .i = 2 } }, \ { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \ { MODKEY|ShiftMask, XK_q, quit, { 0 } }, \ { MODKEY|ShiftMask, XK_Return, spawn, \ { .cmd = "exec urxvt +sb -tr -bg black -fg '#eeeeee' -cr '#eeeeee' +sb " \ "-fn '-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*'" } }, \ - { MODKEY|ControlMask|ShiftMask, XK_1, appendtag, { .i = 0 } }, \ - { MODKEY|ControlMask|ShiftMask, XK_2, appendtag, { .i = 1 } }, \ - { MODKEY|ControlMask|ShiftMask, XK_3, appendtag, { .i = 2 } }, \ + { MODKEY|ControlMask|ShiftMask, XK_1, toggletag, { .i = 0 } }, \ + { MODKEY|ControlMask|ShiftMask, XK_2, toggletag, { .i = 1 } }, \ + { MODKEY|ControlMask|ShiftMask, XK_3, toggletag, { .i = 2 } }, \ }; #define RULES \ diff --git a/config.default.h b/config.default.h index 6a6fb4d..a8a2c0e 100644 --- a/config.default.h +++ b/config.default.h @@ -34,19 +34,19 @@ static Key key[] = { \ { MODKEY|ControlMask, XK_2, toggleview, { .i = 2 } }, \ { MODKEY|ControlMask, XK_3, toggleview, { .i = 3 } }, \ { MODKEY|ControlMask, XK_4, toggleview, { .i = 4 } }, \ - { MODKEY|ShiftMask, XK_0, replacetag, { .i = 0 } }, \ - { MODKEY|ShiftMask, XK_1, replacetag, { .i = 1 } }, \ - { MODKEY|ShiftMask, XK_2, replacetag, { .i = 2 } }, \ - { MODKEY|ShiftMask, XK_3, replacetag, { .i = 3 } }, \ - { MODKEY|ShiftMask, XK_4, replacetag, { .i = 4 } }, \ + { MODKEY|ShiftMask, XK_0, tag, { .i = 0 } }, \ + { MODKEY|ShiftMask, XK_1, tag, { .i = 1 } }, \ + { MODKEY|ShiftMask, XK_2, tag, { .i = 2 } }, \ + { MODKEY|ShiftMask, XK_3, tag, { .i = 3 } }, \ + { MODKEY|ShiftMask, XK_4, tag, { .i = 4 } }, \ { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \ { MODKEY|ShiftMask, XK_q, quit, { 0 } }, \ { MODKEY|ShiftMask, XK_Return, spawn, { .cmd = "exec xterm" } }, \ - { MODKEY|ControlMask|ShiftMask, XK_0, appendtag, { .i = 0 } }, \ - { MODKEY|ControlMask|ShiftMask, XK_1, appendtag, { .i = 1 } }, \ - { MODKEY|ControlMask|ShiftMask, XK_2, appendtag, { .i = 2 } }, \ - { MODKEY|ControlMask|ShiftMask, XK_3, appendtag, { .i = 3 } }, \ - { MODKEY|ControlMask|ShiftMask, XK_4, appendtag, { .i = 4 } }, \ + { MODKEY|ControlMask|ShiftMask, XK_0, toggletag, { .i = 0 } }, \ + { MODKEY|ControlMask|ShiftMask, XK_1, toggletag, { .i = 1 } }, \ + { MODKEY|ControlMask|ShiftMask, XK_2, toggletag, { .i = 2 } }, \ + { MODKEY|ControlMask|ShiftMask, XK_3, toggletag, { .i = 3 } }, \ + { MODKEY|ControlMask|ShiftMask, XK_4, toggletag, { .i = 4 } }, \ }; #define RULES \ diff --git a/dwm.h b/dwm.h index c13179f..10eaf30 100644 --- a/dwm.h +++ b/dwm.h @@ -116,19 +116,19 @@ extern void sendevent(Window w, Atom a, long value); extern int xerror(Display *dsply, XErrorEvent *ee); /* tag.c */ -extern void appendtag(Arg *arg); extern void dofloat(Arg *arg); extern void dotile(Arg *arg); extern void initrregs(); extern Bool isvisible(Client *c); extern Client *getnext(Client *c); extern Client *getprev(Client *c); -extern void replacetag(Arg *arg); extern void restack(); extern void settags(Client *c); +extern void tag(Arg *arg); extern void togglemode(Arg *arg); -extern void view(Arg *arg); +extern void toggletag(Arg *arg); extern void toggleview(Arg *arg); +extern void view(Arg *arg); /* util.c */ extern void *emallocz(unsigned int size); diff --git a/tag.c b/tag.c index edf68c6..51407e3 100644 --- a/tag.c +++ b/tag.c @@ -35,16 +35,6 @@ void (*arrange)(Arg *) = DEFMODE; /* extern */ void -appendtag(Arg *arg) -{ - if(!sel) - return; - - sel->tags[arg->i] = True; - settitle(sel); -} - -void dofloat(Arg *arg) { Client *c; @@ -183,19 +173,6 @@ isvisible(Client *c) } void -replacetag(Arg *arg) -{ - int i; - - if(!sel) - return; - - for(i = 0; i < ntags; i++) - sel->tags[i] = False; - appendtag(arg); -} - -void restack() { static unsigned int nwins = 0; @@ -281,6 +258,20 @@ settags(Client *c) } void +tag(Arg *arg) +{ + unsigned int i; + + if(!sel) + return; + + for(i = 0; i < ntags; i++) + sel->tags[i] = False; + sel->tags[arg->i] = True; + settitle(sel); +} + +void togglemode(Arg *arg) { arrange = arrange == dofloat ? dotile : dofloat; @@ -288,24 +279,40 @@ togglemode(Arg *arg) } void -view(Arg *arg) +toggletag(Arg *arg) { unsigned int i; - for(i = 0; i < ntags; i++) - seltag[i] = False; - seltag[arg->i] = True; - arrange(NULL); + if(!sel) + return; + + sel->tags[arg->i] = !sel->tags[arg->i]; + for(i = 0; i < ntags && !sel->tags[i]; i++); + if(i == ntags) + sel->tags[arg->i] = True; + settitle(sel); } + void toggleview(Arg *arg) { unsigned int i; seltag[arg->i] = !seltag[arg->i]; - for(i = 0; !seltag[i] && i < ntags; i++); + for(i = 0; i < ntags && !seltag[i]; i++); if(i == ntags) seltag[arg->i] = True; /* cannot toggle last view */ arrange(NULL); } + +void +view(Arg *arg) +{ + unsigned int i; + + for(i = 0; i < ntags; i++) + seltag[i] = False; + seltag[arg->i] = True; + arrange(NULL); +} |