+void
+togglemax(const char *arg) {
+ XEvent ev;
+
+ if(!sel || (!isfloating() && !sel->isfloating) || sel->isfixed)
+ return;
+ if((sel->ismax = !sel->ismax)) {
+ sel->rx = sel->x;
+ sel->ry = sel->y;
+ sel->rw = sel->w;
+ sel->rh = sel->h;
+ resize(sel, wax, way, waw - 2 * sel->border, wah - 2 * sel->border, True);
+ }
+ else
+ resize(sel, sel->rx, sel->ry, sel->rw, sel->rh, True);
+ drawstatus();
+ while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
+}
+
+void
+toggletag(const char *arg) {
+ unsigned int i, j;
+
+ if(!sel)
+ return;
+ i = idxoftag(arg);
+ sel->tags[i] = !sel->tags[i];
+ for(j = 0; j < ntags && !sel->tags[j]; j++);
+ if(j == ntags)
+ sel->tags[i] = True;
+ setprops(sel);
+ arrange();
+}
+
+void
+toggleview(const char *arg) {
+ unsigned int i, j;
+
+ i = idxoftag(arg);
+ seltags[i] = !seltags[i];
+ for(j = 0; j < ntags && !seltags[j]; j++);
+ if(j == ntags)
+ seltags[i] = True; /* cannot toggle last view */
+ setdwmprops();
+ arrange();
+}
+
+void
+view(const char *arg) {
+ unsigned int i;
+
+ for(i = 0; i < ntags; i++)
+ seltags[i] = arg == NULL;
+ i = idxoftag(arg);
+ if(i >= 0 && i < ntags)
+ seltags[i] = True;
+ setdwmprops();
+ arrange();
+}