sites

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

commit 743240a5b9a388c950f57dceb185484da394fe3c
parent 67dfe195cffe7785a9d2985770541e08dd4a9294
Author: MLquest8 <miskuzius@gmail.com>
Date:   Sat, 20 Jun 2020 16:10:04 +0400

[dwm][PATCH] added sizehints-isfreesize for 6.2.

Diffstat:
Adwm.suckless.org/patches/sizehints/dwm-sizehints-isfreesize-6.2.diff | 103+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdwm.suckless.org/patches/sizehints/index.md | 11+++++++----
2 files changed, 110 insertions(+), 4 deletions(-)

diff --git a/dwm.suckless.org/patches/sizehints/dwm-sizehints-isfreesize-6.2.diff b/dwm.suckless.org/patches/sizehints/dwm-sizehints-isfreesize-6.2.diff @@ -0,0 +1,103 @@ +From 5d4e92801206d47090236498d35f199e46dd07f6 Mon Sep 17 00:00:00 2001 +From: MLquest8 <miskuzius@gmail.com> +Date: Sat, 20 Jun 2020 15:40:43 +0400 +Subject: [PATCH] sizehints-ruled now with a separate rule "isfreesize" and + cleaner code. + +--- + config.def.h | 8 +++++--- + dwm.c | 16 +++++++++++++--- + 2 files changed, 18 insertions(+), 6 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 1c0b587..0e4a5ea 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -26,9 +26,11 @@ 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 isfloating isfreesize monitor */ ++ { "Gimp", NULL, NULL, 0, 1, 1, -1 }, ++ { "Firefox", NULL, NULL, 1 << 8, 0, 0, -1 }, ++ { "st", NULL, NULL, 0, 0, 0, -1 }, ++ { "St", NULL, NULL, 0, 0, 0, -1 }, /* St with Xresources patch */ + }; + + /* layout(s) */ +diff --git a/dwm.c b/dwm.c +index 9fd0286..73825d1 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, isfloating, isfreesize, isurgent, neverfocus, oldstate, isfullscreen; + Client *next; + Client *snext; + Monitor *mon; +@@ -138,6 +138,7 @@ typedef struct { + const char *title; + unsigned int tags; + int isfloating; ++ int isfreesize; + int monitor; + } Rule; + +@@ -287,6 +288,7 @@ applyrules(Client *c) + + /* rule matching */ + c->isfloating = 0; ++ c->isfreesize = 1; + c->tags = 0; + XGetClassHint(dpy, c->win, &ch); + class = ch.res_class ? ch.res_class : broken; +@@ -299,6 +301,7 @@ applyrules(Client *c) + && (!r->instance || strstr(instance, r->instance))) + { + c->isfloating = r->isfloating; ++ c->isfreesize = r->isfreesize; + c->tags |= r->tags; + for (m = mons; m && m->num != r->monitor; m = m->next); + if (m) +@@ -1952,7 +1955,7 @@ updatesizehints(Client *c) + + if (!XGetWMNormalHints(dpy, c->win, &size, &msize)) + /* size is uninitialized, ensure that size.flags aren't used */ +- size.flags = PSize; ++ size.flags = 0; + if (size.flags & PBaseSize) { + c->basew = size.base_width; + c->baseh = size.base_height; +@@ -1984,6 +1987,11 @@ updatesizehints(Client *c) + c->maxa = (float)size.max_aspect.x / size.max_aspect.y; + } else + c->maxa = c->mina = 0.0; ++ if((size.flags & PSize) && c->isfreesize) { ++ c->basew = size.base_width; ++ c->baseh = size.base_height; ++ c->isfloating = 1; ++ } + c->isfixed = (c->maxw && c->maxh && c->maxw == c->minw && c->maxh == c->minh); + } + +@@ -2012,8 +2020,10 @@ updatewindowtype(Client *c) + + if (state == netatom[NetWMFullscreen]) + setfullscreen(c, 1); +- if (wtype == netatom[NetWMWindowTypeDialog]) ++ if (wtype == netatom[NetWMWindowTypeDialog]) { + c->isfloating = 1; ++ c->isfreesize = 1; ++ } + } + + void +-- +2.26.2 + diff --git a/dwm.suckless.org/patches/sizehints/index.md b/dwm.suckless.org/patches/sizehints/index.md @@ -10,8 +10,11 @@ windows freely - only the initial state is affected. Ruled ----- -Ruled version is essentially the same patch except it obeys `isfloating` rule -if it is available in `config.h` for the given client. +This version adds `isfreesize` rule to config which if set to 1 will enable +the functionality of the patch. If rules for the given client aren't set in +config dwm will set it to `1` and the client will benefit from `isfreesize` +rule if it has specific initial size requirements. +`isfreesize` rule overrides `isfloating` rule in config. Vanilla ------- @@ -22,8 +25,8 @@ There is no configuration for this version of the patch. Download -------- -* [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-isfreesize-6.2.diff](dwm-sizehints-isfreesize-6.2.diff) (20/06/2020) +* [dwm-sizehints-ruled-6.2.diff](dwm-sizehints-ruled-6.2.diff) (deprecated) (14/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)