sites

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

commit 31c4d0abc8b74150b9f6a9c5fd66ead8d149e120
parent 0318dbb9a2c61ac0af6c2808842534cc47f58c87
Author: MLquest8 <miskuzius@gmail.com>
Date:   Sun, 14 Jun 2020 13:23:55 +0400

[dwm][PATCH] sizehints-ruled updated and working as intended

Diffstat:
Mdwm.suckless.org/patches/sizehints/dwm-sizehints-ruled-6.2.diff | 87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------
Mdwm.suckless.org/patches/sizehints/index.md | 3++-
2 files changed, 69 insertions(+), 21 deletions(-)

diff --git a/dwm.suckless.org/patches/sizehints/dwm-sizehints-ruled-6.2.diff b/dwm.suckless.org/patches/sizehints/dwm-sizehints-ruled-6.2.diff @@ -1,24 +1,73 @@ -From 0ddf28f0fa3285d7c75cb9493ce82075b7819564 Mon Sep 17 00:00:00 2001 +From c605c7f4c3f421ef5b6f12031b07abe713cd8183 Mon Sep 17 00:00:00 2001 From: MLquest8 <miskuzius@gmail.com> -Date: Fri, 12 Jun 2020 17:28:03 +0400 -Subject: [PATCH] sizehints version which obeys "isfloating" rule. Version 6.2 +Date: Sun, 14 Jun 2020 13:06:31 +0400 +Subject: [PATCH] resizehints-ruled. Modified to properly read the rules and + apply as needed. Behavior for clients that aren't found in rules struct is + remains the same. --- - dwm.c | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) + config.def.h | 2 ++ + dwm.c | 34 +++++++++++++++++++++++++++++++++- + 2 files changed, 35 insertions(+), 1 deletion(-) +diff --git a/config.def.h b/config.def.h +index 1c0b587..1d55286 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -29,6 +29,8 @@ static const Rule rules[] = { + /* class instance title tags mask isfloating monitor */ + { "Gimp", NULL, NULL, 0, 1, -1 }, + { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, ++ { "st", NULL, NULL, 0, 0, -1 }, ++ { "St", NULL, NULL, 0, 0, -1 }, /* if Xresources[st] is patched in */ + }; + + /* layout(s) */ diff --git a/dwm.c b/dwm.c -index 9fd0286..0205e29 100644 +index 9fd0286..f0f569e 100644 --- a/dwm.c +++ b/dwm.c -@@ -1947,12 +1947,14 @@ updatenumlockmask(void) +@@ -149,6 +149,7 @@ static void arrangemon(Monitor *m); + static void attach(Client *c); + static void attachstack(Client *c); + static void buttonpress(XEvent *e); ++static void checkfloatingrules(Client *c); + static void checkotherwm(void); + static void cleanup(void); + static void cleanupmon(Monitor *mon); +@@ -456,6 +457,31 @@ buttonpress(XEvent *e) + buttons[i].func(click == ClkTagBar && buttons[i].arg.i == 0 ? &arg : &buttons[i].arg); + } + ++void ++checkfloatingrules(Client *c) ++{ ++ const char *class, *instance; ++ unsigned int i; ++ const Rule *r; ++ XClassHint ch = { NULL, NULL }; ++ ++ XGetClassHint(dpy, c->win, &ch); ++ class = ch.res_class ? ch.res_class : broken; ++ instance = ch.res_name ? ch.res_name : broken; ++ ++ for (i = 0; i < LENGTH(rules); i++) { ++ r = &rules[i]; ++ if ((!r->title || strstr(c->name, r->title)) ++ && (!r->class || strstr(class, r->class)) ++ && (!r->instance || strstr(instance, r->instance))) ++ c->isfloating = r->isfloating; ++ } ++ if (ch.res_class) ++ XFree(ch.res_class); ++ if (ch.res_name) ++ XFree(ch.res_name); ++} ++ void - updatesizehints(Client *c) + checkotherwm(void) { -+ int i; - long msize; -+ const Rule *r; - XSizeHints size; +@@ -1952,7 +1978,7 @@ updatesizehints(Client *c) if (!XGetWMNormalHints(dpy, c->win, &size, &msize)) /* size is uninitialized, ensure that size.flags aren't used */ @@ -27,18 +76,16 @@ index 9fd0286..0205e29 100644 if (size.flags & PBaseSize) { c->basew = size.base_width; c->baseh = size.base_height; -@@ -1984,6 +1986,14 @@ updatesizehints(Client *c) +@@ -1984,6 +2010,12 @@ updatesizehints(Client *c) c->maxa = (float)size.max_aspect.x / size.max_aspect.y; } else c->maxa = c->mina = 0.0; -+ for (i = 0; i < LENGTH(rules); i++) { -+ r = &rules[i]; -+ if((size.flags & PSize) && (r->isfloating != 0)) { -+ c->basew = size.base_width; -+ c->baseh = size.base_height; -+ c->isfloating = True; -+ } ++ if(size.flags & PSize) { ++ c->basew = size.base_width; ++ c->baseh = size.base_height; ++ c->isfloating = 1; + } ++ checkfloatingrules(c); c->isfixed = (c->maxw && c->maxh && c->maxw == c->minw && c->maxh == c->minh); } diff --git a/dwm.suckless.org/patches/sizehints/index.md b/dwm.suckless.org/patches/sizehints/index.md @@ -22,7 +22,8 @@ There is no configuration for this version of the patch. Download -------- -* [dwm-sizehints-ruled-6.2.diff](dwm-sizehints-ruled-6.2.diff) (12/06/2020) +* [dwm-sizehints-ruled-6.2.diff](dwm-sizehints-ruled-6.2.diff) (14/06/2020) +* dwm-sizehints-ruled-6.2.diff (deprecated) (12/06/2020) * [dwm-sizehints-6.2.diff](dwm-sizehints-6.2.diff) (12/06/2020) * [dwm-sizehints-5.7.2.diff](dwm-sizehints-5.7.2.diff) (695B) (20091221)