diff options
author | Acid Bong <acid-bong@cock.lt> | 2022-10-21 23:13:22 +0300 |
---|---|---|
committer | Acid Bong <acid-bong@cock.lt> | 2022-10-21 23:13:22 +0300 |
commit | e299bf86bbb1b1f9ee636bdb7e05c7cef40ae517 (patch) | |
tree | 5945764cf6e6c494d8e270e2cac7a654a6f13454 | |
parent | c54752d0d8b64f16fd3a1f78009296eec2b47223 (diff) | |
download | dwm-e299bf86bbb1b1f9ee636bdb7e05c7cef40ae517.tar.gz |
patch: restartsig
-rw-r--r-- | config.def.h | 1 | ||||
-rw-r--r-- | dwm.1 | 10 | ||||
-rw-r--r-- | dwm.c | 22 |
3 files changed, 33 insertions, 0 deletions
diff --git a/config.def.h b/config.def.h index 3f350fb..9d21ce9 100644 --- a/config.def.h +++ b/config.def.h @@ -98,6 +98,7 @@ static const Key keys[] = { TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) { MODKEY|ShiftMask, XK_q, quit, {0} }, + { MODKEY|ShiftMask, XK_r, quit, {1} }, /* programs */ { MODKEY, XK_w, spawn, SHCMD("firefox") }, { MODKEY, XK_f, spawn, SHCMD("st ranger") }, diff --git a/dwm.1 b/dwm.1 index ddc8321..7b6cadb 100644 --- a/dwm.1 +++ b/dwm.1 @@ -142,6 +142,9 @@ Add/remove all windows with nth tag to/from the view. .TP .B Mod1\-Shift\-q Quit dwm. +.TP +.B Mod1\-Control\-Shift\-q +Restart dwm. .SS Mouse commands .TP .B Mod1\-Button1 @@ -155,6 +158,13 @@ Resize focused window while dragging. Tiled windows will be toggled to the float .SH CUSTOMIZATION dwm is customized by creating a custom config.h and (re)compiling the source code. This keeps it fast, secure and simple. +.SH SIGNALS +.TP +.B SIGHUP - 1 +Restart the dwm process. +.TP +.B SIGTERM - 15 +Cleanly terminate the dwm process. .SH SEE ALSO .BR dmenu (1), .BR st (1) diff --git a/dwm.c b/dwm.c index 0fae8e5..97c440a 100644 --- a/dwm.c +++ b/dwm.c @@ -232,6 +232,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 Monitor *systraytomon(Monitor *m); static void tag(const Arg *arg); @@ -292,6 +294,7 @@ static void (*handler[LASTEvent]) (XEvent *) = { [UnmapNotify] = unmapnotify }; static Atom wmatom[WMLast], netatom[NetLast], xatom[XLast]; +static int restart = 0; static int running = 1; static Cur *cursor[CurLast]; static Clr **scheme; @@ -1357,6 +1360,7 @@ propertynotify(XEvent *e) void quit(const Arg *arg) { + if(arg->i) restart = 1; running = 0; } @@ -1709,6 +1713,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); @@ -1818,6 +1825,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 (fork() == 0) { @@ -2507,6 +2528,7 @@ main(int argc, char *argv[]) #endif /* __OpenBSD__ */ scan(); run(); + if(restart) execvp(argv[0], argv); cleanup(); XCloseDisplay(dpy); return EXIT_SUCCESS; |