using execl now, argv changed, using cmd and const char defs directly in the KEYS struct
parent
0dfe729f90
commit
9955ddc978
17
config.arg.h
17
config.arg.h
|
@ -17,13 +17,6 @@ const char *tags[] = { "fnord", "dev", "net", "work", "misc", NULL };
|
||||||
#define MASTERW 60 /* percent */
|
#define MASTERW 60 /* percent */
|
||||||
|
|
||||||
#define KEYS \
|
#define KEYS \
|
||||||
const char *browse[] = { "firefox", NULL }; \
|
|
||||||
const char *gimp[] = { "gimp", NULL }; \
|
|
||||||
const char *term[] = { \
|
|
||||||
"urxvt", "-tr", "+sb", "-bg", "black", "-fg", "white", "-cr", "white", \
|
|
||||||
"-fn", "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*", NULL \
|
|
||||||
}; \
|
|
||||||
const char *xlock[] = { "xlock", NULL }; \
|
|
||||||
static Key key[] = { \
|
static Key key[] = { \
|
||||||
/* modifier key function arguments */ \
|
/* modifier key function arguments */ \
|
||||||
{ MODKEY, XK_0, view, { .i = 0 } }, \
|
{ MODKEY, XK_0, view, { .i = 0 } }, \
|
||||||
|
@ -50,10 +43,12 @@ static Key key[] = { \
|
||||||
{ MODKEY|ShiftMask, XK_4, replacetag, { .i = 5 } }, \
|
{ MODKEY|ShiftMask, XK_4, replacetag, { .i = 5 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_q, quit, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_q, quit, { 0 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_Return, spawn, { .argv = term } }, \
|
{ MODKEY|ShiftMask, XK_x, spawn, \
|
||||||
{ MODKEY|ShiftMask, XK_g, spawn, { .argv = gimp } }, \
|
{ .cmd = "exec `ls -lL /usr/bin /usr/local/bin 2>/dev/null |" \
|
||||||
{ MODKEY|ShiftMask, XK_l, spawn, { .argv = xlock } }, \
|
" awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' | sort | uniq | dmenu`" } }, \
|
||||||
{ MODKEY|ShiftMask, XK_w, spawn, { .argv = browse } }, \
|
{ MODKEY|ShiftMask, XK_Return, spawn, \
|
||||||
|
{ .cmd = "exec urxvt -tr +sb -bg black -fg white -cr white " \
|
||||||
|
"-fn '-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*'" } }, \
|
||||||
};
|
};
|
||||||
|
|
||||||
#define RULES \
|
#define RULES \
|
||||||
|
|
|
@ -17,7 +17,6 @@ const char *tags[] = { "0", "1", "2", "3", "4", NULL };
|
||||||
#define MASTERW 60 /* percent */
|
#define MASTERW 60 /* percent */
|
||||||
|
|
||||||
#define KEYS \
|
#define KEYS \
|
||||||
const char *term[] = { "xterm", NULL }; \
|
|
||||||
static Key key[] = { \
|
static Key key[] = { \
|
||||||
/* modifier key function arguments */ \
|
/* modifier key function arguments */ \
|
||||||
{ MODKEY, XK_0, view, { .i = 0 } }, \
|
{ MODKEY, XK_0, view, { .i = 0 } }, \
|
||||||
|
@ -44,7 +43,10 @@ static Key key[] = { \
|
||||||
{ MODKEY|ShiftMask, XK_4, replacetag, { .i = 4 } }, \
|
{ MODKEY|ShiftMask, XK_4, replacetag, { .i = 4 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_q, quit, { 0 } }, \
|
{ MODKEY|ShiftMask, XK_q, quit, { 0 } }, \
|
||||||
{ MODKEY|ShiftMask, XK_Return, spawn, { .argv = term } }, \
|
/* { MODKEY|ShiftMask, XK_x, spawn, */ \
|
||||||
|
/* { .cmd = "exec `ls -lL /usr/bin /usr/local/bin 2>/dev/null |" */ \
|
||||||
|
/* " awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' | sort | uniq | dmenu`" } }, */ \
|
||||||
|
{ MODKEY|ShiftMask, XK_Return, spawn, { .cmd = "exec xterm" } }, \
|
||||||
};
|
};
|
||||||
|
|
||||||
#define RULES \
|
#define RULES \
|
||||||
|
|
2
dwm.h
2
dwm.h
|
@ -17,7 +17,7 @@ typedef struct DC DC;
|
||||||
typedef struct Fnt Fnt;
|
typedef struct Fnt Fnt;
|
||||||
|
|
||||||
union Arg {
|
union Arg {
|
||||||
const char **argv;
|
const char *cmd;
|
||||||
int i;
|
int i;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
11
util.c
11
util.c
|
@ -43,17 +43,20 @@ eprint(const char *errstr, ...)
|
||||||
void
|
void
|
||||||
spawn(Arg *arg)
|
spawn(Arg *arg)
|
||||||
{
|
{
|
||||||
char **argv = (char **)arg->argv;
|
static char *shell = NULL;
|
||||||
|
|
||||||
if(!argv || !argv[0])
|
if(!shell && !(shell = getenv("SHELL")))
|
||||||
|
shell = "/bin/sh";
|
||||||
|
|
||||||
|
if(!arg->cmd)
|
||||||
return;
|
return;
|
||||||
if(fork() == 0) {
|
if(fork() == 0) {
|
||||||
if(fork() == 0) {
|
if(fork() == 0) {
|
||||||
if(dpy)
|
if(dpy)
|
||||||
close(ConnectionNumber(dpy));
|
close(ConnectionNumber(dpy));
|
||||||
setsid();
|
setsid();
|
||||||
execvp(argv[0], argv);
|
execl(shell, shell, "-c", arg->cmd, NULL);
|
||||||
fprintf(stderr, "dwm: execvp %s", argv[0]);
|
fprintf(stderr, "dwm: execl '%s'", arg->cmd);
|
||||||
perror(" failed");
|
perror(" failed");
|
||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
Loading…
Reference in New Issue