From 80b6c6e155f821208c3e70fc169aa305bea3267e Mon Sep 17 00:00:00 2001 From: candifloss Date: Fri, 17 Jan 2025 12:00:43 +0530 Subject: [PATCH] Autostart patch --- config.def.h | 6 + config.h | 6 + dwm | Bin 71104 -> 71320 bytes dwm.c | 57 +++++++- .../dwm-cool-autostart-20240312-9f88553.diff | 133 ++++++++++++++++++ 5 files changed, 201 insertions(+), 1 deletion(-) create mode 100644 patches/dwm-cool-autostart-20240312-9f88553.diff diff --git a/config.def.h b/config.def.h index 9efa774..03d9d1e 100644 --- a/config.def.h +++ b/config.def.h @@ -18,6 +18,12 @@ static const char *colors[][3] = { [SchemeSel] = { col_gray4, col_cyan, col_cyan }, }; +static const char *const autostart[] = { + "feh", "--bg-fill", "~/Pictures/Wallpaper/wp3.jpg", NULL, + "vonal", "&", NULL, + NULL /* terminate */ +}; + /* tagging */ static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; diff --git a/config.h b/config.h index 3926574..d1d6138 100644 --- a/config.h +++ b/config.h @@ -21,6 +21,12 @@ static const char *colors[][3] = { [SchemeSel] = { col_gray4, "#232323", col_border_focused }, }; +static const char *const autostart[] = { + "feh", "--bg-fill", "~/Pictures/Wallpapers/wp_ubuntu_1.jpg", "&", NULL, + "vonal", "&", NULL, + NULL /* terminate */ +}; + /* tagging */ static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; diff --git a/dwm b/dwm index 0b250ce1a6b011af9e8ad806b391d48cc438332c..ab47de1d470c899741341d32810d53245cc1b0b4 100755 GIT binary patch delta 27146 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 W|IsDWO0t6tUDaH_l9z%Ek^c|GpI6!d delta 25940 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 31 ? -1 : 1]; }; +/* dwm will keep pid's of processes from autostart array and kill them at quit */ +static pid_t *autostart_pids; +static size_t autostart_len; + +/* execute command from autostart array */ +static void +autostart_exec() { + const char *const *p; + size_t i = 0; + + /* count entries */ + for (p = autostart; *p; autostart_len++, p++) + while (*++p); + + autostart_pids = malloc(autostart_len * sizeof(pid_t)); + for (p = autostart; *p; i++, p++) { + if ((autostart_pids[i] = fork()) == 0) { + setsid(); + execvp(*p, (char *const *)p); + fprintf(stderr, "dwm: execvp %s\n", *p); + perror(" failed"); + _exit(EXIT_FAILURE); + } + /* skip arguments */ + while (*++p); + } +} + /* function implementations */ void applyrules(Client *c) @@ -1258,6 +1287,16 @@ propertynotify(XEvent *e) void quit(const Arg *arg) { + size_t i; + + /* kill child processes */ + for (i = 0; i < autostart_len; i++) { + if (0 < autostart_pids[i]) { + kill(autostart_pids[i], SIGTERM); + waitpid(autostart_pids[i], NULL, 0); + } + } + running = 0; } @@ -1540,6 +1579,7 @@ void setup(void) { int i; + pid_t pid; XSetWindowAttributes wa; Atom utf8string; struct sigaction sa; @@ -1551,7 +1591,21 @@ setup(void) sigaction(SIGCHLD, &sa, NULL); /* clean up any zombies (inherited from .xinitrc etc) immediately */ - while (waitpid(-1, NULL, WNOHANG) > 0); + while ((pid = waitpid(-1, NULL, WNOHANG)) > 0) { + pid_t *p, *lim; + + if (!(p = autostart_pids)) + continue; + lim = &p[autostart_len]; + + for (; p < lim; p++) { + if (*p == pid) { + *p = -1; + break; + } + } + + } /* init screen */ screen = DefaultScreen(dpy); @@ -2152,6 +2206,7 @@ main(int argc, char *argv[]) if (!(dpy = XOpenDisplay(NULL))) die("dwm: cannot open display"); checkotherwm(); + autostart_exec(); setup(); #ifdef __OpenBSD__ if (pledge("stdio rpath proc exec", NULL) == -1) diff --git a/patches/dwm-cool-autostart-20240312-9f88553.diff b/patches/dwm-cool-autostart-20240312-9f88553.diff new file mode 100644 index 0000000..b0890d9 --- /dev/null +++ b/patches/dwm-cool-autostart-20240312-9f88553.diff @@ -0,0 +1,133 @@ +From feeaa839d2c6c1d0e66649cb64c4added563d4e4 Mon Sep 17 00:00:00 2001 +From: Son Phan Trung +Date: Tue, 12 Mar 2024 18:37:32 +0700 +Subject: [PATCH] patches/cool-autostart: Update patch + +Updated for the removal of the sigchld() function. +--- + config.def.h | 5 +++++ + dwm.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 61 insertions(+), 1 deletion(-) + +diff --git a/config.def.h b/config.def.h +index 9efa774..aba210d 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -18,6 +18,11 @@ static const char *colors[][3] = { + [SchemeSel] = { col_gray4, col_cyan, col_cyan }, + }; + ++static const char *const autostart[] = { ++ "st", NULL, ++ NULL /* terminate */ ++}; ++ + /* tagging */ + static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; + +diff --git a/dwm.c b/dwm.c +index f1d86b2..c2eb07d 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -233,6 +233,7 @@ 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 autostart_exec(void); + + /* variables */ + static const char broken[] = "broken"; +@@ -274,6 +275,34 @@ static Window root, wmcheckwin; + /* compile-time check if all tags fit into an unsigned int bit array. */ + struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; }; + ++/* dwm will keep pid's of processes from autostart array and kill them at quit */ ++static pid_t *autostart_pids; ++static size_t autostart_len; ++ ++/* execute command from autostart array */ ++static void ++autostart_exec() { ++ const char *const *p; ++ size_t i = 0; ++ ++ /* count entries */ ++ for (p = autostart; *p; autostart_len++, p++) ++ while (*++p); ++ ++ autostart_pids = malloc(autostart_len * sizeof(pid_t)); ++ for (p = autostart; *p; i++, p++) { ++ if ((autostart_pids[i] = fork()) == 0) { ++ setsid(); ++ execvp(*p, (char *const *)p); ++ fprintf(stderr, "dwm: execvp %s\n", *p); ++ perror(" failed"); ++ _exit(EXIT_FAILURE); ++ } ++ /* skip arguments */ ++ while (*++p); ++ } ++} ++ + /* function implementations */ + void + applyrules(Client *c) +@@ -1258,6 +1287,16 @@ propertynotify(XEvent *e) + void + quit(const Arg *arg) + { ++ size_t i; ++ ++ /* kill child processes */ ++ for (i = 0; i < autostart_len; i++) { ++ if (0 < autostart_pids[i]) { ++ kill(autostart_pids[i], SIGTERM); ++ waitpid(autostart_pids[i], NULL, 0); ++ } ++ } ++ + running = 0; + } + +@@ -1540,6 +1579,7 @@ void + setup(void) + { + int i; ++ pid_t pid; + XSetWindowAttributes wa; + Atom utf8string; + struct sigaction sa; +@@ -1551,7 +1591,21 @@ setup(void) + sigaction(SIGCHLD, &sa, NULL); + + /* clean up any zombies (inherited from .xinitrc etc) immediately */ +- while (waitpid(-1, NULL, WNOHANG) > 0); ++ while ((pid = waitpid(-1, NULL, WNOHANG)) > 0) { ++ pid_t *p, *lim; ++ ++ if (!(p = autostart_pids)) ++ continue; ++ lim = &p[autostart_len]; ++ ++ for (; p < lim; p++) { ++ if (*p == pid) { ++ *p = -1; ++ break; ++ } ++ } ++ ++ } + + /* init screen */ + screen = DefaultScreen(dpy); +@@ -2152,6 +2206,7 @@ main(int argc, char *argv[]) + if (!(dpy = XOpenDisplay(NULL))) + die("dwm: cannot open display"); + checkotherwm(); ++ autostart_exec(); + setup(); + #ifdef __OpenBSD__ + if (pledge("stdio rpath proc exec", NULL) == -1) +-- +2.44.0 +