X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=3215774974c3ef966badeccc2c090661bd783056;hb=608cf20ac790005b49f9f5bed3b944015308da3a;hp=cfd2a4db1f7ec4b37c1eb33d4e0b1ef68c1e56f6;hpb=b58b056511183145f449bc39c397aba7b8cbef35;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index cfd2a4d..3215774 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -387,7 +387,7 @@ char *bar_fonts; XftColor bar_font_color; struct passwd *pwd; char *startup_exception; -unsigned int nr_exceptions = 0; +unsigned int nr_exceptions = 0; /* layout manager data */ struct swm_geometry { @@ -1055,8 +1055,8 @@ pid_t window_get_pid(xcb_window_t); void wkill(struct swm_region *, union arg *); void workaround(void); void xft_init(struct swm_region *); -void _add_startup_exception(const char *, va_list); -void add_startup_exception(const char *, ...); +void _add_startup_exception(const char *, va_list); +void add_startup_exception(const char *, ...); RB_PROTOTYPE(key_tree, key, entry, key_cmp); RB_GENERATE(key_tree, key, entry, key_cmp); @@ -4723,7 +4723,7 @@ get_win_name(xcb_window_t win) free(r); /* Use WM_NAME instead; no UTF-8. */ c = xcb_get_property(conn, 0, win, XCB_ATOM_WM_NAME, - XCB_GET_PROPERTY_TYPE_ANY, 0, UINT_MAX); + XCB_GET_PROPERTY_TYPE_ANY, 0, UINT_MAX); r = xcb_get_property_reply(conn, c, NULL); if (!r) @@ -4735,7 +4735,7 @@ get_win_name(xcb_window_t win) } if (r->length > 0) name = strndup(xcb_get_property_value(r), - xcb_get_property_value_length(r)); + xcb_get_property_value_length(r)); free(r); } @@ -6022,9 +6022,6 @@ setconfspawn(char *selector, char *value, int flags) char which[PATH_MAX]; size_t i; - /* suppress unused warning since var is needed */ - (void)flags; - args = expand_tilde(value); DNPRINTF(SWM_D_SPAWN, "setconfspawn: [%s] [%s]\n", selector, args); @@ -6036,7 +6033,7 @@ setconfspawn(char *selector, char *value, int flags) which[i] = '\0'; break; } - if (system(which) != 0) + if (flags == 0 && system(which) != 0) add_startup_exception("could not find %s", &which[strlen("which ")]); @@ -6052,17 +6049,13 @@ setup_spawn(void) { setconfspawn("term", "xterm", 0); setconfspawn("spawn_term", "xterm", 0); - setconfspawn("screenshot_all", "screenshot.sh full", 0); - setconfspawn("screenshot_wind", "screenshot.sh window", 0); - setconfspawn("lock", "xlock", 0); - setconfspawn("initscr", "initscreen.sh", 0); setconfspawn("menu", "dmenu_run" " -fn $bar_font" " -nb $bar_color" " -nf $bar_font_color" " -sb $bar_border" " -sf $bar_color", 0); - setconfspawn("search", "damenu" + setconfspawn("search", "dmenu" " -i" " -fn $bar_font" " -nb $bar_color" @@ -6076,6 +6069,12 @@ setup_spawn(void) " -nf $bar_font_color" " -sb $bar_border" " -sf $bar_color", 0); + + /* these are not verified for existence */ + setconfspawn("lock", "xlock", 1); + setconfspawn("screenshot_all", "screenshot.sh full", 1); + setconfspawn("screenshot_wind", "screenshot.sh window", 1); + setconfspawn("initscr", "initscreen.sh", 1); } /* key bindings */ @@ -7316,6 +7315,12 @@ conf_load(const char *filename, int keymapping) cp += strspn(cp, "= \t\n"); /* eat trailing */ /* get RHS value */ optval = strdup(cp); + if (strlen(optval) == 0) { + add_startup_exception("%s: line %zd: must supply value " + "to %s", filename, lineno, + configopt[optidx].optname); + goto invalid; + } /* call function to deal with it all */ if (configopt[optidx].func(optsub, optval, configopt[optidx].funcflags) != 0) { @@ -8843,12 +8848,10 @@ screenchange(xcb_randr_screen_change_notify_event_t *e) TAILQ_FOREACH(r, &screens[i].rl, entry) bar_setup(r); - if (screens[0].r_focus == NULL) { - /* Focus on first region. */ - r = TAILQ_FIRST(&screens[0].rl); - if (r) - focus_region(r); - } + /* Focus on first region. */ + r = TAILQ_FIRST(&screens[i].rl); + if (r) + focus_region(r); } stack();