diff options
author | Saumit Dinesan <justsaumit@protonmail.com> | 2022-03-09 13:59:56 +0530 |
---|---|---|
committer | Saumit Dinesan <justsaumit@protonmail.com> | 2022-03-09 13:59:56 +0530 |
commit | 097fbfcc73b1a795d89ec7bb08666d37fc26a44a (patch) | |
tree | 7c6cbe72acb8355ac9c125975aca5551d3c8974b /dwm.c | |
parent | 6c0d43ef366bc31ab30a188609218a88b10a32a4 (diff) |
Applied restartsig patch
Diffstat (limited to 'dwm.c')
-rw-r--r-- | dwm.c | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -223,6 +223,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 void tag(const Arg *arg); static void tagmon(const Arg *arg); @@ -279,6 +281,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; @@ -1310,6 +1313,7 @@ propertynotify(XEvent *e) void quit(const Arg *arg) { + if(arg->i) restart = 1; running = 0; } @@ -1598,6 +1602,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); @@ -1699,6 +1706,20 @@ sigchld(int unused) } 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) { if (arg->v == dmenucmd) @@ -2220,6 +2241,7 @@ main(int argc, char *argv[]) #endif /* __OpenBSD__ */ scan(); run(); + if(restart) execvp(argv[0], argv); cleanup(); XCloseDisplay(dpy); return EXIT_SUCCESS; |