tseveral changes, made togglemax extern and separated it from zoom() - moved zo… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 352cae4380713949d3800ebcda7aff3bb5ab9efc | |
parent b3b58c08e4e15c4dbdd04bae52300d1e8effed33 | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Thu, 22 Feb 2007 07:59:13 +0100 | |
several changes, made togglemax extern and separated it from zoom() - moved zoo… | |
Diffstat: | |
M client.c | 44 ++---------------------------… | |
M config.arg.h | 67 ++++++++++++++++-------------… | |
M config.default.h | 61 ++++++++++++++++-------------… | |
M dwm.1 | 15 +++++++++------ | |
M dwm.h | 30 +++++++++++++++--------------- | |
M event.c | 20 ++++++++++---------- | |
M layout.c | 92 +++++++++++++++++++++--------… | |
M main.c | 2 +- | |
M tag.c | 28 ++++++++++++++-------------- | |
M util.c | 8 ++++---- | |
10 files changed, 184 insertions(+), 183 deletions(-) | |
--- | |
diff --git a/client.c b/client.c | |
t@@ -83,24 +83,6 @@ setclientstate(Client *c, long state) { | |
PropModeReplace, (unsigned char *)data, 2); | |
} | |
-static void | |
-togglemax(Client *c) { | |
- XEvent ev; | |
- | |
- if(c->isfixed) | |
- return; | |
- if((c->ismax = !c->ismax)) { | |
- c->rx = c->x; | |
- c->ry = c->y; | |
- c->rw = c->w; | |
- c->rh = c->h; | |
- resize(c, wax, way, waw - 2 * BORDERPX, wah - 2 * BORDERPX, Tr… | |
- } | |
- else | |
- resize(c, c->rx, c->ry, c->rw, c->rh, True); | |
- while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | |
-} | |
- | |
static int | |
xerrordummy(Display *dsply, XErrorEvent *ee) { | |
return 0; | |
t@@ -171,7 +153,7 @@ focus(Client *c) { | |
} | |
void | |
-killclient(Arg *arg) { | |
+killclient(Arg arg) { | |
if(!sel) | |
return; | |
if(isprotodel(sel)) | |
t@@ -303,7 +285,7 @@ resize(Client *c, int x, int y, int w, int h, Bool sizehin… | |
} | |
void | |
-toggleversatile(Arg *arg) { | |
+toggleversatile(Arg arg) { | |
if(!sel || lt->arrange == versatile) | |
return; | |
sel->isversatile = !sel->isversatile; | |
t@@ -402,25 +384,3 @@ unmanage(Client *c) { | |
XUngrabServer(dpy); | |
lt->arrange(); | |
} | |
- | |
-void | |
-zoom(Arg *arg) { | |
- unsigned int n; | |
- Client *c; | |
- | |
- if(!sel) | |
- return; | |
- if(sel->isversatile || (lt->arrange == versatile)) { | |
- 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); | |
- attach(c); | |
- focus(c); | |
- lt->arrange(); | |
-} | |
diff --git a/config.arg.h b/config.arg.h | |
t@@ -14,7 +14,6 @@ | |
#define TOPBAR True /* False */ | |
/* behavior */ | |
-#define SNAP 40 /* pixel */ | |
#define TAGS \ | |
const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL }; | |
#define RULES \ | |
t@@ -33,27 +32,41 @@ static Layout layout[] = { \ | |
{ "[]=", tile }, /* first entry is default */ \ | |
{ "><>", versatile }, \ | |
}; | |
-#define MASTER 600 /* per thousand */ | |
+#define MASTERWIDTH 600 /* master width per thou… | |
#define NMASTER 1 /* clients in master a… | |
+#define SNAP 40 /* versatile snap pixel … | |
/* key definitions */ | |
#define MODKEY Mod1Mask | |
#define KEYS \ | |
static Key key[] = { \ | |
/* modifier key function … | |
- { MODKEY|ShiftMask, XK_Return, spawn, \ | |
- { .cmd = "exec urxvtcd -tr -bg '#292929' -fg '#eee' -cr '#eee'… | |
+ { MODKEY, XK_Return, zoom, … | |
+ { MODKEY, XK_space, setlayout, { … | |
+ { MODKEY, XK_0, view, … | |
+ { MODKEY, XK_1, view, … | |
+ { MODKEY, XK_2, view, … | |
+ { MODKEY, XK_3, view, … | |
+ { MODKEY, XK_4, view, … | |
+ { MODKEY, XK_5, view, … | |
+ { MODKEY, XK_6, view, … | |
+ { MODKEY, XK_7, view, … | |
+ { MODKEY, XK_8, view, … | |
+ { MODKEY, XK_9, view, … | |
+ { MODKEY, XK_d, incnmaster, … | |
+ { MODKEY, XK_h, incmasterw, … | |
+ { MODKEY, XK_i, incnmaster, … | |
+ { MODKEY, XK_j, focusnext, … | |
+ { MODKEY, XK_k, focusprev, … | |
+ { MODKEY, XK_l, incmasterw, … | |
+ { MODKEY, XK_m, togglemax, … | |
{ MODKEY, XK_p, spawn, \ | |
{ .cmd = "exe=\"$(lsx `echo $PATH | sed 's/:/ /g'` | sort -u "… | |
" | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMF… | |
"-sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"')\" && exec $exe… | |
- { MODKEY, XK_j, focusnext, … | |
- { MODKEY, XK_k, focusprev, … | |
- { MODKEY, XK_Return, zoom, … | |
- { MODKEY, XK_g, resizemaster, … | |
- { MODKEY, XK_s, resizemaster, … | |
- { MODKEY, XK_i, incnmaster, … | |
- { MODKEY, XK_d, incnmaster, … | |
+ { MODKEY|ShiftMask, XK_Return, spawn, \ | |
+ { .cmd = "exec urxvtcd -tr -bg '#292929' -fg '#eee' -cr '#eee'… | |
+ { MODKEY|ShiftMask, XK_space, toggleversatile,{ … | |
{ MODKEY|ShiftMask, XK_0, tag, … | |
{ MODKEY|ShiftMask, XK_1, tag, … | |
{ MODKEY|ShiftMask, XK_2, tag, … | |
t@@ -64,28 +77,8 @@ static Key key[] = { \ | |
{ MODKEY|ShiftMask, XK_7, tag, … | |
{ MODKEY|ShiftMask, XK_8, tag, … | |
{ MODKEY|ShiftMask, XK_9, tag, … | |
- { MODKEY|ControlMask|ShiftMask, XK_1, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_2, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_3, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_4, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_5, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_6, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_7, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_8, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_9, toggletag,… | |
{ MODKEY|ShiftMask, XK_c, killclient, … | |
- { MODKEY, XK_space, setlayout, { … | |
- { MODKEY|ShiftMask, XK_space, toggleversatile,{ … | |
- { MODKEY, XK_0, view, … | |
- { MODKEY, XK_1, view, … | |
- { MODKEY, XK_2, view, … | |
- { MODKEY, XK_3, view, … | |
- { MODKEY, XK_4, view, … | |
- { MODKEY, XK_5, view, … | |
- { MODKEY, XK_6, view, … | |
- { MODKEY, XK_7, view, … | |
- { MODKEY, XK_8, view, … | |
- { MODKEY, XK_9, view, … | |
+ { MODKEY|ShiftMask, XK_q, quit, … | |
{ MODKEY|ControlMask, XK_1, toggleview, … | |
{ MODKEY|ControlMask, XK_2, toggleview, … | |
{ MODKEY|ControlMask, XK_3, toggleview, … | |
t@@ -95,5 +88,13 @@ static Key key[] = { \ | |
{ MODKEY|ControlMask, XK_7, toggleview, … | |
{ MODKEY|ControlMask, XK_8, toggleview, … | |
{ MODKEY|ControlMask, XK_9, toggleview, … | |
- { MODKEY|ShiftMask, XK_q, quit, … | |
+ { MODKEY|ControlMask|ShiftMask, XK_1, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_2, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_3, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_4, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_5, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_6, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_7, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_8, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_9, toggletag,… | |
}; | |
diff --git a/config.default.h b/config.default.h | |
t@@ -14,7 +14,6 @@ | |
#define TOPBAR True /* False */ | |
/* behavior */ | |
-#define SNAP 20 /* pixel */ | |
#define TAGS \ | |
const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL }; | |
/* Query class:instance:title for regex matching info with following command: | |
t@@ -34,22 +33,36 @@ static Layout layout[] = { \ | |
{ "[]=", tile }, /* first entry is default */ \ | |
{ "><>", versatile }, \ | |
}; | |
-#define MASTER 600 /* per thousand */ | |
+#define MASTERWIDTH 600 /* master width per thou… | |
#define NMASTER 1 /* clients in master a… | |
+#define SNAP 20 /* versatile snap pixel … | |
/* key definitions */ | |
#define MODKEY Mod1Mask | |
#define KEYS \ | |
static Key key[] = { \ | |
/* modifier key function … | |
- { MODKEY|ShiftMask, XK_Return, spawn, … | |
- { MODKEY, XK_Tab, focusnext, … | |
- { MODKEY|ShiftMask, XK_Tab, focusprev, … | |
{ MODKEY, XK_Return, zoom, … | |
- { MODKEY, XK_g, resizemaster, … | |
- { MODKEY, XK_s, resizemaster, … | |
- { MODKEY, XK_i, incnmaster, … | |
+ { MODKEY, XK_space, setlayout, { … | |
+ { MODKEY, XK_0, view, … | |
+ { MODKEY, XK_1, view, … | |
+ { MODKEY, XK_2, view, … | |
+ { MODKEY, XK_3, view, … | |
+ { MODKEY, XK_4, view, … | |
+ { MODKEY, XK_5, view, … | |
+ { MODKEY, XK_6, view, … | |
+ { MODKEY, XK_7, view, … | |
+ { MODKEY, XK_8, view, … | |
+ { MODKEY, XK_9, view, … | |
{ MODKEY, XK_d, incnmaster, … | |
+ { MODKEY, XK_h, incmasterw, … | |
+ { MODKEY, XK_i, incnmaster, … | |
+ { MODKEY, XK_j, focusnext, … | |
+ { MODKEY, XK_k, focusprev, … | |
+ { MODKEY, XK_l, incmasterw, … | |
+ { MODKEY, XK_m, togglemax, … | |
+ { MODKEY|ShiftMask, XK_Return, spawn, … | |
+ { MODKEY|ShiftMask, XK_space, toggleversatile,{ … | |
{ MODKEY|ShiftMask, XK_0, tag, … | |
{ MODKEY|ShiftMask, XK_1, tag, … | |
{ MODKEY|ShiftMask, XK_2, tag, … | |
t@@ -60,28 +73,8 @@ static Key key[] = { \ | |
{ MODKEY|ShiftMask, XK_7, tag, … | |
{ MODKEY|ShiftMask, XK_8, tag, … | |
{ MODKEY|ShiftMask, XK_9, tag, … | |
- { MODKEY|ControlMask|ShiftMask, XK_1, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_2, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_3, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_4, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_5, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_6, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_7, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_8, toggletag,… | |
- { MODKEY|ControlMask|ShiftMask, XK_9, toggletag,… | |
{ MODKEY|ShiftMask, XK_c, killclient, … | |
- { MODKEY, XK_space, setlayout, { … | |
- { MODKEY|ShiftMask, XK_space, toggleversatile,{ … | |
- { MODKEY, XK_0, view, … | |
- { MODKEY, XK_1, view, … | |
- { MODKEY, XK_2, view, … | |
- { MODKEY, XK_3, view, … | |
- { MODKEY, XK_4, view, … | |
- { MODKEY, XK_5, view, … | |
- { MODKEY, XK_6, view, … | |
- { MODKEY, XK_7, view, … | |
- { MODKEY, XK_8, view, … | |
- { MODKEY, XK_9, view, … | |
+ { MODKEY|ShiftMask, XK_q, quit, … | |
{ MODKEY|ControlMask, XK_1, toggleview, … | |
{ MODKEY|ControlMask, XK_2, toggleview, … | |
{ MODKEY|ControlMask, XK_3, toggleview, … | |
t@@ -91,5 +84,13 @@ static Key key[] = { \ | |
{ MODKEY|ControlMask, XK_7, toggleview, … | |
{ MODKEY|ControlMask, XK_8, toggleview, … | |
{ MODKEY|ControlMask, XK_9, toggleview, … | |
- { MODKEY|ShiftMask, XK_q, quit, … | |
+ { MODKEY|ControlMask|ShiftMask, XK_1, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_2, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_3, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_4, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_5, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_6, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_7, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_8, toggletag,… | |
+ { MODKEY|ControlMask|ShiftMask, XK_9, toggletag,… | |
}; | |
diff --git a/dwm.1 b/dwm.1 | |
t@@ -60,19 +60,19 @@ click on a tag label adds/removes that tag to/from the foc… | |
Start | |
.BR xterm (1). | |
.TP | |
-.B Mod1-Tab | |
+.B Mod1-j | |
Focus next window. | |
.TP | |
-.B Mod1-Shift-Tab | |
+.B Mod1-k | |
Focus previous window. | |
.TP | |
.B Mod1-Return | |
-Zooms/cycles current window to/from master area (tiling layout), toggles maxim… | |
+Zooms/cycles current window to/from master area (tiling layout only). | |
.TP | |
-.B Mod1-g | |
+.B Mod1-l | |
Grow master area (tiling layout only). | |
.TP | |
-.B Mod1-s | |
+.B Mod1-h | |
Shrink master area (tiling layout only). | |
.TP | |
.B Mod1-i | |
t@@ -81,6 +81,9 @@ Increase the number of windows in the master area (tiling la… | |
.B Mod1-d | |
Decrease the number of windows in the master area (tiling layout only). | |
.TP | |
+.B Mod1-m | |
+Toggles maximization of current window (versatile layout only). | |
+.TP | |
.B Mod1-Shift-[1..n] | |
Apply | |
.RB nth | |
t@@ -124,7 +127,7 @@ Quit dwm. | |
Move current window while dragging (versatile layout only). | |
.TP | |
.B Mod1-Button2 | |
-Zooms/cycles current window to/from master area (tiling layout), toggles maxim… | |
+Zooms/cycles current window to/from master area (tiling layout only). | |
.TP | |
.B Mod1-Button3 | |
Resize current window while dragging (versatile layout only). | |
diff --git a/dwm.h b/dwm.h | |
t@@ -90,7 +90,6 @@ extern char stext[256]; /* st… | |
extern int screen, sx, sy, sw, sh; /* screen geometry */ | |
extern int wax, way, wah, waw; /* windowarea geometry */ | |
extern unsigned int bh, blw; /* bar height, bar layout … | |
-extern unsigned int master, nmaster; /* master percent, number … | |
extern unsigned int ntags, numlockmask; /* number of tags, dyna… | |
extern void (*handler[LASTEvent])(XEvent *); /* event handler */ | |
extern Atom wmatom[WMLast], netatom[NetLast]; | |
t@@ -105,15 +104,14 @@ extern Window root, barwin; | |
/* client.c */ | |
extern void configure(Client *c); /* send synthetic configure e… | |
extern void focus(Client *c); /* focus c, c may be NULL… | |
-extern void killclient(Arg *arg); /* kill c nicely */ | |
+extern void killclient(Arg arg); /* kill c nicely */ | |
extern void manage(Window w, XWindowAttributes *wa); /* manage new clie… | |
extern void resize(Client *c, int x, int y, | |
int w, int h, Bool sizehints); /* resize with given coo… | |
-extern void toggleversatile(Arg *arg); /* toggles focused clien… | |
+extern void toggleversatile(Arg arg); /* toggles focused client… | |
extern void updatesizehints(Client *c); /* update the size hint… | |
extern void updatetitle(Client *c); /* update the name of c */ | |
extern void unmanage(Client *c); /* destroy c */ | |
-extern void zoom(Arg *arg); /* zooms the focused client… | |
/* draw.c */ | |
extern void drawstatus(void); /* draw the bar */ | |
t@@ -125,18 +123,19 @@ extern unsigned int textw(const char *text); /* r… | |
extern void grabkeys(void); /* grab all keys defined in… | |
/* layout.c */ | |
-extern void focusnext(Arg *arg); /* focuses next visible client… | |
-extern void focusprev(Arg *arg); /* focuses previous visible cl… | |
-extern void incnmaster(Arg *arg); /* increments nmaster with ar… | |
+extern void focusnext(Arg arg); /* focuses next visible client,… | |
+extern void focusprev(Arg arg); /* focuses previous visible cli… | |
+extern void incmasterw(Arg arg); /* increments the master width… | |
+extern void incnmaster(Arg arg); /* increments nmaster with arg… | |
extern void initlayouts(void); /* initialize layout arr… | |
extern Client *nexttiled(Client *c); /* returns tiled successor… | |
-extern void resizemaster(Arg *arg); /* resizes the master perce… | |
extern void restack(void); /* restores z layers of all … | |
-extern void setlayout(Arg *arg); /* sets layout, -1 toggles */ | |
+extern void setlayout(Arg arg); /* sets layout, -1 toggles */ | |
+extern void togglemax(Arg arg); /* toggles maximization… | |
extern void versatile(void); /* arranges all windows ve… | |
/* main.c */ | |
-extern void quit(Arg *arg); /* quit dwm nicely */ | |
+extern void quit(Arg arg); /* quit dwm nicely */ | |
extern void sendevent(Window w, Atom a, long value); /* send synthetic … | |
extern int xerror(Display *dsply, XErrorEvent *ee); /* dwm's X error ha… | |
t@@ -144,13 +143,14 @@ extern int xerror(Display *dsply, XErrorEvent *ee); … | |
extern void compileregs(void); /* initialize regexps of… | |
extern Bool isvisible(Client *c); /* returns True if client is … | |
extern void settags(Client *c, Client *trans); /* sets tags of c */ | |
-extern void tag(Arg *arg); /* tags c with arg's index */ | |
-extern void toggletag(Arg *arg); /* toggles c tags with arg's i… | |
-extern void toggleview(Arg *arg); /* toggles the tag with arg's… | |
-extern void view(Arg *arg); /* views the tag with arg's… | |
+extern void tag(Arg arg); /* tags c with arg's index */ | |
+extern void toggletag(Arg arg); /* toggles c tags with arg's in… | |
+extern void toggleview(Arg arg); /* toggles the tag with arg's … | |
+extern void view(Arg arg); /* views the tag with arg's … | |
+extern void zoom(Arg arg); /* zooms the focused client … | |
/* util.c */ | |
extern void *emallocz(unsigned int size); /* allocates zero-initialized… | |
extern void eprint(const char *errstr, ...); /* prints errstr and exits… | |
-extern void spawn(Arg *arg); /* forks a new subprocess … | |
+extern void spawn(Arg arg); /* forks a new subprocess w… | |
diff --git a/event.c b/event.c | |
t@@ -11,7 +11,7 @@ | |
typedef struct { | |
unsigned long mod; | |
KeySym keysym; | |
- void (*func)(Arg *arg); | |
+ void (*func)(Arg arg); | |
Arg arg; | |
} Key; | |
t@@ -124,15 +124,15 @@ buttonpress(XEvent *e) { | |
if(ev->x < x) { | |
if(ev->button == Button1) { | |
if(ev->state & MODKEY) | |
- tag(&a); | |
+ tag(a); | |
else | |
- view(&a); | |
+ view(a); | |
} | |
else if(ev->button == Button3) { | |
if(ev->state & MODKEY) | |
- toggletag(&a); | |
+ toggletag(a); | |
else | |
- toggleview(&a); | |
+ toggleview(a); | |
} | |
return; | |
} | |
t@@ -141,15 +141,15 @@ buttonpress(XEvent *e) { | |
switch(ev->button) { | |
case Button1: | |
a.i = -1; | |
- setlayout(&a); | |
+ setlayout(a); | |
break; | |
case Button4: | |
a.i = 1; | |
- incnmaster(&a); | |
+ incnmaster(a); | |
break; | |
case Button5: | |
a.i = -1; | |
- incnmaster(&a); | |
+ incnmaster(a); | |
break; | |
} | |
} | |
t@@ -162,7 +162,7 @@ buttonpress(XEvent *e) { | |
movemouse(c); | |
} | |
else if(ev->button == Button2) | |
- zoom(NULL); | |
+ zoom(a); | |
else if(ev->button == Button3 | |
&& (lt->arrange == versatile || c->isversatile) && !c->isfixed) | |
{ | |
t@@ -261,7 +261,7 @@ keypress(XEvent *e) { | |
&& CLEANMASK(key[i].mod) == CLEANMASK(ev->state)) | |
{ | |
if(key[i].func) | |
- key[i].func(&key[i].arg); | |
+ key[i].func(key[i].arg); | |
} | |
} | |
diff --git a/layout.c b/layout.c | |
t@@ -3,14 +3,14 @@ | |
*/ | |
#include "dwm.h" | |
-unsigned int master = MASTER; | |
-unsigned int nmaster = NMASTER; | |
unsigned int blw = 0; | |
Layout *lt = NULL; | |
/* static */ | |
static unsigned int nlayouts = 0; | |
+static unsigned int masterw = MASTERWIDTH; | |
+static unsigned int nmaster = NMASTER; | |
static void | |
tile(void) { | |
t@@ -21,7 +21,7 @@ tile(void) { | |
n++; | |
/* window geoms */ | |
mh = (n > nmaster) ? wah / nmaster : wah / (n > 0 ? n : 1); | |
- mw = (n > nmaster) ? (waw * master) / 1000 : waw; | |
+ mw = (n > nmaster) ? (waw * masterw) / 1000 : waw; | |
th = (n > nmaster) ? wah / (n - nmaster) : 0; | |
tw = waw - mw; | |
t@@ -69,7 +69,7 @@ LAYOUTS | |
/* extern */ | |
void | |
-focusnext(Arg *arg) { | |
+focusnext(Arg arg) { | |
Client *c; | |
if(!sel) | |
t@@ -84,7 +84,7 @@ focusnext(Arg *arg) { | |
} | |
void | |
-focusprev(Arg *arg) { | |
+focusprev(Arg arg) { | |
Client *c; | |
if(!sel) | |
t@@ -101,11 +101,26 @@ focusprev(Arg *arg) { | |
} | |
void | |
-incnmaster(Arg *arg) { | |
- if((lt->arrange != tile) || (nmaster + arg->i < 1) | |
- || (wah / (nmaster + arg->i) <= 2 * BORDERPX)) | |
+incmasterw(Arg arg) { | |
+ if(lt->arrange != tile) | |
+ return; | |
+ if(arg.i == 0) | |
+ masterw = MASTERWIDTH; | |
+ else { | |
+ if(waw * (masterw + arg.i) / 1000 >= waw - 2 * BORDERPX | |
+ || waw * (masterw + arg.i) / 1000 <= 2 * BORDERPX) | |
+ return; | |
+ masterw += arg.i; | |
+ } | |
+ lt->arrange(); | |
+} | |
+ | |
+void | |
+incnmaster(Arg arg) { | |
+ if((lt->arrange != tile) || (nmaster + arg.i < 1) | |
+ || (wah / (nmaster + arg.i) <= 2 * BORDERPX)) | |
return; | |
- nmaster += arg->i; | |
+ nmaster += arg.i; | |
if(sel) | |
lt->arrange(); | |
else | |
t@@ -132,21 +147,6 @@ nexttiled(Client *c) { | |
} | |
void | |
-resizemaster(Arg *arg) { | |
- if(lt->arrange != tile) | |
- return; | |
- if(arg->i == 0) | |
- master = MASTER; | |
- else { | |
- if(waw * (master + arg->i) / 1000 >= waw - 2 * BORDERPX | |
- || waw * (master + arg->i) / 1000 <= 2 * BORDERPX) | |
- return; | |
- master += arg->i; | |
- } | |
- lt->arrange(); | |
-} | |
- | |
-void | |
restack(void) { | |
Client *c; | |
XEvent ev; | |
t@@ -170,10 +170,10 @@ restack(void) { | |
} | |
void | |
-setlayout(Arg *arg) { | |
+setlayout(Arg arg) { | |
unsigned int i; | |
- if(arg->i == -1) { | |
+ if(arg.i == -1) { | |
for(i = 0; i < nlayouts && lt != &layout[i]; i++); | |
if(i == nlayouts - 1) | |
lt = &layout[0]; | |
t@@ -181,9 +181,9 @@ setlayout(Arg *arg) { | |
lt = &layout[++i]; | |
} | |
else { | |
- if(arg->i < 0 || arg->i >= nlayouts) | |
+ if(arg.i < 0 || arg.i >= nlayouts) | |
return; | |
- lt = &layout[arg->i]; | |
+ lt = &layout[arg.i]; | |
} | |
if(sel) | |
lt->arrange(); | |
t@@ -192,6 +192,24 @@ setlayout(Arg *arg) { | |
} | |
void | |
+togglemax(Arg arg) { | |
+ XEvent ev; | |
+ | |
+ if(!sel || !sel->isversatile || sel->isfixed || lt->arrange != versati… | |
+ 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 * BORDERPX, wah - 2 * BORDERPX, … | |
+ } | |
+ else | |
+ resize(sel, sel->rx, sel->ry, sel->rw, sel->rh, True); | |
+ while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | |
+} | |
+ | |
+void | |
versatile(void) { | |
Client *c; | |
t@@ -213,3 +231,21 @@ versatile(void) { | |
} | |
restack(); | |
} | |
+ | |
+void | |
+zoom(Arg arg) { | |
+ unsigned int n; | |
+ Client *c; | |
+ | |
+ if(!sel || lt->arrange != tile || sel->isversatile) | |
+ 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); | |
+ attach(c); | |
+ focus(c); | |
+ lt->arrange(); | |
+} | |
diff --git a/main.c b/main.c | |
t@@ -236,7 +236,7 @@ sendevent(Window w, Atom a, long value) { | |
} | |
void | |
-quit(Arg *arg) { | |
+quit(Arg arg) { | |
readin = running = False; | |
} | |
diff --git a/tag.c b/tag.c | |
t@@ -102,49 +102,49 @@ settags(Client *c, Client *trans) { | |
} | |
void | |
-tag(Arg *arg) { | |
+tag(Arg arg) { | |
unsigned int i; | |
if(!sel) | |
return; | |
for(i = 0; i < ntags; i++) | |
- sel->tags[i] = (arg->i == -1) ? True : False; | |
- if(arg->i >= 0 && arg->i < ntags) | |
- sel->tags[arg->i] = True; | |
+ sel->tags[i] = (arg.i == -1) ? True : False; | |
+ if(arg.i >= 0 && arg.i < ntags) | |
+ sel->tags[arg.i] = True; | |
lt->arrange(); | |
} | |
void | |
-toggletag(Arg *arg) { | |
+toggletag(Arg arg) { | |
unsigned int i; | |
if(!sel) | |
return; | |
- sel->tags[arg->i] = !sel->tags[arg->i]; | |
+ 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; | |
+ sel->tags[arg.i] = True; | |
lt->arrange(); | |
} | |
void | |
-toggleview(Arg *arg) { | |
+toggleview(Arg arg) { | |
unsigned int i; | |
- seltag[arg->i] = !seltag[arg->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 */ | |
+ seltag[arg.i] = True; /* cannot toggle last view */ | |
lt->arrange(); | |
} | |
void | |
-view(Arg *arg) { | |
+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; | |
+ seltag[i] = (arg.i == -1) ? True : False; | |
+ if(arg.i >= 0 && arg.i < ntags) | |
+ seltag[arg.i] = True; | |
lt->arrange(); | |
} | |
diff --git a/util.c b/util.c | |
t@@ -30,12 +30,12 @@ eprint(const char *errstr, ...) { | |
} | |
void | |
-spawn(Arg *arg) { | |
+spawn(Arg arg) { | |
static char *shell = NULL; | |
if(!shell && !(shell = getenv("SHELL"))) | |
shell = "/bin/sh"; | |
- if(!arg->cmd) | |
+ if(!arg.cmd) | |
return; | |
/* The double-fork construct avoids zombie processes and keeps the code | |
* clean from stupid signal handlers. */ | |
t@@ -44,8 +44,8 @@ spawn(Arg *arg) { | |
if(dpy) | |
close(ConnectionNumber(dpy)); | |
setsid(); | |
- execl(shell, shell, "-c", arg->cmd, (char *)NULL); | |
- fprintf(stderr, "dwm: execl '%s -c %s'", shell, arg->c… | |
+ execl(shell, shell, "-c", arg.cmd, (char *)NULL); | |
+ fprintf(stderr, "dwm: execl '%s -c %s'", shell, arg.cm… | |
perror(" failed"); | |
} | |
exit(0); |