Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | referred to LICENSE file 4.2 | Anselm R. Garbe | 2007-05-30 | 1 | -6/+1 |
| | |||||
* | Jukka also belongs to Copyright holders after all he has contributed and ↵ | Anselm R. Garbe | 2007-05-30 | 1 | -0/+1 |
| | | | | done for dwm, updated -v as well | ||||
* | added nsz to copyright holders as well, because he did a lot recently | Anselm R. Garbe | 2007-05-29 | 1 | -0/+1 |
| | |||||
* | added anydot to Copyright holders, because he contributed a lot recently | Anselm R. Garbe | 2007-05-29 | 1 | -0/+1 |
| | |||||
* | yet another fix of copyright compactisition | Anselm R. Garbe | 2007-04-13 | 1 | -1/+2 |
| | |||||
* | making Copyright notices more compact | Anselm R. Garbe | 2007-04-13 | 1 | -3/+2 |
| | |||||
* | replaced Arg union with const char *arg, seems cleaner to me, even if we ↵ | Anselm R. Garbe | 2007-02-22 | 1 | -4/+4 |
| | | | | need atoi() in some places | ||||
* | several changes, made togglemax extern and separated it from zoom() - moved ↵ | Anselm R. Garbe | 2007-02-22 | 1 | -4/+4 |
| | | | | zoom() and togglemax() into layout.c, changed void (*func)(Arg *) into void (*func)(Arg), changed default keybindings of focusnext/focusprev and incmasterw to h/j/k/l accordingly, made keys in config*h appear alphabetically (special keys first), renamed resizemaster into incmasterw, renamed MASTER into MASTERWIDTH | ||||
* | removed erealloc (not used) 3.1 | Anselm R. Garbe | 2007-01-16 | 1 | -9/+0 |
| | |||||
* | corrections | arg@mig29 | 2007-01-02 | 1 | -1/+1 |
| | |||||
* | next version will contain updated copyright notice | arg@mig29 | 2007-01-02 | 1 | -1/+1 |
| | |||||
* | code polishing, removed unnecessary newlines | Anselm R. Garbe | 2006-10-06 | 1 | -3/+2 |
| | |||||
* | reviewed util.c | arg@mmvi | 2006-09-20 | 1 | -1/+2 |
| | |||||
* | removed a bunch of lines through making function signatures more consistent ↵ | Anselm R. Garbe | 2006-09-12 | 1 | -8/+4 |
| | | | | with my style ( { does not belong to a new line, if function args are single-lined) | ||||
* | added a comment to spawn 1.1 | Anselm R. Garbe | 2006-08-28 | 1 | -0/+1 |
| | |||||
* | eliminated sentinel warning | Anselm R. Garbe | 2006-08-23 | 1 | -1/+1 |
| | |||||
* | removed badmalloc (thx for the pointer to Uriel) | Anselm R. Garbe | 2006-08-22 | 1 | -10/+2 |
| | |||||
* | small renamings of two static functions | Anselm R.Garbe | 2006-08-21 | 1 | -3/+3 |
| | |||||
* | implemented restack behavior (floats are on top in tiled mode) | Anselm R.Garbe | 2006-08-14 | 1 | -0/+9 |
| | |||||
* | applied grabbing-- and shell_minimal | arg@10ksloc.org | 2006-08-07 | 1 | -1/+1 |
| | |||||
* | using execl now, argv changed, using cmd and const char defs directly in the ↵ | arg@10ksloc.org | 2006-08-04 | 1 | -4/+7 |
| | | | | KEYS struct | ||||
* | small stylistic fix | arg@10ksloc.org | 2006-08-04 | 1 | -1/+2 |
| | |||||
* | made fullscreen apps working fine in floating mode (there is no sane way to ↵ | arg@10ksloc.org | 2006-08-02 | 1 | -1/+0 |
| | | | | make them work in tiled mode, thus I switch to floating mode if I run such kind of app), also fixed the xterm issue reported by Sander | ||||
* | some cleanups/fixes inspired by Jukka Salmi's feedback | arg@10ksloc.org | 2006-07-21 | 1 | -4/+2 |
| | |||||
* | cleaned up code | arg@10ksloc.org | 2006-07-20 | 1 | -0/+3 |
| | |||||
* | using EXIT_stuff in exit() now | Anselm R. Garbe | 2006-07-18 | 1 | -3/+3 |
| | |||||
* | ordered variables in structs and source files alphabetically | Anselm R. Garbe | 2006-07-17 | 1 | -2/+2 |
| | |||||
* | proceeded with cleaning up, sorting functions, etc | Anselm R. Garbe | 2006-07-15 | 1 | -11/+13 |
| | |||||
* | rearranged several stuff | Anselm R. Garbe | 2006-07-15 | 1 | -1/+1 |
| | |||||
* | removed a bunch of lines through swap removal | Anselm R. Garbe | 2006-07-14 | 1 | -8/+0 |
| | |||||
* | searching for a better way to discard enter notifies | Anselm R. Garbe | 2006-07-14 | 1 | -28/+0 |
| | |||||
* | implemented tagging a client | Anselm R. Garbe | 2006-07-13 | 1 | -1/+2 |
| | |||||
* | changed default colors | Anselm R. Garbe | 2006-07-13 | 1 | -1/+1 |
| | |||||
* | added logo+description | Anselm R. Garbe | 2006-07-13 | 1 | -1/+1 |
| | |||||
* | new stuff (some warning elimination) | Anselm R. Garbe | 2006-07-13 | 1 | -2/+2 |
| | |||||
* | removed unnecessary crap | Anselm R. Garbe | 2006-07-13 | 1 | -49/+2 |
| | |||||
* | new stuff, fixed several issues | Anselm R. Garbe | 2006-07-12 | 1 | -2/+3 |
| | |||||
* | several changes, new stuff | Anselm R. Garbe | 2006-07-11 | 1 | -1/+1 |
| | |||||
* | removed unnecessary sel stuff | Anselm R. Garbe | 2006-07-11 | 1 | -38/+0 |
| | |||||
* | added bar event timer | Anselm R. Garbe | 2006-07-11 | 1 | -17/+8 |
| | |||||
* | added gridsel to gridwm | Anselm R. Garbe | 2006-07-11 | 1 | -0/+38 |
| | |||||
* | fixed several stuff (gridwm gets better and better) | Anselm R. Garbe | 2006-07-11 | 1 | -6/+7 |
| | |||||
* | implemented pipe_spawn | Anselm R. Garbe | 2006-07-11 | 1 | -4/+52 |
| | |||||
* | added several other stuff | Anselm R. Garbe | 2006-07-10 | 1 | -0/+23 | ); } else XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); } if(!sel || !isvisible(sel)) { for(c = stack; c && !isvisible(c); c = c->snext); focus(c); } restack(); } void dotile(void) { unsigned int i, n, mw, mh, tw, th; Client *c; for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) n++; /* window geoms */ mh = (n > nmaster) ? wah / nmaster : wah / (n > 0 ? n : 1); mw = (n > nmaster) ? (waw * master) / 1000 : waw; th = (n > nmaster) ? wah / (n - nmaster) : 0; tw = waw - mw; for(i = 0, c = clients; c; c = c->next) if(isvisible(c)) { if(c->isfloat) { resize(c, True, TopLeft); continue; } c->ismax = False; c->x = wax; c->y = way; if(i < nmaster) { c->y += i * mh; c->w = mw - 2 * BORDERPX; c->h = mh - 2 * BORDERPX; } else { /* tile window */ c->x += mw; c->w = tw - 2 * BORDERPX; if(th > bh) { c->y += (i - nmaster) * th; c->h = th - 2 * BORDERPX; } else /* fallback if th < bh */ c->h = wah - 2 * BORDERPX; } resize(c, False, TopLeft); i++; } else XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); if(!sel || !isvisible(sel)) { for(c = stack; c && !isvisible(c); c = c->snext); focus(c); } restack(); } void focusnext(Arg *arg) { Client *c; if(!sel) return; if(!(c = getnext(sel->next))) c = getnext(clients); if(c) { focus(c); restack(); } } void focusprev(Arg *arg) { Client *c; if(!sel) return; if(!(c = getprev(sel->prev))) { for(c = clients; c && c->next; c = c->next); c = getprev(c); } if(c) { focus(c); restack(); } } void incnmaster(Arg *arg) { if((arrange == dofloat) || (nmaster + arg->i < 1) || (wah / (nmaster + arg->i) < bh)) return; nmaster += arg->i; if(sel) arrange(); else drawstatus(); } Bool isvisible(Client *c) { unsigned int i; for(i = 0; i < ntags; i++) if(c->tags[i] && seltag[i]) return True; return False; } void resizemaster(Arg *arg) { if(arg->i == 0) master = MASTER; else { if(master + arg->i > 950 || master + arg->i < 50) return; master += arg->i; } arrange(); } void restack(void) { Client *c; XEvent ev; drawstatus(); if(!sel) return; if(sel->isfloat || arrange == dofloat) XRaiseWindow(dpy, sel->win); if(arrange != dofloat) { if(!sel->isfloat) XLowerWindow(dpy, sel->win); for(c = nexttiled(clients); c; c = nexttiled(c->next)) { if(c == sel) continue; XLowerWindow(dpy, c->win); } } XSync(dpy, False); while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); } void togglefloat(Arg *arg) { if (!sel || arrange == dofloat) return; sel->isfloat = !sel->isfloat; arrange(); } void togglemode(Arg *arg) { arrange = (arrange == dofloat) ? dotile : dofloat; if(sel) arrange(); else drawstatus(); } void toggleview(Arg *arg) { unsigned int i; seltag[arg->i] = !seltag[arg->i]; for(i = 0; i < ntags && !seltag[i]; i++); if(i == ntags) seltag[arg->i] = True; /* cannot toggle last view */ arrange(); } void view(Arg *arg) { unsigned int i; for(i = 0; i < ntags; i++) seltag[i] = (arg->i == -1) ? True : False; if(arg->i >= 0 && arg->i < ntags) seltag[arg->i] = True; arrange(); } void zoom(Arg *arg) { unsigned int n; Client *c; if(!sel) return; if(sel->isfloat || (arrange == dofloat)) { togglemax(sel); return; } for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) n++; if((c = sel) == nexttiled(clients)) if(!(c = nexttiled(c->next))) return; detach(c); if(clients) clients->prev = c; c->next = clients; clients = c; focus(c); arrange(); }