-settags(Client *c)
-{
-       char classinst[256];
-       static unsigned int len = rule ? sizeof(rule) / sizeof(rule[0]) : 0;
-       unsigned int i, j;
-       regex_t regex;
-       regmatch_t tmp;
-       Bool matched = False;
-       XClassHint ch;
-
-       if(!len) {
-               c->tags[tsel] = tags[tsel];
-               return;
-       }
-
-       if(XGetClassHint(dpy, c->win, &ch)) {
-               snprintf(classinst, sizeof(classinst), "%s:%s",
-                               ch.res_class ? ch.res_class : "",
-                               ch.res_name ? ch.res_name : "");
-               for(i = 0; !matched && i < len; i++) {
-                       if(!regcomp(®ex, rule[i].pattern, 0)) {
-                               if(!regexec(®ex, classinst, 1, &tmp, 0)) {
-                                       for(j = 0; j < TLast; j++) {
-                                               if(rule[i].tags[j])
-                                                       matched = True;
-                                               c->tags[j] = rule[i].tags[j];
-                                       }
-                                       c->isfloat = rule[i].isfloat;
-                               }
-                               regfree(®ex);
-                       }
-               }
-               if(ch.res_class)
-                       XFree(ch.res_class);
-               if(ch.res_name)
-                       XFree(ch.res_name);
-       }
-       if(!matched)
-               c->tags[tsel] = tags[tsel];
+toggleview(const char *arg) {
+       int i, j;
+
+       i = arg ? atoi(arg) : 0;
+       seltag[i] = !seltag[i];
+       for(j = 0; j < ntags && !seltag[j]; j++);
+       if(j == ntags)
+               seltag[i] = True; /* cannot toggle last view */
+       arrange();