From a8c68fab702ec6a03b2b30f89aace483036d7790 Mon Sep 17 00:00:00 2001 From: lucy Date: Tue, 9 Jun 2026 12:29:38 +0200 Subject: [PATCH] add rule for discord --- config.def.h | 3 ++ config.def.h.orig | 135 ++++++++++++++++++++++++++++++++++++++++++++++ config.def.h.rej | 10 ++++ config.h | 4 +- dwm | Bin 74216 -> 74216 bytes dwm.c | 29 +++++++--- dwm.c.orig | 72 +++++++++++++++++++++++++ dwm.o | Bin 62920 -> 62992 bytes 8 files changed, 243 insertions(+), 10 deletions(-) create mode 100644 config.def.h.orig create mode 100644 config.def.h.rej diff --git a/config.def.h b/config.def.h index e69f288..fb6148f 100644 --- a/config.def.h +++ b/config.def.h @@ -104,6 +104,9 @@ static Key keys[] = { { MODKEY, XK_period, focusmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, + { MODKEY, XK_minus, setgaps, {.i = -1 } }, + { MODKEY, XK_equal, setgaps, {.i = +1 } }, + { MODKEY|ShiftMask, XK_equal, setgaps, {.i = 0 } }, TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) diff --git a/config.def.h.orig b/config.def.h.orig new file mode 100644 index 0000000..e69f288 --- /dev/null +++ b/config.def.h.orig @@ -0,0 +1,135 @@ +/* See LICENSE file for copyright and license details. */ + +/* appearance */ +static unsigned int borderpx = 1; /* border pixel of windows */ +static unsigned int snap = 32; /* snap pixel */ +static int showbar = 1; /* 0 means no bar */ +static int topbar = 1; /* 0 means bottom bar */ +static const char *fonts[] = { "monospace:size=10" }; +static const char dmenufont[] = "monospace:size=10"; +static char normbgcolor[] = "#222222"; +static char normbordercolor[] = "#444444"; +static char normfgcolor[] = "#bbbbbb"; +static char selfgcolor[] = "#eeeeee"; +static char selbordercolor[] = "#005577"; +static char selbgcolor[] = "#005577"; +static char *colors[][3] = { + /* fg bg border */ + [SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor }, + [SchemeSel] = { selfgcolor, selbgcolor, selbordercolor }, +}; + +/* tagging */ +static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; + +static const Rule rules[] = { + /* xprop(1): + * 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 }, +}; + +/* layout(s) */ +static float mfact = 0.55; /* factor of master area size [0.05..0.95] */ +static int nmaster = 1; /* number of clients in master area */ +static int resizehints = 1; /* 1 means respect size hints in tiled resizals */ + +static const Layout layouts[] = { + /* symbol arrange function */ + { "[]=", tile }, /* first entry is default */ + { "><>", NULL }, /* no layout function means floating behavior */ + { "[M]", monocle }, +}; + +/* key definitions */ +#define MODKEY Mod1Mask +#define TAGKEYS(KEY,TAG) \ + { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ + { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \ + { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \ + { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, + +/* helper for spawning shell commands in the pre dwm-5.0 fashion */ +#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } + +/* commands */ +static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ +static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbordercolor, "-sf", selfgcolor, NULL }; +static const char *termcmd[] = { "st", NULL }; + +/* + * Xresources preferences to load at startup + */ +ResourcePref resources[] = { + { "normbgcolor", STRING, &normbgcolor }, + { "normbordercolor", STRING, &normbordercolor }, + { "normfgcolor", STRING, &normfgcolor }, + { "selbgcolor", STRING, &selbgcolor }, + { "selbordercolor", STRING, &selbordercolor }, + { "selfgcolor", STRING, &selfgcolor }, + { "borderpx", INTEGER, &borderpx }, + { "snap", INTEGER, &snap }, + { "showbar", INTEGER, &showbar }, + { "topbar", INTEGER, &topbar }, + { "nmaster", INTEGER, &nmaster }, + { "resizehints", INTEGER, &resizehints }, + { "mfact", FLOAT, &mfact }, +}; + +static Key keys[] = { + /* modifier key function argument */ + { MODKEY, XK_p, spawn, {.v = dmenucmd } }, + { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, + { MODKEY, XK_b, togglebar, {0} }, + { MODKEY, XK_j, focusstack, {.i = +1 } }, + { MODKEY, XK_k, focusstack, {.i = -1 } }, + { MODKEY, XK_i, 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_c, killclient, {0} }, + { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, + { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_space, setlayout, {0} }, + { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, + { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, + { MODKEY, XK_comma, focusmon, {.i = -1 } }, + { MODKEY, XK_period, focusmon, {.i = +1 } }, + { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, + { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, + TAGKEYS( XK_1, 0) + TAGKEYS( XK_2, 1) + TAGKEYS( XK_3, 2) + TAGKEYS( XK_4, 3) + TAGKEYS( XK_5, 4) + TAGKEYS( XK_6, 5) + TAGKEYS( XK_7, 6) + TAGKEYS( XK_8, 7) + TAGKEYS( XK_9, 8) + { MODKEY|ShiftMask, XK_q, quit, {0} }, +}; + +/* button definitions */ +/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */ +static Button buttons[] = { + /* click event mask button function argument */ + { ClkLtSymbol, 0, Button1, setlayout, {0} }, + { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, + { ClkWinTitle, 0, Button2, zoom, {0} }, + { ClkStatusText, 0, Button2, spawn, {.v = termcmd } }, + { ClkClientWin, MODKEY, Button1, movemouse, {0} }, + { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, + { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, + { ClkTagBar, 0, Button1, view, {0} }, + { ClkTagBar, 0, Button3, toggleview, {0} }, + { ClkTagBar, MODKEY, Button1, tag, {0} }, + { ClkTagBar, MODKEY, Button3, toggletag, {0} }, +}; + diff --git a/config.def.h.rej b/config.def.h.rej new file mode 100644 index 0000000..73b6d43 --- /dev/null +++ b/config.def.h.rej @@ -0,0 +1,10 @@ +--- config.def.h ++++ config.def.h +@@ -2,6 +2,7 @@ + + /* appearance */ + static const unsigned int borderpx = 1; /* border pixel of windows */ ++static const unsigned int gappx = 5; /* gaps between 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 */ diff --git a/config.h b/config.h index 98e68da..c5ca55d 100644 --- a/config.h +++ b/config.h @@ -2,6 +2,7 @@ /* appearance */ static unsigned int borderpx = 1; /* border pixel of windows */ +static const unsigned int gappx = 10; /* gaps between windows */ static unsigned int snap = 32; /* snap pixel */ static int showbar = 1; /* 0 means no bar */ static int topbar = 1; /* 0 means bottom bar */ @@ -28,8 +29,7 @@ static const Rule rules[] = { * WM_NAME(STRING) = title */ /* class instance title tags mask isfloating monitor */ - { "Gimp", NULL, NULL, 0, 1, -1 }, - { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, + { "discord", NULL, NULL, 1 << 5, 0, -1 }, }; /* layout(s) */ diff --git a/dwm b/dwm index fb0c6645e6180fe72c802fc777016813e47d7475..7693b18349458090d101489af0beafb4477c437b 100755 GIT binary patch delta 14043 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
?PbIzp diff --git a/dwm.c b/dwm.c index d13337d..ed2a82b 100644 --- a/dwm.c +++ b/dwm.c @@ -122,6 +122,7 @@ struct Monitor { int by; /* bar geometry */ int mx, my, mw, mh; /* screen size */ int wx, wy, ww, wh; /* window area */ + int gappx; /* gaps between windows */ unsigned int seltags; unsigned int sellt; unsigned int tagset[2]; @@ -218,6 +219,7 @@ static void sendmon(Client *c, Monitor *m); static void setclientstate(Client *c, long state); static void setfocus(Client *c); static void setfullscreen(Client *c, int fullscreen); +static void setgaps(const Arg *arg); static void setlayout(const Arg *arg); static void setmfact(const Arg *arg); static void setup(void); @@ -674,6 +676,7 @@ createmon(void) m->nmaster = nmaster; m->showbar = showbar; m->topbar = topbar; + m->gappx = gappx; m->lt[0] = &layouts[0]; m->lt[1] = &layouts[1 % LENGTH(layouts)]; strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol); @@ -1620,6 +1623,16 @@ setfullscreen(Client *c, int fullscreen) } } +void +setgaps(const Arg *arg) +{ + if ((arg->i == 0) || (selmon->gappx + arg->i < 0)) + selmon->gappx = 0; + else + selmon->gappx += arg->i; + arrange(selmon); +} + void setlayout(const Arg *arg) { @@ -1806,16 +1819,16 @@ tile(Monitor *m) if (n > m->nmaster) mw = m->nmaster ? m->ww * m->mfact : 0; else - mw = m->ww; - for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) + mw = m->ww - m->gappx; + for (i = 0, my = ty = m->gappx, 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); + h = (m->wh - my) / (MIN(n, m->nmaster) - i) - m->gappx; + resize(c, m->wx + m->gappx, m->wy + my, mw - (2*c->bw) - m->gappx, h - (2*c->bw), 0); + my += HEIGHT(c) + m->gappx; } 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); + h = (m->wh - ty) / (n - i) - m->gappx; + resize(c, m->wx + mw + m->gappx, m->wy + ty, m->ww - mw - (2*c->bw) - 2*m->gappx, h - (2*c->bw), 0); + ty += HEIGHT(c) + m->gappx; } } diff --git a/dwm.c.orig b/dwm.c.orig index fc0c4ad..d13337d 100644 --- a/dwm.c.orig +++ b/dwm.c.orig @@ -37,6 +37,7 @@ #include #include #include +#include #ifdef XINERAMA #include #endif /* XINERAMA */ @@ -143,6 +144,19 @@ typedef struct { int monitor; } Rule; +/* Xresources preferences */ +enum resource_type { + STRING = 0, + INTEGER = 1, + FLOAT = 2 +}; + +typedef struct { + char *name; + enum resource_type type; + void *dst; +} ResourcePref; + /* function declarations */ static void applyrules(Client *c); static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact); @@ -238,6 +252,8 @@ static int xerror(Display *dpy, XErrorEvent *ee); static int xerrordummy(Display *dpy, XErrorEvent *ee); static int xerrorstart(Display *dpy, XErrorEvent *ee); static void zoom(const Arg *arg); +static void load_xresources(void); +static void resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *dst); /* variables */ static const char autostartblocksh[] = "autostart_blocking.sh"; @@ -2231,6 +2247,60 @@ zoom(const Arg *arg) pop(c); } +void +resource_load(XrmDatabase db, char *name, enum resource_type rtype, void *dst) +{ + char *sdst = NULL; + int *idst = NULL; + float *fdst = NULL; + + sdst = dst; + idst = dst; + fdst = dst; + + char fullname[256]; + char *type; + XrmValue ret; + + snprintf(fullname, sizeof(fullname), "%s.%s", "dwm", name); + fullname[sizeof(fullname) - 1] = '\0'; + + XrmGetResource(db, fullname, "*", &type, &ret); + if (!(ret.addr == NULL || strncmp("String", type, 64))) + { + switch (rtype) { + case STRING: + strcpy(sdst, ret.addr); + break; + case INTEGER: + *idst = strtoul(ret.addr, NULL, 10); + break; + case FLOAT: + *fdst = strtof(ret.addr, NULL); + break; + } + } +} + +void +load_xresources(void) +{ + Display *display; + char *resm; + XrmDatabase db; + ResourcePref *p; + + display = XOpenDisplay(NULL); + resm = XResourceManagerString(display); + if (!resm) + return; + + db = XrmGetStringDatabase(resm); + for (p = resources; p < resources + LENGTH(resources); p++) + resource_load(db, p->name, p->type, p->dst); + XCloseDisplay(display); +} + int main(int argc, char *argv[]) { @@ -2243,6 +2313,8 @@ main(int argc, char *argv[]) if (!(dpy = XOpenDisplay(NULL))) die("dwm: cannot open display"); checkotherwm(); + XrmInitialize(); + load_xresources(); setup(); #ifdef __OpenBSD__ if (pledge("stdio rpath proc exec", NULL) == -1) diff --git a/dwm.o b/dwm.o index 5ab4d987a26633d1aada4aba38f5f25d594ad71c..ebd97fe85c98e95389133b49b89e9cd005faf195 100644 GIT binary patch delta 14575 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