aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFilip Wandzio <contact@philw.dev>2025-12-28 02:37:34 +0100
committerFilip Wandzio <contact@philw.dev>2025-12-28 02:37:34 +0100
commit11b1ff4691ff3e0f8346e7431fa3f90cc846fc5d (patch)
treeb060040013c6023e547f1afde6c5d52b5e945f94
parente701f2a7142842d71cfb9e46a9ca83021abeb2f5 (diff)
downloaddwm-11b1ff4691ff3e0f8346e7431fa3f90cc846fc5d.tar.gz
dwm-11b1ff4691ff3e0f8346e7431fa3f90cc846fc5d.zip
Add hot restart patch
Diffstat (limited to '')
-rw-r--r--README.md38
-rw-r--r--src/config/config.def.h1
-rw-r--r--src/config/config.h1
-rw-r--r--src/core/dwm.c6
-rw-r--r--src/core/dwm.h1
5 files changed, 25 insertions, 22 deletions
diff --git a/README.md b/README.md
index 95d4fd0..15a362f 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,4 @@
1dwm - dynamic window manager 1## Installation
2============================
3dwm is an extremely fast, small, and dynamic window manager for X.
4
5
6Requirements
7------------
8In order to build dwm you need the Xlib header files.
9
10
11Installation
12------------ 2------------
13Edit config.mk to match your local setup (dwm is installed into 3Edit config.mk to match your local setup (dwm is installed into
14the /usr/local namespace by default). 4the /usr/local namespace by default).
@@ -16,33 +6,37 @@ the /usr/local namespace by default).
16Afterwards enter the following command to build and install dwm (if 6Afterwards enter the following command to build and install dwm (if
17necessary as root): 7necessary as root):
18 8
9```bash
19 make clean install 10 make clean install
11```
20 12
21 13## Running dwm
22Running dwm
23-----------
24Add the following line to your .xinitrc to start dwm using startx: 14Add the following line to your .xinitrc to start dwm using startx:
25 15```bash
26 exec dwm 16 exec dwm
17```
27 18
28In order to connect dwm to a specific display, make sure that 19In order to connect dwm to a specific display, make sure that
29the DISPLAY environment variable is set correctly, e.g.: 20the DISPLAY environment variable is set correctly, e.g.:
30 21
22```bash
31 DISPLAY=foo.bar:1 exec dwm 23 DISPLAY=foo.bar:1 exec dwm
32 24```
33(This will start dwm on display :1 of the host foo.bar.)
34
35In order to display status info in the bar, you can do something 25In order to display status info in the bar, you can do something
36like this in your .xinitrc: 26like this in your .xinitrc:
37 27
38 while xsetroot -name "`date` `uptime | sed 's/.*,//'`" 28```bash
29 while xsetroot -name "`date` `uptime | sed 's/.*,//'`"
39 do 30 do
40 sleep 1 31 sleep 1
41 done & 32 done &
42 exec dwm 33 exec dwm
34```
43 35
44 36## Configuration
45Configuration
46-------------
47The configuration of dwm is done by creating a custom config.h 37The configuration of dwm is done by creating a custom config.h
48and (re)compiling the source code. 38and (re)compiling the source code.
39
40## Additional resources
41
42Restart patch pulled from (gist.github.org/bpsuntrup)[bpsuntrup's gist]
diff --git a/src/config/config.def.h b/src/config/config.def.h
index 3135869..9c372da 100644
--- a/src/config/config.def.h
+++ b/src/config/config.def.h
@@ -87,6 +87,7 @@ static const Key keys[] = {
87 {MODKEY | ShiftMask, XK_s, spawn, {.v = screenshotcmd}}, 87 {MODKEY | ShiftMask, XK_s, spawn, {.v = screenshotcmd}},
88 {MODKEY, XK_b, togglebar, {0}}, 88 {MODKEY, XK_b, togglebar, {0}},
89 {MODKEY, XK_q, killclient, {0}}, 89 {MODKEY, XK_q, killclient, {0}},
90 {MODKEY, XK_r, restart, {0}},
90 {MODKEY, XK_f, togglefullscr, {0}}, 91 {MODKEY, XK_f, togglefullscr, {0}},
91 {MODKEY, XK_l, setlayout, {0}}, 92 {MODKEY, XK_l, setlayout, {0}},
92 {MODKEY | ShiftMask, XK_space, togglefloating, {0}}, 93 {MODKEY | ShiftMask, XK_space, togglefloating, {0}},
diff --git a/src/config/config.h b/src/config/config.h
index 3135869..9c372da 100644
--- a/src/config/config.h
+++ b/src/config/config.h
@@ -87,6 +87,7 @@ static const Key keys[] = {
87 {MODKEY | ShiftMask, XK_s, spawn, {.v = screenshotcmd}}, 87 {MODKEY | ShiftMask, XK_s, spawn, {.v = screenshotcmd}},
88 {MODKEY, XK_b, togglebar, {0}}, 88 {MODKEY, XK_b, togglebar, {0}},
89 {MODKEY, XK_q, killclient, {0}}, 89 {MODKEY, XK_q, killclient, {0}},
90 {MODKEY, XK_r, restart, {0}},
90 {MODKEY, XK_f, togglefullscr, {0}}, 91 {MODKEY, XK_f, togglefullscr, {0}},
91 {MODKEY, XK_l, setlayout, {0}}, 92 {MODKEY, XK_l, setlayout, {0}},
92 {MODKEY | ShiftMask, XK_space, togglefloating, {0}}, 93 {MODKEY | ShiftMask, XK_space, togglefloating, {0}},
diff --git a/src/core/dwm.c b/src/core/dwm.c
index e16bc2f..cd7fdb0 100644
--- a/src/core/dwm.c
+++ b/src/core/dwm.c
@@ -1436,6 +1436,12 @@ void restack(Monitor *m)
1436 ; 1436 ;
1437} 1437}
1438 1438
1439void restart(const Arg *arg)
1440{
1441 char *argv[] = {"dwm", NULL};
1442 execvp("dwm", argv);
1443}
1444
1439void run(void) 1445void run(void)
1440{ 1446{
1441 XEvent ev; 1447 XEvent ev;
diff --git a/src/core/dwm.h b/src/core/dwm.h
index 090448a..273645a 100644
--- a/src/core/dwm.h
+++ b/src/core/dwm.h
@@ -176,6 +176,7 @@ static void resizeclient(Client *c, int x, int y, int w, int h);
176static void resizemouse(const Arg *arg); 176static void resizemouse(const Arg *arg);
177static void resizerequest(XEvent *e); 177static void resizerequest(XEvent *e);
178static void restack(Monitor *m); 178static void restack(Monitor *m);
179static void restart(const Arg *arg);
179static void run(void); 180static void run(void);
180static void scan(void); 181static void scan(void);
181static int sendevent(Window w, Atom proto, int m, long d0, long d1, long d2, 182static int sendevent(Window w, Atom proto, int m, long d0, long d1, long d2,