Hello.
I want to share my patch that I have been using for couple months that
simplifies reconfiguring of the dwm. It adds function to execute into
another executable, be it another build of dwm or another window manager.
I have following lines in `dwm.h':
static const char *dwmcmd[] = {"dwm", NULL };
static const Key keys[] = {
<...snip...>
{MODKEY | ShiftMask, XK_r, exec, {.v = dwmcmd}},
<...snip...>
Exec'ing loses manual window arrangement (window arrangement gets reset
to one according to `rules', but I don't need to restart X, which is
much more annoying.
I think usefulness/complexity ratio is good enough to include this patch
into dwm main release.
>From fa5f13e0c2e17de070968c335f47f5b123f39261 Mon Sep 17 00:00:00 2001
From: Dmitry Bogatov
Date: Wed, 22 Feb 2023 17:02:48 -0500
Subject: [PATCH] dwm: add support of execing into another window manager
---
dwm.c | 7 +++
1 file changed, 7 insertions(+)
diff --git a/dwm.c b/dwm.c
index 253aba7..1cd3396 100644
--- a/dwm.c
+++ b/dwm.c
@@ -207,6 +207,7 @@ static void seturgent(Client *c, int urg);
static void showhide(Client *c);
static void sigchld(int unused);
static void spawn(const Arg *arg);
+static void exec(const Arg *arg);
static void tag(const Arg *arg);
static void tagmon(const Arg *arg);
static void tile(Monitor *m);
@@ -1636,6 +1637,12 @@ sigchld(int unused)
while (0 < waitpid(-1, NULL, WNOHANG));
}
+void
+exec(const Arg *arg)
+{
+ execvp(((char **)arg->v)[0], (char **)arg->v);
+}
+
void
spawn(const Arg *arg)
{
--
If possible, please keep mailing list in CC. It is public.