This simple modification to setlayout causes a binding to toggle if it's already in the requested layout.
void setlayout(const Arg *arg) { sellt ^= 1; if(arg && arg->v && (arg->v != lt[sellt])) lt[sellt] = (Layout *)arg->v; if(sel) arrange(); else drawbar(); } Now Alt-M toggles in and out of Monocle, etc. I far prefer this behavior, YMMV. Neale