From 4435aad841c9366120398e4e5335fd0b38ba12f6 Mon Sep 17 00:00:00 2001 From: Luke Smith Date: Fri, 10 Apr 2020 18:50:44 -0400 Subject: kill -HUP pid to restart, also mod+R --- dwm.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'dwm.c') diff --git a/dwm.c b/dwm.c index 8f08bea..02e24e6 100644 --- a/dwm.c +++ b/dwm.c @@ -249,6 +249,8 @@ static void setup(void); static void seturgent(Client *c, int urg); static void showhide(Client *c); static void sigchld(int unused); +static void sighup(int unused); +static void sigterm(int unused); static void spawn(const Arg *arg); static int stackpos(const Arg *arg); static void tag(const Arg *arg); @@ -314,6 +316,7 @@ static void (*handler[LASTEvent]) (XEvent *) = { [UnmapNotify] = unmapnotify }; static Atom wmatom[WMLast], netatom[NetLast]; +static int restart = 0; static int running = 1; static Cur *cursor[CurLast]; static Clr **scheme; @@ -1393,6 +1396,7 @@ propertynotify(XEvent *e) void quit(const Arg *arg) { + if(arg->i) restart = 1; running = 0; } @@ -1822,6 +1826,9 @@ setup(void) /* clean up any zombies immediately */ sigchld(0); + signal(SIGHUP, sighup); + signal(SIGTERM, sigterm); + /* init screen */ screen = DefaultScreen(dpy); sw = DisplayWidth(dpy, screen); @@ -1926,6 +1933,20 @@ sigchld(int unused) while (0 < waitpid(-1, NULL, WNOHANG)); } +void +sighup(int unused) +{ + Arg a = {.i = 1}; + quit(&a); +} + +void +sigterm(int unused) +{ + Arg a = {.i = 0}; + quit(&a); +} + void spawn(const Arg *arg) { @@ -2492,6 +2513,7 @@ main(int argc, char *argv[]) scan(); runAutostart(); run(); + if(restart) execvp(argv[0], argv); cleanup(); XCloseDisplay(dpy); return EXIT_SUCCESS; -- cgit v1.2.3