diff options
| author | Filip Wandzio <contact@philw.dev> | 2025-12-28 02:37:34 +0100 |
|---|---|---|
| committer | Filip Wandzio <contact@philw.dev> | 2025-12-28 02:37:34 +0100 |
| commit | 11b1ff4691ff3e0f8346e7431fa3f90cc846fc5d (patch) | |
| tree | b060040013c6023e547f1afde6c5d52b5e945f94 | |
| parent | e701f2a7142842d71cfb9e46a9ca83021abeb2f5 (diff) | |
| download | dwm-11b1ff4691ff3e0f8346e7431fa3f90cc846fc5d.tar.gz dwm-11b1ff4691ff3e0f8346e7431fa3f90cc846fc5d.zip | |
Add hot restart patch
Diffstat (limited to '')
| -rw-r--r-- | README.md | 38 | ||||
| -rw-r--r-- | src/config/config.def.h | 1 | ||||
| -rw-r--r-- | src/config/config.h | 1 | ||||
| -rw-r--r-- | src/core/dwm.c | 6 | ||||
| -rw-r--r-- | src/core/dwm.h | 1 |
5 files changed, 25 insertions, 22 deletions
| @@ -1,14 +1,4 @@ | |||
| 1 | dwm - dynamic window manager | 1 | ## Installation |
| 2 | ============================ | ||
| 3 | dwm is an extremely fast, small, and dynamic window manager for X. | ||
| 4 | |||
| 5 | |||
| 6 | Requirements | ||
| 7 | ------------ | ||
| 8 | In order to build dwm you need the Xlib header files. | ||
| 9 | |||
| 10 | |||
| 11 | Installation | ||
| 12 | ------------ | 2 | ------------ |
| 13 | Edit config.mk to match your local setup (dwm is installed into | 3 | Edit config.mk to match your local setup (dwm is installed into |
| 14 | the /usr/local namespace by default). | 4 | the /usr/local namespace by default). |
| @@ -16,33 +6,37 @@ the /usr/local namespace by default). | |||
| 16 | Afterwards enter the following command to build and install dwm (if | 6 | Afterwards enter the following command to build and install dwm (if |
| 17 | necessary as root): | 7 | necessary as root): |
| 18 | 8 | ||
| 9 | ```bash | ||
| 19 | make clean install | 10 | make clean install |
| 11 | ``` | ||
| 20 | 12 | ||
| 21 | 13 | ## Running dwm | |
| 22 | Running dwm | ||
| 23 | ----------- | ||
| 24 | Add the following line to your .xinitrc to start dwm using startx: | 14 | Add the following line to your .xinitrc to start dwm using startx: |
| 25 | 15 | ```bash | |
| 26 | exec dwm | 16 | exec dwm |
| 17 | ``` | ||
| 27 | 18 | ||
| 28 | In order to connect dwm to a specific display, make sure that | 19 | In order to connect dwm to a specific display, make sure that |
| 29 | the DISPLAY environment variable is set correctly, e.g.: | 20 | the 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 | |||
| 35 | In order to display status info in the bar, you can do something | 25 | In order to display status info in the bar, you can do something |
| 36 | like this in your .xinitrc: | 26 | like 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 | |
| 45 | Configuration | ||
| 46 | ------------- | ||
| 47 | The configuration of dwm is done by creating a custom config.h | 37 | The configuration of dwm is done by creating a custom config.h |
| 48 | and (re)compiling the source code. | 38 | and (re)compiling the source code. |
| 39 | |||
| 40 | ## Additional resources | ||
| 41 | |||
| 42 | Restart 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 | ||
| 1439 | void restart(const Arg *arg) | ||
| 1440 | { | ||
| 1441 | char *argv[] = {"dwm", NULL}; | ||
| 1442 | execvp("dwm", argv); | ||
| 1443 | } | ||
| 1444 | |||
| 1439 | void run(void) | 1445 | void 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); | |||
| 176 | static void resizemouse(const Arg *arg); | 176 | static void resizemouse(const Arg *arg); |
| 177 | static void resizerequest(XEvent *e); | 177 | static void resizerequest(XEvent *e); |
| 178 | static void restack(Monitor *m); | 178 | static void restack(Monitor *m); |
| 179 | static void restart(const Arg *arg); | ||
| 179 | static void run(void); | 180 | static void run(void); |
| 180 | static void scan(void); | 181 | static void scan(void); |
| 181 | static int sendevent(Window w, Atom proto, int m, long d0, long d1, long d2, | 182 | static int sendevent(Window w, Atom proto, int m, long d0, long d1, long d2, |
