diff --git a/README b/README new file mode 100644 index 0000000..95d4fd0 --- /dev/null +++ b/README @@ -0,0 +1,48 @@ +dwm - dynamic window manager +============================ +dwm is an extremely fast, small, and dynamic window manager for X. + + +Requirements +------------ +In order to build dwm you need the Xlib header files. + + +Installation +------------ +Edit config.mk to match your local setup (dwm is installed into +the /usr/local namespace by default). + +Afterwards enter the following command to build and install dwm (if +necessary as root): + + make clean install + + +Running dwm +----------- +Add the following line to your .xinitrc to start dwm using startx: + + exec dwm + +In order to connect dwm to a specific display, make sure that +the DISPLAY environment variable is set correctly, e.g.: + + DISPLAY=foo.bar:1 exec dwm + +(This will start dwm on display :1 of the host foo.bar.) + +In order to display status info in the bar, you can do something +like this in your .xinitrc: + + while xsetroot -name "`date` `uptime | sed 's/.*,//'`" + do + sleep 1 + done & + exec dwm + + +Configuration +------------- +The configuration of dwm is done by creating a custom config.h +and (re)compiling the source code. diff --git a/README.md b/README.md deleted file mode 100644 index e9aa0ef..0000000 --- a/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# My fork of DWM -============================ - -dwm is an extremely fast, small, and dynamic window manager for X. - - -## Requirements ------------- -In order to build dwm you need the Xlib header files. - - -## Installation ------------- -Edit config.mk to match your local setup (dwm is installed into -the /usr/local namespace by default). - -Afterwards enter the following command to build and install dwm (if -necessary as root): - - make clean install - - or - - sudo make clean install - - -Running dwm ------------ -Add the following line to your .xinitrc to start dwm using startx: - - exec dwm - - or - - - while :; do - dwm || break - done - -Using the second method on this build means that you can reload DWM if you have recompiled it. To kill dwm in my fork press $MOD+x - by default in dwm the Mod key is Alt, however I have changed it to the Super Key. - -## My configuration -------------- -My configuration has three patches applied these are: -1. Rotate stack -2. Pertag -3. Centered -The diff files for the patches that I applied are in this repo under the patches directory. - -More information on patching can be found on the suckless website found [here](http://dwm.suckless.org/patches/) diff --git a/config.def.h b/config.def.h index 54fe0a8..71701d4 100644 --- a/config.def.h +++ b/config.def.h @@ -3,13 +3,10 @@ /* appearance */ static const unsigned int borderpx = 1; /* border pixel of windows */ static const unsigned int snap = 32; /* snap pixel */ -static const int showbar = 0; /* 0 means no bar */ +static const int showbar = 1; /* 0 means no bar */ static const int topbar = 1; /* 0 means bottom bar */ static const char *fonts[] = { "monospace:size=10" }; static const char dmenufont[] = "monospace:size=10"; -static const char col_white[] = "#FFFFFF"; -static const char col_green[] = "#00FF00"; -static const char col_black[] = "#000000"; static const char col_gray1[] = "#222222"; static const char col_gray2[] = "#444444"; static const char col_gray3[] = "#bbbbbb"; @@ -17,8 +14,8 @@ static const char col_gray4[] = "#eeeeee"; static const char col_cyan[] = "#005577"; static const char *colors[][3] = { /* fg bg border */ - [SchemeNorm] = { col_black, col_gray1, col_cyan }, - [SchemeSel] = { col_gray4, col_black, col_green }, + [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, + [SchemeSel] = { col_gray4, col_cyan, col_cyan }, }; /* tagging */ @@ -30,14 +27,14 @@ static const Rule rules[] = { * WM_NAME(STRING) = title */ /* class instance title tags mask isfloating monitor */ - { "stalonetray", NULL, NULL, 1 << 8 , 1, -1 }, - + { "Gimp", NULL, NULL, 0, 1, -1 }, + { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, }; /* layout(s) */ static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */ static const int nmaster = 1; /* number of clients in master area */ -static const int resizehints = 0; /* 1 means respect size hints in tiled resizals */ +static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */ static const Layout layouts[] = { /* symbol arrange function */ @@ -62,10 +59,6 @@ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() static const char *dmenucmd[] = { "dmenu_run", NULL }; static const char *termcmd[] = { "st", NULL }; -static const char *timecmd[] = { "notify_popinfo", NULL }; - - -#include "movestack.c" static Key keys[] = { /* modifier key function argument */ { MODKEY, XK_d, spawn, {.v = dmenucmd } }, @@ -73,15 +66,13 @@ static Key keys[] = { { MODKEY, XK_b, togglebar, {0} }, { MODKEY, XK_j, focusstack, {.i = +1 } }, { MODKEY, XK_k, focusstack, {.i = -1 } }, - { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } }, - { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } }, { MODKEY, XK_i, incnmaster, {.i = +1 } }, - { MODKEY, XK_o, incnmaster, {.i = -1 } }, + { MODKEY, XK_d, incnmaster, {.i = -1 } }, { MODKEY, XK_h, setmfact, {.f = -0.05} }, { MODKEY, XK_l, setmfact, {.f = +0.05} }, { MODKEY, XK_Return, zoom, {0} }, { MODKEY, XK_Tab, view, {0} }, - { MODKEY|ShiftMask, XK_q, killclient, {0} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} }, { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, @@ -102,8 +93,7 @@ static Key keys[] = { TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) - { MODKEY|ShiftMask, XK_x, quit, {0} }, - { MODKEY, XK_F1, spawn, {.v = timecmd } }, + { MODKEY|ShiftMask, XK_q, quit, {0} }, }; /* button definitions */ diff --git a/config.h b/config.h index d146ef6..6a41e32 100644 --- a/config.h +++ b/config.h @@ -1,15 +1,22 @@ /* See LICENSE file for copyright and license details. */ /* appearance */ -static const unsigned int borderpx = 1; /* border pixel of windows */ -static const unsigned int snap = 16; /* snap pixel */ -static const int showbar = 0; /* 0 means no bar */ +static const unsigned int borderpx = 0; /* border pixel of windows */ +static const unsigned int snap = 32; /* snap pixel */ +static const int showbar = 1; /* 0 means no bar */ static const int topbar = 1; /* 0 means bottom bar */ -static const char *fonts[] = { "Anonymous Pro:size=9" }; - -/* Pywal colors */ -#include "/home/regan/.cache/wal/colors-wal-dwm.h" - +static const char *fonts[] = { "monospace:size=10" }; +static const char dmenufont[] = "Inconsolata:size=10"; +static const char col_gray1[] = "#222222"; +static const char col_gray2[] = "#000000"; +static const char col_gray3[] = "#FFFFFF"; +static const char col_gray4[] = "#eeeeee"; +static const char col_cyan[] = "#222222"; +static const char *colors[][3] = { + /* fg bg border */ + [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, + [SchemeSel] = { col_gray4, col_cyan, col_cyan }, +}; /* tagging */ static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; @@ -19,22 +26,15 @@ static const Rule rules[] = { * WM_CLASS(STRING) = instance, class * WM_NAME(STRING) = title */ - /* class instance title tags mask iscentered isfloating monitor */ - { "stalonetray", NULL, NULL, 1 << 8, 1, 1, -1 }, - { "mpv", NULL, NULL, 0, 0, 1, -1 }, - { "st-256color", NULL, "pulsemixer", 0, 1, 1, -1 }, - { "st-256color", NULL, "ncmpcpp", 0, 1, 1, -1 }, - { "st-256color", NULL, "tmux", 0, 1, 1, -1 }, - { "st-256color", NULL, "htop", 0, 1, 1, -1 }, - { "st-256color", NULL, "newsboat", 0, 1, 1, -1 }, - { "st-256color", "floating", NULL, 0, 1, 1, -1 }, - + /* class instance title tags mask isfloating monitor */ + { "Gimp", NULL, NULL, 0, 1, -1 }, + { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, }; /* layout(s) */ static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */ static const int nmaster = 1; /* number of clients in master area */ -static const int resizehints = 0; /* 1 means respect size hints in tiled resizals */ +static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */ static const Layout layouts[] = { /* symbol arrange function */ @@ -59,6 +59,8 @@ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() static const char *dmenucmd[] = { "dmenu_run", NULL }; static const char *termcmd[] = { "st", NULL }; static const char *ftermcmd[] = { "st", "-n", "floating", NULL }; +static const char *brightup[] = { "xbacklight", "-inc", "10", NULL }; +static const char *brightdown[] = { "xbacklight", "-dec", "10", NULL }; static const char *webcmd[] = { "qutebrowser", NULL }; static const char *notcmd[] = { "notinfo", NULL }; @@ -80,7 +82,6 @@ static const char *nmcmd[] = { "st", "-e", "nmtui", NULL }; static const char *newscmd[] = { "st", "-e", "newsboat", NULL }; static const char *ytpcmd[] = { "st", "-n", "floating", "-e", "ytp", NULL }; -#include "movestack.c" static Key keys[] = { /* modifier key function argument */ { MODKEY, XK_d, spawn, {.v = dmenucmd } }, @@ -89,8 +90,6 @@ static Key keys[] = { { MODKEY, XK_b, togglebar, {0} }, { MODKEY, XK_j, focusstack, {.i = +1 } }, { MODKEY, XK_k, focusstack, {.i = -1 } }, - { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } }, - { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } }, { MODKEY, XK_i, incnmaster, {.i = +1 } }, { MODKEY, XK_o, incnmaster, {.i = -1 } }, { MODKEY, XK_h, setmfact, {.f = -0.05} }, @@ -138,7 +137,8 @@ static Key keys[] = { { MODKEY, XK_n, spawn, {.v = nmcmd } }, { MODKEY|ShiftMask, XK_n, spawn, {.v = newscmd } }, { MODKEY, XK_c, spawn, {.v = mutecmd } }, - { MODKEY, XK_slash, setcentered, {0} }, + { ControlMask, XK_k, spawn, {.v = brightup } }, + { ControlMask, XK_j, spawn, {.v = brightdown } }, }; /* button definitions */ diff --git a/drw.o b/drw.o index f8e85dd..58349c9 100644 Binary files a/drw.o and b/drw.o differ diff --git a/dwm b/dwm index 0fac398..82de355 100755 Binary files a/dwm and b/dwm differ diff --git a/dwm.c b/dwm.c index 4779d82..6474055 100644 --- a/dwm.c +++ b/dwm.c @@ -92,7 +92,7 @@ struct Client { int basew, baseh, incw, inch, maxw, maxh, minw, minh; int bw, oldbw; unsigned int tags; - int isfixed, iscentered, isfloating, isurgent, neverfocus, oldstate, isfullscreen; + int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen; Client *next; Client *snext; Monitor *mon; @@ -139,7 +139,6 @@ typedef struct { const char *instance; const char *title; unsigned int tags; - int iscentered; int isfloating; int monitor; } Rule; @@ -199,7 +198,6 @@ static void run(void); static void scan(void); static int sendevent(Client *c, Atom proto); static void sendmon(Client *c, Monitor *m); -static void setcentered(const Arg *arg); static void setclientstate(Client *c, long state); static void setfocus(Client *c); static void setfullscreen(Client *c, int fullscreen); @@ -310,7 +308,6 @@ applyrules(Client *c) && (!r->class || strstr(class, r->class)) && (!r->instance || strstr(instance, r->instance))) { - c->iscentered = r->iscentered; c->isfloating = r->isfloating; c->tags |= r->tags; for (m = mons; m && m->num != r->monitor; m = m->next); @@ -589,19 +586,6 @@ configurenotify(XEvent *e) } } -void -setcentered(const Arg *arg) -{ - if (!selmon->sel) - return; - selmon->sel->iscentered = !selmon->sel->isfixed; - if (selmon->sel->iscentered) { - selmon->sel->x = selmon->sel->mon->mx + (selmon->sel->mon->mw - WIDTH(selmon->sel)) / 2; - selmon->sel->y = selmon->sel->mon->my + (selmon->sel->mon->mh - HEIGHT(selmon->sel)) / 2; - } - arrange(selmon); -} - void configurerequest(XEvent *e) { @@ -825,7 +809,6 @@ expose(XEvent *e) void focus(Client *c) { - XWindowChanges wc; if (!c || !ISVISIBLE(c)) for (c = selmon->stack; c && !ISVISIBLE(c); c = c->snext); if (selmon->sel && selmon->sel != c) @@ -839,11 +822,6 @@ focus(Client *c) attachstack(c); grabbuttons(c, 1); XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); - if(!c->isfloating) { - wc.sibling = selmon->barwin; - wc.stack_mode = Below; - XConfigureWindow(dpy, c->win, CWSibling | CWStackMode, &wc); - } setfocus(c); } else { XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); @@ -1097,11 +1075,6 @@ manage(Window w, XWindowAttributes *wa) && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my); c->bw = borderpx; - if(c->iscentered) { - c->x = (c->mon->mw - WIDTH(c)) / 2; - c->y = (c->mon->mh - HEIGHT(c)) / 2; - } - wc.border_width = c->bw; XConfigureWindow(dpy, w, CWBorderWidth, &wc); XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel); @@ -1740,12 +1713,12 @@ tile(Monitor *m) for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) if (i < m->nmaster) { h = (m->wh - my) / (MIN(n, m->nmaster) - i); - resize(c, m->wx, m->wy + my, mw - c->bw, h - (2*c->bw), 0); - my += HEIGHT(c) - c->bw; + resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0); + my += HEIGHT(c); } else { h = (m->wh - ty) / (n - i); resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0); - ty += HEIGHT(c) - c->bw; + ty += HEIGHT(c); } } diff --git a/dwm.o b/dwm.o index 9c67d5a..0fc1b96 100644 Binary files a/dwm.o and b/dwm.o differ diff --git a/dwm_ b/dwm_ new file mode 100755 index 0000000..361fbb0 Binary files /dev/null and b/dwm_ differ diff --git a/movestack.c b/movestack.c deleted file mode 100644 index f193fa0..0000000 --- a/movestack.c +++ /dev/null @@ -1,50 +0,0 @@ -void -movestack(const Arg *arg) { - Client *c = NULL, *p = NULL, *pc = NULL, *i; - - if(arg->i > 0) { - /* find the client after selmon->sel */ - for(c = selmon->sel->next; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); - if(!c) - for(c = selmon->clients; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); - - } - else { - /* find the client before selmon->sel */ - for(i = selmon->clients; i != selmon->sel; i = i->next) - if(ISVISIBLE(i) && !i->isfloating) - c = i; - if(!c) - for(; i; i = i->next) - if(ISVISIBLE(i) && !i->isfloating) - c = i; - } - /* find the client before selmon->sel and c */ - for(i = selmon->clients; i && (!p || !pc); i = i->next) { - if(i->next == selmon->sel) - p = i; - if(i->next == c) - pc = i; - } - - /* swap c and selmon->sel selmon->clients in the selmon->clients list */ - if(c && c != selmon->sel) { - Client *temp = selmon->sel->next==c?selmon->sel:selmon->sel->next; - selmon->sel->next = c->next==selmon->sel?c:c->next; - c->next = temp; - - if(p && p != c) - p->next = c; - if(pc && pc != selmon->sel) - pc->next = selmon->sel; - - if(selmon->sel == selmon->clients) - selmon->clients = c; - else if(c == selmon->clients) - selmon->clients = selmon->sel; - - arrange(selmon); - } -} - - diff --git a/patches/dwm-center-6.1.diff b/patches/dwm-center-6.1.diff deleted file mode 100644 index b4a49e1..0000000 --- a/patches/dwm-center-6.1.diff +++ /dev/null @@ -1,58 +0,0 @@ -diff --git a/config.def.h b/config.def.h -index 7054c06..e0cdcf3 100644 ---- a/config.def.h -+++ b/config.def.h -@@ -24,9 +24,9 @@ static const Rule rules[] = { - * WM_CLASS(STRING) = instance, class - * WM_NAME(STRING) = title - */ -- /* class instance title tags mask isfloating monitor */ -- { "Gimp", NULL, NULL, 0, 1, -1 }, -- { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, -+ /* class instance title tags mask iscentered isfloating monitor */ -+ { "Gimp", NULL, NULL, 0, 0, 1, -1 }, -+ { "Firefox", NULL, NULL, 1 << 8, 0, 0, -1 }, - }; - - /* layout(s) */ -diff --git a/dwm.c b/dwm.c -index 0362114..4aaaa60 100644 ---- a/dwm.c -+++ b/dwm.c -@@ -92,7 +92,7 @@ struct Client { - int basew, baseh, incw, inch, maxw, maxh, minw, minh; - int bw, oldbw; - unsigned int tags; -- int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen; -+ int isfixed, iscentered, isfloating, isurgent, neverfocus, oldstate, isfullscreen; - Client *next; - Client *snext; - Monitor *mon; -@@ -137,6 +137,7 @@ typedef struct { - const char *instance; - const char *title; - unsigned int tags; -+ int iscentered; - int isfloating; - int monitor; - } Rule; -@@ -296,6 +297,7 @@ applyrules(Client *c) - && (!r->class || strstr(class, r->class)) - && (!r->instance || strstr(instance, r->instance))) - { -+ c->iscentered = r->iscentered; - c->isfloating = r->isfloating; - c->tags |= r->tags; - for (m = mons; m && m->num != r->monitor; m = m->next); -@@ -1063,6 +1065,11 @@ manage(Window w, XWindowAttributes *wa) - && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my); - c->bw = borderpx; - -+ if(c->iscentered) { -+ c->x = (c->mon->mw - WIDTH(c)) / 2; -+ c->y = (c->mon->mh - HEIGHT(c)) / 2; -+ } -+ - wc.border_width = c->bw; - XConfigureWindow(dpy, w, CWBorderWidth, &wc); - XSetWindowBorder(dpy, w, scheme[SchemeNorm].border->pix); diff --git a/patches/dwm-movestack-6.1.diff b/patches/dwm-movestack-6.1.diff deleted file mode 100644 index a6c83fa..0000000 --- a/patches/dwm-movestack-6.1.diff +++ /dev/null @@ -1,73 +0,0 @@ -diff -r 050d521d66d8 config.def.h ---- a/config.def.h Tue Aug 24 13:13:20 2010 +0100 -+++ b/config.def.h Sun Sep 05 18:43:07 2010 +0200 -@@ -57,6 +57,7 @@ - static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL }; - static const char *termcmd[] = { "st", NULL }; - -+#include "movestack.c" - static Key keys[] = { - /* modifier key function argument */ - { MODKEY, XK_p, spawn, {.v = dmenucmd } }, -@@ -68,6 +69,8 @@ - { MODKEY, XK_d, incnmaster, {.i = -1 } }, - { MODKEY, XK_h, setmfact, {.f = -0.05} }, - { MODKEY, XK_l, setmfact, {.f = +0.05} }, -+ { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } }, -+ { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } }, - { MODKEY, XK_Return, zoom, {0} }, - { MODKEY, XK_Tab, view, {0} }, - { MODKEY|ShiftMask, XK_c, killclient, {0} }, -diff -r 050d521d66d8 movestack.c ---- /dev/null Thu Jan 01 00:00:00 1970 +0000 -+++ b/movestack.c Sun Sep 05 18:43:07 2010 +0200 -@@ -0,0 +1,49 @@ -+void -+movestack(const Arg *arg) { -+ Client *c = NULL, *p = NULL, *pc = NULL, *i; -+ -+ if(arg->i > 0) { -+ /* find the client after selmon->sel */ -+ for(c = selmon->sel->next; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); -+ if(!c) -+ for(c = selmon->clients; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); -+ -+ } -+ else { -+ /* find the client before selmon->sel */ -+ for(i = selmon->clients; i != selmon->sel; i = i->next) -+ if(ISVISIBLE(i) && !i->isfloating) -+ c = i; -+ if(!c) -+ for(; i; i = i->next) -+ if(ISVISIBLE(i) && !i->isfloating) -+ c = i; -+ } -+ /* find the client before selmon->sel and c */ -+ for(i = selmon->clients; i && (!p || !pc); i = i->next) { -+ if(i->next == selmon->sel) -+ p = i; -+ if(i->next == c) -+ pc = i; -+ } -+ -+ /* swap c and selmon->sel selmon->clients in the selmon->clients list */ -+ if(c && c != selmon->sel) { -+ Client *temp = selmon->sel->next==c?selmon->sel:selmon->sel->next; -+ selmon->sel->next = c->next==selmon->sel?c:c->next; -+ c->next = temp; -+ -+ if(p && p != c) -+ p->next = c; -+ if(pc && pc != selmon->sel) -+ pc->next = selmon->sel; -+ -+ if(selmon->sel == selmon->clients) -+ selmon->clients = c; -+ else if(c == selmon->clients) -+ selmon->clients = selmon->sel; -+ -+ arrange(selmon); -+ } -+} -+ diff --git a/patches/dwm_single_borders.diff b/patches/dwm_single_borders.diff deleted file mode 100644 index 8ef41ae..0000000 --- a/patches/dwm_single_borders.diff +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/dwm.c b/dwm.c -index 4465af1..84f8fec 100644 ---- a/dwm.c -+++ b/dwm.c -@@ -783,6 +783,7 @@ expose(XEvent *e) - void - focus(Client *c) - { -+ XWindowChanges wc; - if (!c || !ISVISIBLE(c)) - for (c = selmon->stack; c && !ISVISIBLE(c); c = c->snext); - if (selmon->sel && selmon->sel != c) -@@ -796,6 +797,11 @@ focus(Client *c) - attachstack(c); - grabbuttons(c, 1); - XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); -+ if(!c->isfloating) { -+ wc.sibling = selmon->barwin; -+ wc.stack_mode = Below; -+ XConfigureWindow(dpy, c->win, CWSibling | CWStackMode, &wc); -+ } - setfocus(c); - } else { - XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); -@@ -1687,12 +1693,12 @@ tile(Monitor *m) - for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) - if (i < m->nmaster) { - h = (m->wh - my) / (MIN(n, m->nmaster) - i); -- resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0); -- my += HEIGHT(c); -+ resize(c, m->wx, m->wy + my, mw - c->bw, h - (2*c->bw), 0); -+ my += HEIGHT(c) - c->bw; - } else { - h = (m->wh - ty) / (n - i); - resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0); -- ty += HEIGHT(c); -+ ty += HEIGHT(c) - c->bw; - } - } - diff --git a/util.o b/util.o index 569f5c4..12c3b0a 100644 Binary files a/util.o and b/util.o differ