dwl

My patch set and modifications to dwl
git clone git://git.ethandl.dev/dwl
Log | Files | Refs | README | LICENSE

commit bc9049a11b9bb667e2161d8e237ca01b3d0d98f1
parent c82c000bd413579237f5292d8076f045726efe15
Author: Devin J. Pohly <djpohly@gmail.com>
Date:   Sun, 12 Apr 2020 00:58:38 -0500

add spawn and termcmd

Diffstat:
Mconfig.h | 8++++++--
Mdwl.c | 11+++++++++++
2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/config.h b/config.h @@ -8,9 +8,13 @@ static const struct xkb_rule_names xkb_rules = { #define MODKEY WLR_MODIFIER_ALT +/* commands */ +static const char *termcmd[] = { "kitty", "-o", "linux_display_server=wayland", NULL }; + static const Key keys[] = { - { MODKEY, XKB_KEY_Escape, quit, {0} }, - { MODKEY, XKB_KEY_F1, focusnext, {0} }, + { MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_Return, spawn, {.v = termcmd } }, + { MODKEY, XKB_KEY_Escape, quit, {0} }, + { MODKEY, XKB_KEY_F1, focusnext, {0} }, }; static const Button buttons[] = { diff --git a/dwl.c b/dwl.c @@ -125,6 +125,7 @@ static void focusnext(struct dwl_server *, const Arg *); static void movemouse(struct dwl_server *, const Arg *); static void quit(struct dwl_server *, const Arg *); static void resizemouse(struct dwl_server *, const Arg *); +static void spawn(struct dwl_server *, const Arg *); #include "config.h" @@ -187,6 +188,16 @@ static void quit(struct dwl_server *server, const Arg *unused) { wl_display_terminate(server->wl_display); } +static void spawn(struct dwl_server *server, const Arg *arg) { + if (fork() == 0) { + setsid(); + execvp(((char **)arg->v)[0], (char **)arg->v); + fprintf(stderr, "dwl: execvp %s", ((char **)arg->v)[0]); + perror(" failed"); + exit(EXIT_FAILURE); + } +} + static void focusnext(struct dwl_server *server, const Arg *unused) { /* Cycle to the next view */ if (wl_list_length(&server->views) < 2) {