diff options
| author | Devin J. Pohly <djpohly@gmail.com> | 2020-04-12 00:58:38 -0500 | 
|---|---|---|
| committer | Devin J. Pohly <djpohly@gmail.com> | 2020-04-12 00:59:29 -0500 | 
| commit | bc9049a11b9bb667e2161d8e237ca01b3d0d98f1 (patch) | |
| tree | 9974bf390cabc567ce472f4935c3a50dbdfdf356 | |
| parent | c82c000bd413579237f5292d8076f045726efe15 (diff) | |
add spawn and termcmd
Diffstat (limited to '')
| -rw-r--r-- | config.h | 8 | ||||
| -rw-r--r-- | dwl.c | 11 | 
2 files changed, 17 insertions, 2 deletions
| @@ -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[] = { @@ -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) { | 
