kill -HUP pid to restart, also mod+R

This commit is contained in:
Luke Smith 2020-04-10 18:50:44 -04:00
parent 0c7a69973f
commit 4435aad841
No known key found for this signature in database
GPG key ID: 4C50B54A911F6252
3 changed files with 35 additions and 3 deletions

View file

@ -133,7 +133,7 @@ static Key keys[] = {
{ MODKEY, XK_e, spawn, SHCMD("st -e neomutt ; pkill -RTMIN+12 dwmblocks; rmdir ~/.abook") },
{ MODKEY|ShiftMask, XK_e, spawn, SHCMD("tutorialvids") },
{ MODKEY, XK_r, spawn, SHCMD("st -e lf") },
/* { MODKEY|ShiftMask, XK_r, spawn, SHCMD("") }, */
{ MODKEY|ShiftMask, XK_r, quit, {1} },
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
/* { MODKEY|ShiftMask, XK_t, spawn, SHCMD("") }, */
{ MODKEY, XK_y, setlayout, {.v = &layouts[4]} },
@ -153,7 +153,7 @@ static Key keys[] = {
{ MODKEY, XK_backslash, view, {0} },
/* { MODKEY|ShiftMask, XK_backslash, spawn, SHCMD("") }, */
{ MODKEY, XK_a, spawn, {.v = audiocontrol} },
{ MODKEY, XK_a, spawn, {.v = audiocontrol } },
/* { MODKEY|ShiftMask, XK_a, spawn, SHCMD("") }, */
{ MODKEY, XK_s, togglesticky, {0} },
/* { MODKEY|ShiftMask, XK_s, spawn, SHCMD("") }, */
@ -245,7 +245,7 @@ static Key keys[] = {
{ 0, XF86XK_TouchpadOn, spawn, SHCMD("synclient TouchpadOff=0") },
{ 0, XF86XK_MonBrightnessUp, spawn, SHCMD("xbacklight -inc 15") },
{ 0, XF86XK_MonBrightnessDown, spawn, SHCMD("xbacklight -dec 15") },
/* { MODKEY, XK_space, setlayout, {0} }, */
/* { MODKEY, XK_comma, focusmon, {.i = -1 } }, */

10
dwm.1
View file

@ -137,6 +137,9 @@ Add/remove all windows with nth tag to/from the view.
.TP
.B Super\-Shift\-q
Quit dwm.
.TP
.B Mod1\-Control\-Shift\-q
Restart dwm.
.SS Mouse commands
.TP
.B Super\-Left click
@ -150,6 +153,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)

22
dwm.c
View file

@ -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;