mirror of
https://github.com/vale981/spectrwm
synced 2025-03-05 18:01:37 -05:00
Silly mcbride restarting the wm expecting it to be in the path.
Be more paranoid about managing windows.
This commit is contained in:
parent
cb6004ccfa
commit
04bda5eb2a
1 changed files with 13 additions and 4 deletions
17
scrotwm.c
17
scrotwm.c
|
@ -100,6 +100,7 @@ u_int32_t swm_debug = 0
|
||||||
#define MODKEY Mod1Mask
|
#define MODKEY Mod1Mask
|
||||||
#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
|
#define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
|
||||||
|
|
||||||
|
char **start_argv;
|
||||||
int (*xerrorxlib)(Display *, XErrorEvent *);
|
int (*xerrorxlib)(Display *, XErrorEvent *);
|
||||||
int other_wm;
|
int other_wm;
|
||||||
int screen;
|
int screen;
|
||||||
|
@ -131,7 +132,6 @@ char *bar_fonts[] = {
|
||||||
/* terminal + args */
|
/* terminal + args */
|
||||||
char *spawn_term[] = { "xterm", NULL };
|
char *spawn_term[] = { "xterm", NULL };
|
||||||
char *spawn_menu[] = { "dmenu_run", NULL };
|
char *spawn_menu[] = { "dmenu_run", NULL };
|
||||||
char *spawn_scrotwm[] = { "scrotwm", NULL };
|
|
||||||
|
|
||||||
/* layout manager data */
|
/* layout manager data */
|
||||||
struct swm_geometry {
|
struct swm_geometry {
|
||||||
|
@ -415,12 +415,13 @@ quit(union arg *args)
|
||||||
running = 0;
|
running = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
restart(union arg *args)
|
restart(union arg *args)
|
||||||
{
|
{
|
||||||
|
DNPRINTF(SWM_D_MISC, "restart: %s\n", start_argv[0]);
|
||||||
|
|
||||||
XCloseDisplay(display);
|
XCloseDisplay(display);
|
||||||
execvp(args->argv[0], args->argv);
|
execvp(start_argv[0], start_argv);
|
||||||
fprintf(stderr, "execvp failed\n");
|
fprintf(stderr, "execvp failed\n");
|
||||||
perror(" failed");
|
perror(" failed");
|
||||||
quit(NULL);
|
quit(NULL);
|
||||||
|
@ -1028,7 +1029,7 @@ struct key {
|
||||||
{ MODKEY | ShiftMask, XK_Return, spawn, {.argv = spawn_term} },
|
{ MODKEY | ShiftMask, XK_Return, spawn, {.argv = spawn_term} },
|
||||||
{ MODKEY, XK_p, spawn, {.argv = spawn_menu} },
|
{ MODKEY, XK_p, spawn, {.argv = spawn_menu} },
|
||||||
{ MODKEY | ShiftMask, XK_q, quit, {0} },
|
{ 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_m, focus, {.id = SWM_ARG_ID_FOCUSMAIN} },
|
||||||
{ MODKEY, XK_1, switchws, {.id = 0} },
|
{ MODKEY, XK_1, switchws, {.id = 0} },
|
||||||
{ MODKEY, XK_2, switchws, {.id = 1} },
|
{ MODKEY, XK_2, switchws, {.id = 1} },
|
||||||
|
@ -1322,9 +1323,16 @@ mappingnotify(XEvent *e)
|
||||||
void
|
void
|
||||||
maprequest(XEvent *e)
|
maprequest(XEvent *e)
|
||||||
{
|
{
|
||||||
|
XMapRequestEvent *ev = &e->xmaprequest;
|
||||||
|
XWindowAttributes wa;
|
||||||
|
|
||||||
DNPRINTF(SWM_D_EVENT, "maprequest: window: %lu\n",
|
DNPRINTF(SWM_D_EVENT, "maprequest: window: %lu\n",
|
||||||
e->xmaprequest.window);
|
e->xmaprequest.window);
|
||||||
|
|
||||||
|
if(!XGetWindowAttributes(display, ev->window, &wa))
|
||||||
|
return;
|
||||||
|
if(wa.override_redirect)
|
||||||
|
return;
|
||||||
manage_window(e->xmaprequest.window);
|
manage_window(e->xmaprequest.window);
|
||||||
stack();
|
stack();
|
||||||
}
|
}
|
||||||
|
@ -1412,6 +1420,7 @@ main(int argc, char *argv[])
|
||||||
Window d1, d2, *wins = NULL;
|
Window d1, d2, *wins = NULL;
|
||||||
XWindowAttributes wa;
|
XWindowAttributes wa;
|
||||||
|
|
||||||
|
start_argv = argv;
|
||||||
fprintf(stderr, "Welcome to scrotwm V%s\n", SWM_VERSION);
|
fprintf(stderr, "Welcome to scrotwm V%s\n", SWM_VERSION);
|
||||||
if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())
|
if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())
|
||||||
warnx("no locale support");
|
warnx("no locale support");
|
||||||
|
|
Loading…
Add table
Reference in a new issue