X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=spectrwm.c;h=5fc8877587acf17aecf5261a8142119486ebf0bf;hb=56313f2dcc507dc9c7d2387debe869fcd87a812e;hp=478a6f2d9309b89a35ec49d11921c25ba9b8519d;hpb=638428ac079bad32d3e9150f90450bc71397135c;p=spectrwm.git diff --git a/spectrwm.c b/spectrwm.c index 478a6f2..5fc8877 100644 --- a/spectrwm.c +++ b/spectrwm.c @@ -402,6 +402,7 @@ bool stack_enabled = true; bool clock_enabled = true; bool iconic_enabled = false; bool urgent_enabled = false; +bool urgent_collapse = false; char *clock_format = NULL; bool window_class_enabled = false; bool window_instance_enabled = false; @@ -2193,11 +2194,12 @@ bar_urgent(char *s, size_t sz) } for (i = 0; i < workspace_limit; i++) { - if (urgent[i]) + if (urgent[i]) { snprintf(b, sizeof b, "%d ", i + 1); - else - snprintf(b, sizeof b, "- "); - strlcat(s, b, sz); + strlcat(s, b, sz); + } else if (!urgent_collapse) { + strlcat(s, "- ", sz); + } } } @@ -3218,6 +3220,9 @@ center_pointer(struct swm_region *r) return; win = r->ws->focus; + + DNPRINTF(SWM_D_EVENT, "center_pointer: win %#x.\n", WINID(win)); + if (win && win->mapped) xcb_warp_pointer(conn, XCB_NONE, win->id, 0, 0, 0, 0, WIDTH(win) / 2, HEIGHT(win) / 2); @@ -4111,6 +4116,7 @@ swapwin(struct swm_region *r, union arg *args) ewmh_update_client_list(); stack(); + center_pointer(r); focus_flush(); out: DNPRINTF(SWM_D_MOVE, "swapwin: done\n"); @@ -4398,6 +4404,7 @@ cycle_layout(struct swm_region *r, union arg *args) focus_win(get_region_focus(r)); + center_pointer(r); focus_flush(); } @@ -4419,6 +4426,7 @@ stack_config(struct swm_region *r, union arg *args) stack(); bar_draw(); + center_pointer(r); focus_flush(); } @@ -5946,6 +5954,7 @@ maximize_toggle(struct swm_region *r, union arg *args) if (w == w->ws->focus) focus_win(w); + center_pointer(r); focus_flush(); DNPRINTF(SWM_D_MISC, "maximize_toggle: done\n"); } @@ -6326,6 +6335,7 @@ resize_step(struct swm_region *r, union arg *args) return; resize(win, args); + center_pointer(r); focus_flush(); } @@ -6525,6 +6535,7 @@ move_step(struct swm_region *r, union arg *args) return; move(win, args); + center_pointer(r); focus_flush(); } @@ -7906,6 +7917,7 @@ enum { SWM_S_STACK_ENABLED, SWM_S_TERM_WIDTH, SWM_S_TILE_GAP, + SWM_S_URGENT_COLLAPSE, SWM_S_URGENT_ENABLED, SWM_S_VERBOSE_LAYOUT, SWM_S_WARP_POINTER, @@ -8108,6 +8120,9 @@ setconfvalue(const char *selector, const char *value, int flags) case SWM_S_TILE_GAP: tile_gap = atoi(value); break; + case SWM_S_URGENT_COLLAPSE: + urgent_collapse = (atoi(value) != 0); + break; case SWM_S_URGENT_ENABLED: urgent_enabled = (atoi(value) != 0); break; @@ -8454,6 +8469,7 @@ struct config_option configopt[] = { { "tile_gap", setconfvalue, SWM_S_TILE_GAP }, { "title_class_enabled", setconfvalue, SWM_S_WINDOW_CLASS_ENABLED }, /* For backwards compat. */ { "title_name_enabled", setconfvalue, SWM_S_WINDOW_INSTANCE_ENABLED }, /* For backwards compat. */ + { "urgent_collapse", setconfvalue, SWM_S_URGENT_COLLAPSE }, { "urgent_enabled", setconfvalue, SWM_S_URGENT_ENABLED }, { "verbose_layout", setconfvalue, SWM_S_VERBOSE_LAYOUT }, { "warp_pointer", setconfvalue, SWM_S_WARP_POINTER },