aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe <bousset.rudy@gmail.com>2022-08-10 14:24:58 +0200
committerJoe <bousset.rudy@gmail.com>2022-08-10 14:24:58 +0200
commit87d2d299323eda454642617c71f4bd1517c5b5a0 (patch)
tree3377fa8cb56c6cb44c4f5817477d9be94c95eae5
parentdwm+picom transparency fix (diff)
downloaddwm-87d2d299323eda454642617c71f4bd1517c5b5a0.tar.gz
dwm-87d2d299323eda454642617c71f4bd1517c5b5a0.tar.bz2
dwm-87d2d299323eda454642617c71f4bd1517c5b5a0.tar.xz
dwm-87d2d299323eda454642617c71f4bd1517c5b5a0.tar.zst
dwm-87d2d299323eda454642617c71f4bd1517c5b5a0.zip
gaps update
-rw-r--r--.gitignore1
-rw-r--r--Makefile2
-rw-r--r--config.def.h224
-rw-r--r--config.h10
-rw-r--r--dwm.110
-rw-r--r--dwm.c33
6 files changed, 266 insertions, 14 deletions
diff --git a/.gitignore b/.gitignore
index 526caf4..0ebba21 100644
--- a/.gitignore
+++ b/.gitignore
@@ -124,7 +124,6 @@ flycheck_*.el
*.diff
*.o
-*.def.h
*.rej
*.orig
.ccls*
diff --git a/Makefile b/Makefile
index 77bcbc0..3c89802 100644
--- a/Makefile
+++ b/Makefile
@@ -19,7 +19,7 @@ options:
${OBJ}: config.h config.mk
-config.h:
+config.h: config.def.h
cp config.def.h $@
dwm: ${OBJ}
diff --git a/config.def.h b/config.def.h
new file mode 100644
index 0000000..a6c11c3
--- /dev/null
+++ b/config.def.h
@@ -0,0 +1,224 @@
+/* See LICENSE file for copyright and license details. */
+
+/* appearance */
+static const unsigned int borderpx = 3; /* border pixel of windows */
+static const unsigned int gappx = 0; /* gaps between windows */
+static const unsigned int snap = 32; /* snap pixel */
+static const int showbar = 0; /* 0 means no bar */
+static const int topbar = 1; /* 0 means bottom bar */
+static const int focusonwheel = 0;
+static const char *fonts[] = { "monospace:size=10" };
+static const char dmenufont[] = "monospace:size=10";
+static const char col_gray1[] = "#222222";
+static const char col_gray2[] = "#444444";
+static const char col_gray3[] = "#bbbbbb";
+static const char col_gray4[] = "#eeeeee";
+static const char col_cyan[] = "#9d2121";
+static const char *colors[][3] = {
+ /* fg bg border */
+ [SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
+ [SchemeSel] = { col_gray4, col_cyan, col_cyan },
+};
+
+/* 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 switchtotag, isfloating isfreesize monitor */
+ { "st", NULL, NULL, 0, 0, 0, 0, -1 },
+ { "St", NULL, NULL, 0, 0, 0, 0, -1 }, /* St with Xresources patch */
+ { "xterm-256color", NULL, NULL, 0, 0, 0, 0, -1 },
+ { "mpv", NULL, NULL, 0, 0, 0, 0, -1 },
+ { "Alacritty", NULL, NULL, 0, 0, 0, 0, -1 },
+ { "KeePass2", NULL, NULL, 0, 0, 1, 0, -1 },
+ { NULL, NULL, "Event Tester", 0, 0, 0, 0, -1 }, /* xev */
+};
+
+/* layout(s) */
+static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
+static const int nmaster = 1; /* number of clients in master area */
+static const int resizehints = 0; /* 1 means respect size hints in tiled resizals */
+static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
+
+static const Layout layouts[] = {
+ /* symbol arrange function */
+ { "[]=", tile }, /* first entry is default */
+ { "|M|", centeredmaster },
+ { ">M>", centeredfloatingmaster },
+ { "[M]", monocle },
+ { "><>", NULL }, /* no layout function means floating behavior */
+};
+
+/* key definitions */
+#define MODKEY Mod4Mask
+#define METAKEY Mod1Mask
+#define TAGKEYS(KEY,TAG) \
+ { MODKEY, KEY, view, {.ui = 1 << TAG} }, \
+ { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
+ { MODKEY|ControlMask, KEY, tagprevmon, {.ui = 1 << TAG} }, \
+ { MODKEY|ControlMask|ShiftMask, KEY, tagnextmon, {.ui = 1 << TAG} }, \
+ { MODKEY|METAKEY, KEY, toggletag, {.ui = 1 << TAG} }, \
+ { MODKEY|METAKEY|ControlMask, KEY, toggleview, {.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 *termcmd[] = { "alacritty", NULL };
+static const char *dmenucmd[] = { "dmenu_run", "-i", "-m", "0", NULL };
+static const char *dmpccmd[] = { "/home/jozan/.local/bin/dmpc", NULL };
+static const char *dmkillcmd[] = { "/home/jozan/.local/bin/dmkill", NULL };
+static const char *dmsearchcmd[] = { "/home/jozan/.local/bin/dmsearch", NULL };
+static const char *dmscrotcmd[] = { "/home/jozan/.local/bin/dmscrot", NULL };
+static const char *dmlogcmd[] = { "/home/jozan/.local/bin/dmlog", NULL };
+static const char *dmpassfullcmd[] = { "/home/jozan/.local/bin/dmpass", "--full", NULL };
+static const char *dmpasscmd[] = { "/home/jozan/.local/bin/dmpass", NULL };
+static const char *dmotpcmd[] = { "/home/jozan/.local/bin/dmotp", NULL };
+static const char *ndatecmd[] = { "/home/jozan/.local/bin/ndate", NULL };
+static const char *filecmd[] = { "alacritty", "-e", "zsh", "-ic", "lf", NULL };
+static const char *editcmd[] = { "emacsclient", "-c", NULL };
+static const char *browsercmd[] = { "iridium", "--force-dark-mode", NULL };
+static const char *torbrocmd[] = { "torify", "iridium", "--force-dark-mode", NULL };
+static const char *w3mcmd[] = { "alacritty", "-e", "w3m", "https://start.duckduckgo.com/", NULL };
+static const char *nbcmd[] = { "alacritty", "-e", "newsboat", NULL };
+static const char *ncmpccmd[] = { "alacritty", "-e", "ncmpc", NULL };
+static const char *calcmd[] = { "alacritty", "-e", "calcurse", "-C", "/home/jozan/.config/calcurse", "-D", "/home/jozan/.local/share/calcurse", NULL };
+static const char *sclicmd[] = { "alacritty", "-e", "scli", NULL };
+static const char *muttcmd[] = { "alacritty", "-e", "neomutt", NULL };
+static const char *gotopcmd[] = { "alacritty", "-e", "gotop", NULL };
+static const char *htopcmd[] = { "alacritty", "-e", "htop", NULL };
+static const char *topcmd[] = { "alacritty", "-e", "top", NULL };
+static const char *blinccmd[] = { "xbacklight", "-inc", "10", NULL };
+static const char *bldeccmd[] = { "xbacklight", "-dec", "10", NULL };
+static const char *voltogcmd[] = { "/home/jozan/.local/bin/mixer-set", "toggle", NULL };
+static const char *voldeccmd[] = { "/home/jozan/.local/bin/mixer-set", "lower", NULL };
+static const char *volinccmd[] = { "/home/jozan/.local/bin/mixer-set", "raise", NULL };
+static const char *miccmd[] = { "/home/jozan/.local/bin/mic", NULL };
+static const char *mpcprevcmd[] = { "mpc", "prev", NULL };
+static const char *mpcnextcmd[] = { "mpc", "next", NULL };
+static const char *mpctogcmd[] = { "mpc", "toggle", NULL };
+static const char *mpcstopcmd[] = { "mpc", "stop", NULL };
+static const char *killespeak[] = { "/home/jozan/.local/bin/shutup", NULL };
+
+#include "movestack.c"
+#include <X11/XF86keysym.h>
+static Key keys[] = {
+ /* modifier key function argument */
+ { MODKEY, XK_p, spawn, {.v = dmenucmd } },
+ { MODKEY, XK_Return, spawn, {.v = termcmd } },
+ { MODKEY, XK_F1, spawn, {.v = filecmd } },
+ { MODKEY, XK_F2, spawn, {.v = editcmd } },
+ { MODKEY, XK_F3, spawn, {.v = browsercmd } },
+ { MODKEY|ShiftMask, XK_F3, spawn, {.v = torbrocmd } },
+ { MODKEY, XK_F4, spawn, {.v = w3mcmd } },
+ { MODKEY, XK_F5, spawn, {.v = ncmpccmd } },
+ { MODKEY, XK_F6, spawn, {.v = nbcmd} },
+ { MODKEY, XK_F7, spawn, {.v = calcmd } },
+ { MODKEY, XK_F8, spawn, {.v = sclicmd } },
+ { MODKEY, XK_F9, spawn, {.v = muttcmd } },
+ { MODKEY, XK_F10, spawn, {.v = gotopcmd } },
+ { MODKEY, XK_F11, spawn, {.v = htopcmd } },
+ { MODKEY, XK_F12, spawn, {.v = topcmd } },
+ { MODKEY|ShiftMask, XK_F6, spawn, {.v = mpcprevcmd } },
+ { MODKEY|ShiftMask, XK_F7, spawn, {.v = mpctogcmd } },
+ { MODKEY|ShiftMask, XK_F8, spawn, {.v = mpcnextcmd } },
+ { MODKEY|ShiftMask, XK_F9, spawn, {.v = mpcstopcmd } },
+ { MODKEY|ShiftMask, XK_F10, spawn, {.v = voltogcmd } },
+ { MODKEY|ShiftMask, XK_F11, spawn, {.v = voldeccmd } },
+ { MODKEY|ShiftMask, XK_F12, spawn, {.v = volinccmd } },
+ { MODKEY|ShiftMask, XK_Delete, spawn, {.v = miccmd } },
+ { MODKEY|ControlMask, XK_F9, spawn, {.v = dmkillcmd } },
+ { MODKEY|ControlMask, XK_F10, spawn, {.v = dmscrotcmd } },
+ { MODKEY|ControlMask, XK_F11, spawn, {.v = dmsearchcmd } },
+ { MODKEY|ControlMask, XK_F12, spawn, {.v = dmlogcmd } },
+ { MODKEY|ControlMask, XK_BackSpace, spawn, {.v = dmlogcmd } },
+ { MODKEY, XK_BackSpace, spawn, {.v = dmpccmd } },
+ { MODKEY|ControlMask, XK_p, spawn, {.v = dmpasscmd } },
+ { MODKEY|ControlMask|ShiftMask, XK_p, spawn, {.v = dmpassfullcmd } },
+ { MODKEY|ControlMask, XK_o, spawn, {.v = dmotpcmd } },
+ { MODKEY, XK_End, spawn, {.v = ndatecmd } },
+ { 0, XF86XK_MonBrightnessUp, spawn, {.v = blinccmd } },
+ { 0, XF86XK_MonBrightnessDown, spawn, {.v = bldeccmd } },
+ { 0, XF86XK_AudioRaiseVolume, spawn, {.v = volinccmd } },
+ { 0, XF86XK_AudioLowerVolume, spawn, {.v = voldeccmd } },
+ { 0, XF86XK_AudioMute, spawn, {.v = voltogcmd } },
+ { 0, XF86XK_AudioMute, spawn, {.v = voltogcmd } },
+ { 0, XF86XK_AudioPlay, spawn, {.v = mpctogcmd } },
+ { 0, XF86XK_AudioPrev, spawn, {.v = mpcprevcmd } },
+ { 0, XF86XK_AudioNext, spawn, {.v = mpcnextcmd } },
+ { MODKEY, XK_Delete, spawn, {.v = killespeak } },
+ { 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|ControlMask, XK_a, incnmaster, {.i = +1 } },
+ { MODKEY|ControlMask, XK_x, incnmaster, {.i = -1 } },
+ { MODKEY|ShiftMask, XK_h, setmfact, {.f = -0.025} },
+ { MODKEY|ShiftMask, XK_l, setmfact, {.f = +0.025} },
+ { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } },
+ { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } },
+ { MODKEY|ShiftMask, XK_Return, zoom, {0} },
+ { METAKEY, XK_Escape, view, {0} },
+ { MODKEY, XK_q, killclient, {0} },
+ { MODKEY, XK_s, setlayout, {.v = &layouts[0]} }, /* tile */
+ { MODKEY, XK_c, setlayout, {.v = &layouts[1]} }, /* centeredmaster */
+ { MODKEY|ShiftMask, XK_c, setlayout, {.v = &layouts[2]} }, /* centeredfloatingmaster */
+ { MODKEY, XK_m, setlayout, {.v = &layouts[3]} }, /* monocle */
+ { MODKEY, XK_n, setlayout, {.v = &layouts[4]} }, /* floating */
+ { MODKEY|ShiftMask, XK_space, setlayout, {0} },
+ { MODKEY, XK_space, togglefloating, {0} },
+ { MODKEY, XK_f, togglefullscr, {0} },
+ { MODKEY, XK_bracketleft, focusmon, {.i = +1 } },
+ { MODKEY, XK_bracketright, focusmon, {.i = -1 } },
+ { MODKEY, XK_h, focusmon, {.i = +1 } },
+ { MODKEY, XK_l, focusmon, {.i = -1 } },
+ { MODKEY|ControlMask, XK_bracketleft, tagmon, {.i = +1 } },
+ { MODKEY|ControlMask, XK_bracketright, tagmon, {.i = -1 } },
+ { MODKEY|ControlMask, XK_h, tagmon, {.i = +1 } },
+ { MODKEY|ControlMask, XK_l, tagmon, {.i = -1 } },
+ { MODKEY|ControlMask, XK_bracketleft, focusmon, {.i = +1 } },
+ { MODKEY|ControlMask, XK_bracketright, focusmon, {.i = -1 } },
+ { MODKEY|ControlMask, XK_h, focusmon, {.i = +1 } },
+ { MODKEY|ControlMask, XK_l, focusmon, {.i = -1 } },
+ { MODKEY, XK_w, movemouse, {0} },
+ { MODKEY|ShiftMask, XK_w, resizemouse, {0} },
+ { 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)
+ 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, XK_0, view, {.ui = ~0 } },
+ { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
+ { MODKEY|ShiftMask, XK_e, 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.h b/config.h
index d2d0899..a6c11c3 100644
--- a/config.h
+++ b/config.h
@@ -1,7 +1,8 @@
/* See LICENSE file for copyright and license details. */
/* appearance */
-static const unsigned int borderpx = 2; /* border pixel of windows */
+static const unsigned int borderpx = 3; /* border pixel of windows */
+static const unsigned int gappx = 0; /* gaps between windows */
static const unsigned int snap = 32; /* snap pixel */
static const int showbar = 0; /* 0 means no bar */
static const int topbar = 1; /* 0 means bottom bar */
@@ -185,6 +186,11 @@ static Key keys[] = {
{ MODKEY|ControlMask, XK_bracketright, focusmon, {.i = -1 } },
{ MODKEY|ControlMask, XK_h, focusmon, {.i = +1 } },
{ MODKEY|ControlMask, XK_l, focusmon, {.i = -1 } },
+ { MODKEY, XK_w, movemouse, {0} },
+ { MODKEY|ShiftMask, XK_w, resizemouse, {0} },
+ { 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)
@@ -196,7 +202,7 @@ static Key keys[] = {
TAGKEYS( XK_9, 8)
{ MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
- { MODKEY|ShiftMask, XK_q, quit, {0} },
+ { MODKEY|ShiftMask, XK_e, quit, {0} },
};
/* button definitions */
diff --git a/dwm.1 b/dwm.1
index 3d310ac..d8b2f15 100644
--- a/dwm.1
+++ b/dwm.1
@@ -143,6 +143,16 @@ View all windows with any tag.
.B Mod1\-Control\-[1..n]
Add/remove all windows with nth tag to/from the view.
.TP
+.B Mod1\--
+Decrease the gaps around windows.
+.TP
+.B Mod1\-=
+Increase the gaps around windows.
+.TP
+.B Mod1\-Shift-=
+Reset the gaps around windows to
+.BR 0 .
+.TP
.B Mod1\-Shift\-q
Quit dwm.
.SS Mouse commands
diff --git a/dwm.c b/dwm.c
index 92e7c1e..c6912e4 100644
--- a/dwm.c
+++ b/dwm.c
@@ -123,6 +123,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];
@@ -207,6 +208,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);
@@ -689,6 +691,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);
@@ -1554,6 +1557,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)
{
if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
@@ -1769,18 +1782,18 @@ 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);
- if (my + HEIGHT(c) < m->wh)
- 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);
+ if (my + HEIGHT(c) + m->gappx < m->wh)
+ 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);
- if (ty + HEIGHT(c) < m->wh)
- 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);
+ if (ty + HEIGHT(c) + m->gappx < m->wh)
+ ty += HEIGHT(c) + m->gappx;
}
}