From: Marco Peereboom Date: Sat, 17 Jan 2009 17:23:52 +0000 (+0000) Subject: Silly mcbride restarting the wm expecting it to be in the path. X-Git-Url: https://jasonwoof.com/gitweb/?a=commitdiff_plain;h=04bda5eb2aa7c0299d55c80f4b708901b0a2dc8e;p=spectrwm.git Silly mcbride restarting the wm expecting it to be in the path. Be more paranoid about managing windows. --- diff --git a/scrotwm.c b/scrotwm.c index 997e6be..919c3d3 100644 --- a/scrotwm.c +++ b/scrotwm.c @@ -100,6 +100,7 @@ u_int32_t swm_debug = 0 #define MODKEY Mod1Mask #define CLEANMASK(mask) (mask & ~(numlockmask | LockMask)) +char **start_argv; int (*xerrorxlib)(Display *, XErrorEvent *); int other_wm; int screen; @@ -131,7 +132,6 @@ char *bar_fonts[] = { /* terminal + args */ char *spawn_term[] = { "xterm", NULL }; char *spawn_menu[] = { "dmenu_run", NULL }; -char *spawn_scrotwm[] = { "scrotwm", NULL }; /* layout manager data */ struct swm_geometry { @@ -415,12 +415,13 @@ quit(union arg *args) running = 0; } - void restart(union arg *args) { + DNPRINTF(SWM_D_MISC, "restart: %s\n", start_argv[0]); + XCloseDisplay(display); - execvp(args->argv[0], args->argv); + execvp(start_argv[0], start_argv); fprintf(stderr, "execvp failed\n"); perror(" failed"); quit(NULL); @@ -1028,7 +1029,7 @@ struct key { { MODKEY | ShiftMask, XK_Return, spawn, {.argv = spawn_term} }, { MODKEY, XK_p, spawn, {.argv = spawn_menu} }, { MODKEY | ShiftMask, XK_q, quit, {0} }, - { MODKEY, XK_q, restart, {.argv = spawn_scrotwm } }, + { MODKEY, XK_q, restart, {0} }, { MODKEY, XK_m, focus, {.id = SWM_ARG_ID_FOCUSMAIN} }, { MODKEY, XK_1, switchws, {.id = 0} }, { MODKEY, XK_2, switchws, {.id = 1} }, @@ -1322,9 +1323,16 @@ mappingnotify(XEvent *e) void maprequest(XEvent *e) { + XMapRequestEvent *ev = &e->xmaprequest; + XWindowAttributes wa; + DNPRINTF(SWM_D_EVENT, "maprequest: window: %lu\n", e->xmaprequest.window); + if(!XGetWindowAttributes(display, ev->window, &wa)) + return; + if(wa.override_redirect) + return; manage_window(e->xmaprequest.window); stack(); } @@ -1412,6 +1420,7 @@ main(int argc, char *argv[]) Window d1, d2, *wins = NULL; XWindowAttributes wa; + start_argv = argv; fprintf(stderr, "Welcome to scrotwm V%s\n", SWM_VERSION); if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) warnx("no locale support");