integrated Peter Hartlich's patch, removed const char *c from union, simplified togglelayout
This commit is contained in:
parent
a8e0772c4d
commit
c56533615f
@ -10,8 +10,8 @@
|
|||||||
#define SELFGCOLOR "#ffffff"
|
#define SELFGCOLOR "#ffffff"
|
||||||
static uint borderpx = 1; /* border pixel of windows */
|
static uint borderpx = 1; /* border pixel of windows */
|
||||||
static uint snap = 32; /* snap pixel */
|
static uint snap = 32; /* snap pixel */
|
||||||
static Bool showbar = True; /* False means no bar */
|
static Bool showbar = True; /* False means no bar */
|
||||||
static Bool topbar = True; /* False means bottom bar */
|
static Bool topbar = True; /* False means bottom bar */
|
||||||
|
|
||||||
/* tagging */
|
/* tagging */
|
||||||
static const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
|
static const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
|
||||||
@ -42,8 +42,8 @@ static Layout layouts[] = {
|
|||||||
|
|
||||||
static Key keys[] = {
|
static Key keys[] = {
|
||||||
/* modifier key function argument */
|
/* modifier key function argument */
|
||||||
{ MODKEY, XK_p, spawn, {.c = "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" }},
|
{ MODKEY, XK_p, spawn, {.v = (char *[]){"dmenu_run", "-fn", FONT, "-nb", NORMBGCOLOR, "-nf", NORMFGCOLOR, "-sb", SELBGCOLOR, "-sf", SELFGCOLOR, NULL}} },
|
||||||
{ MODKEY|ShiftMask, XK_Return, spawn, {.c = "exec uxterm" }},
|
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = (char *[]){"uxterm", NULL}} },
|
||||||
{ MODKEY, XK_b, togglebar, {0}},
|
{ MODKEY, XK_b, togglebar, {0}},
|
||||||
{ MODKEY, XK_j, focusstack, {.i = +1 }},
|
{ MODKEY, XK_j, focusstack, {.i = +1 }},
|
||||||
{ MODKEY, XK_k, focusstack, {.i = -1 }},
|
{ MODKEY, XK_k, focusstack, {.i = -1 }},
|
||||||
|
27
dwm.c
27
dwm.c
@ -93,11 +93,10 @@ typedef struct {
|
|||||||
} DC; /* draw context */
|
} DC; /* draw context */
|
||||||
|
|
||||||
typedef union {
|
typedef union {
|
||||||
const char *c;
|
|
||||||
int i;
|
int i;
|
||||||
uint ui;
|
uint ui;
|
||||||
float f;
|
float f;
|
||||||
void *aux;
|
void *v;
|
||||||
} Arg;
|
} Arg;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -1388,10 +1387,6 @@ setup(void) {
|
|||||||
|
|
||||||
void
|
void
|
||||||
spawn(const Arg *arg) {
|
spawn(const Arg *arg) {
|
||||||
static char *shell = NULL;
|
|
||||||
|
|
||||||
if(!shell && !(shell = getenv("SHELL")))
|
|
||||||
shell = "/bin/sh";
|
|
||||||
/* The double-fork construct avoids zombie processes and keeps the code
|
/* The double-fork construct avoids zombie processes and keeps the code
|
||||||
* clean from stupid signal handlers. */
|
* clean from stupid signal handlers. */
|
||||||
if(fork() == 0) {
|
if(fork() == 0) {
|
||||||
@ -1399,8 +1394,8 @@ spawn(const Arg *arg) {
|
|||||||
if(dpy)
|
if(dpy)
|
||||||
close(ConnectionNumber(dpy));
|
close(ConnectionNumber(dpy));
|
||||||
setsid();
|
setsid();
|
||||||
execl(shell, shell, "-c", arg->c, (char *)NULL);
|
execvp(((char **)arg->v)[0], (char **)arg->v);
|
||||||
fprintf(stderr, "dwm: execl '%s -c %s'", shell, arg->c);
|
fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]);
|
||||||
perror(" failed");
|
perror(" failed");
|
||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
@ -1481,20 +1476,8 @@ togglefloating(const Arg *arg) {
|
|||||||
|
|
||||||
void
|
void
|
||||||
togglelayout(const Arg *arg) {
|
togglelayout(const Arg *arg) {
|
||||||
uint i;
|
if(++lt == &layouts[LENGTH(layouts)])
|
||||||
|
lt = &layouts[0];
|
||||||
if(!arg->c) {
|
|
||||||
if(++lt == &layouts[LENGTH(layouts)])
|
|
||||||
lt = &layouts[0];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
for(i = 0; i < LENGTH(layouts); i++)
|
|
||||||
if(!strcmp(arg->c, layouts[i].symbol))
|
|
||||||
break;
|
|
||||||
if(i == LENGTH(layouts))
|
|
||||||
return;
|
|
||||||
lt = &layouts[i];
|
|
||||||
}
|
|
||||||
if(sel)
|
if(sel)
|
||||||
arrange();
|
arrange();
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user