sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 58abc0213b0e4b9a3e62bbdf83e9cd1288477472
parent b418122eafecdaa6d913424ca519ec75a62154c4
Author: Dhaval Patel <dhavalpatel32768@gmail.com>
Date:   Tue, 23 Jun 2020 12:46:36 +0530

added dwm patch aspectresize

Diffstat:
Adwm.suckless.org/patches/aspectresize/dwm-aspectresize-6.2.diff | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adwm.suckless.org/patches/aspectresize/index.md | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 110 insertions(+), 0 deletions(-)

diff --git a/dwm.suckless.org/patches/aspectresize/dwm-aspectresize-6.2.diff b/dwm.suckless.org/patches/aspectresize/dwm-aspectresize-6.2.diff @@ -0,0 +1,56 @@ +diff --git a/config.def.h b/config.def.h +index 1c0b587..2fcc30d 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -72,6 +72,8 @@ static Key keys[] = { + { MODKEY, XK_l, setmfact, {.f = +0.05} }, + { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, ++ { MODKEY|ShiftMask, XK_j, aspectresize, {.i = +24} }, ++ { MODKEY|ShiftMask, XK_k, aspectresize, {.i = -24} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} }, + { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, +diff --git a/dwm.c b/dwm.c +index 9fd0286..6a02119 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -146,6 +146,7 @@ static void applyrules(Client *c); + static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact); + static void arrange(Monitor *m); + static void arrangemon(Monitor *m); ++static void aspectresize(const Arg *arg); + static void attach(Client *c); + static void attachstack(Client *c); + static void buttonpress(XEvent *e); +@@ -400,6 +401,30 @@ arrangemon(Monitor *m) + m->lt[m->sellt]->arrange(m); + } + ++void ++aspectresize(const Arg *arg) { ++ /* only floating windows can be moved */ ++ Client *c; ++ c = selmon->sel; ++ float ratio; ++ int w, h,nw, nh; ++ ++ if (!c || !arg) ++ return; ++ if (selmon->lt[selmon->sellt]->arrange && !c->isfloating) ++ return; ++ ++ ratio = (float)c->w / (float)c->h; ++ h = arg->i; ++ w = (int)(ratio * h); ++ ++ nw = c->w + w; ++ nh = c->h + h; ++ ++ XRaiseWindow(dpy, c->win); ++ resize(c, c->x, c->y, nw, nh, True); ++} ++ + void + attach(Client *c) + { diff --git a/dwm.suckless.org/patches/aspectresize/index.md b/dwm.suckless.org/patches/aspectresize/index.md @@ -0,0 +1,54 @@ +aspectresize +========== + +Description +----------- +This patch you to resize the window with its aspect ratio remain constant, use +moveresize patch for manual resize. + +Usage +----- +1. Put the following `aspectresize()` function somewhere in your `dwm.c`, + **after** the line which includes the config.h file: + + void + aspectresize(const Arg *arg) { + /* only floating windows can be moved */ + Client *c; + c = selmon->sel; + float ratio; + int w, h,nw, nh; + + if (!c || !arg) + return; + if (selmon->lt[selmon->sellt]->arrange && !c->isfloating) + return; + + ratio = (float)c->w / (float)c->h; + h = arg->i; + w = (int)(ratio * h); + + nw = c->w + w; + nh = c->h + h; + + XRaiseWindow(dpy, c->win); + resize(c, c->x, c->y, nw, nh, True); + } + + +2. Add a aspectresize() function definition in dwm.c below the line: + static void aspectresize(const Arg *arg); + +3. You can use Mod+Shift+j to increase size and Mod+Shift+k to decrease the size of client + which respects client's aspect ratio: + + { MODKEY|ShiftMask, XK_j, aspectresize, {.i = +24} }, + { MODKEY|ShiftMask, XK_k, aspectresize, {.i = -24} }, + +Download +-------- +* [dwm-aspectresize-6.2.diff](dwm-aspectresize-6.2.diff) + +Authors +------- +* Dhaval Patel - <dhavalpatel32768@gmail.com>