diff options
| author | ProsperousPotato <ProsperousPotato@users.noreply.github.com> | 2026-01-16 18:46:12 +0000 |
|---|---|---|
| committer | ProsperousPotato <ProsperousPotato@users.noreply.github.com> | 2026-01-16 18:46:12 +0000 |
| commit | b743a893d2be4b4beeec450f8d40b16165d9ad61 (patch) | |
| tree | 92ec724709cf41098ea488962a4b221e7445f2ff | |
| parent | 1188395b98d187d08a663949a26fc1138125a895 (diff) | |
fix swapfocus with 2 windows, add setcfact
| -rw-r--r-- | config.h | 5 | ||||
| -rw-r--r-- | dwm.c | 28 |
2 files changed, 30 insertions, 3 deletions
@@ -8,7 +8,7 @@ /* appearance */ static const unsigned int borderpx = 2; /* border pixel of windows */ static const unsigned int snap = 12; /* snap pixel */ -static const int refreshrate = 60; +static const int refreshrate = 120; static const int swallowfloating = 1; /* 1 means swallow floating windows by default */ static const int mousedefault = 1; /* 1 means enable mouse by default */ static const char col_gray1[] = "#000000"; @@ -91,6 +91,9 @@ static const Key keys[] = { { MODKEY, XK_equal, incnmaster, {.i = -1 } }, { MODKEY, XK_h, setmfact, {.f = -0.02} }, { MODKEY, XK_l, setmfact, {.f = +0.02} }, + { MODKEY|ShiftMask, XK_h, setcfact, {.f = +0.10} }, + { MODKEY|ShiftMask, XK_l, setcfact, {.f = -0.10} }, + { MODKEY, XK_b, setcfact, {.f = 0.00} }, { MODKEYTWO, XK_Tab, zoom, {0} }, { MODKEY, XK_Tab, view, {0} }, { MODKEY, XK_q, killclient, {0} }, @@ -208,6 +208,7 @@ static void setclientstate(Client *c, long state); static void setfocus(Client *c); static void setfullscreen(Client *c, int fullscreen); static void setlayout(const Arg *arg); +static void setcfact(const Arg *arg); static void setmfact(const Arg *arg); static void setup(void); static void showhide(Client *c); @@ -1892,6 +1893,24 @@ setlayout(const Arg *arg) arrange(selmon); } +void +setcfact(const Arg *arg) { + float f; + Client *c; + + c = selmon->sel; + + if(!arg || !c || !selmon->lt[selmon->sellt]->arrange) + return; + f = arg->f + c->cfact; + if(arg->f == 0.0) + f = 1.0; + else if(f < 0.25 || f > 4.0) + return; + c->cfact = f; + arrange(selmon); +} + /* arg > 1.0 will set mfact absolutely */ void setmfact(const Arg *arg) @@ -2056,9 +2075,14 @@ spawn(const Arg *arg) void swapfocus() { + int n = 0; Client *c; - for(c = selmon->clients; c && c != prevclient; c = c->next) ; - if(c == prevclient) + for(c = selmon->clients; c && c != prevclient; c = c->next); + for(c = selmon->clients; c; c = c->next) if(ISVISIBLE(c)) n++;; + if(n == 2) { + Arg arg = {.i = +1}; + focusstack(&arg); + } else if(c == prevclient) focus(prevclient); XWarpPointer(dpy, None, selmon->sel->win, 0, 0, 0, 0, selmon->sel->w/2, selmon->sel->h/2); } |
