diff options
| author | Kumar Damani <kdamani@kepler.space> | 2021-11-18 17:26:17 +0000 |
|---|---|---|
| committer | Kumar Damani <kdamani@kepler.space> | 2021-11-18 18:00:50 +0000 |
| commit | 1a685bd430f33e4fcbb600437960a2877c17cc04 (patch) | |
| tree | a8e4f5d227d81bee2b9f06b1d74975d48fdd5965 /dwm.c | |
| parent | 22f524735df14941b3612beb25b3330d7117cfc4 (diff) | |
added pactch for dwm restart
Diffstat (limited to 'dwm.c')
| -rw-r--r-- | dwm.c | 23 |
1 files changed, 23 insertions, 0 deletions
@@ -226,6 +226,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 spawnscratch(const Arg *arg); static void tag(const Arg *arg); @@ -288,6 +290,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; @@ -1308,6 +1311,7 @@ propertynotify(XEvent *e) void quit(const Arg *arg) { + if(arg->i) restart = 1; running = 0; } @@ -1776,8 +1780,12 @@ setup(void) Atom utf8string; /* clean up any zombies immediately */ + sigchld(0); + signal(SIGHUP, sighup); + signal(SIGTERM, sigterm); + /* init screen */ screen = DefaultScreen(dpy); sw = DisplayWidth(dpy, screen); @@ -1879,6 +1887,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) @@ -2480,6 +2502,7 @@ main(int argc, char *argv[]) scan(); runautostart(); run(); + if(restart) execvp(argv[0], argv); cleanup(); XCloseDisplay(dpy); return EXIT_SUCCESS; |
