Add new option: urgent_collapse

Enables hiding of placeholders in the urgency hint indicator for
workspaces that do not have any urgent windows.

Closes #60
This commit is contained in:
Reginald Kennedy 2014-08-15 04:08:44 +08:00
parent 638428ac07
commit 18364e3dce
2 changed files with 14 additions and 4 deletions

View file

@ -400,6 +400,9 @@ binary without the setgid bit set.
Pixel width of empty space between tiled windows. Negative values cause overlap. Pixel width of empty space between tiled windows. Negative values cause overlap.
Set this to the opposite of border_width to collapse the border between tiles. Set this to the opposite of border_width to collapse the border between tiles.
Disable by setting to 0. Disable by setting to 0.
.It Ic urgent_collapse
Enables hiding of placeholders in the urgency hint indicator for workspaces that
do not have any urgent windows. Enable by setting to 1.
.It Ic urgent_enabled .It Ic urgent_enabled
Enable or disable the urgency hint indicator in the status bar. Enable or disable the urgency hint indicator in the status bar.
Note that many terminal emulators require an explicit setting for the bell Note that many terminal emulators require an explicit setting for the bell

View file

@ -402,6 +402,7 @@ bool stack_enabled = true;
bool clock_enabled = true; bool clock_enabled = true;
bool iconic_enabled = false; bool iconic_enabled = false;
bool urgent_enabled = false; bool urgent_enabled = false;
bool urgent_collapse = false;
char *clock_format = NULL; char *clock_format = NULL;
bool window_class_enabled = false; bool window_class_enabled = false;
bool window_instance_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++) { for (i = 0; i < workspace_limit; i++) {
if (urgent[i]) if (urgent[i]) {
snprintf(b, sizeof b, "%d ", i + 1); snprintf(b, sizeof b, "%d ", i + 1);
else strlcat(s, b, sz);
snprintf(b, sizeof b, "- "); } else if (!urgent_collapse) {
strlcat(s, b, sz); strlcat(s, "- ", sz);
}
} }
} }
@ -7906,6 +7908,7 @@ enum {
SWM_S_STACK_ENABLED, SWM_S_STACK_ENABLED,
SWM_S_TERM_WIDTH, SWM_S_TERM_WIDTH,
SWM_S_TILE_GAP, SWM_S_TILE_GAP,
SWM_S_URGENT_COLLAPSE,
SWM_S_URGENT_ENABLED, SWM_S_URGENT_ENABLED,
SWM_S_VERBOSE_LAYOUT, SWM_S_VERBOSE_LAYOUT,
SWM_S_WARP_POINTER, SWM_S_WARP_POINTER,
@ -8108,6 +8111,9 @@ setconfvalue(const char *selector, const char *value, int flags)
case SWM_S_TILE_GAP: case SWM_S_TILE_GAP:
tile_gap = atoi(value); tile_gap = atoi(value);
break; break;
case SWM_S_URGENT_COLLAPSE:
urgent_collapse = (atoi(value) != 0);
break;
case SWM_S_URGENT_ENABLED: case SWM_S_URGENT_ENABLED:
urgent_enabled = (atoi(value) != 0); urgent_enabled = (atoi(value) != 0);
break; break;
@ -8454,6 +8460,7 @@ struct config_option configopt[] = {
{ "tile_gap", setconfvalue, SWM_S_TILE_GAP }, { "tile_gap", setconfvalue, SWM_S_TILE_GAP },
{ "title_class_enabled", setconfvalue, SWM_S_WINDOW_CLASS_ENABLED }, /* For backwards compat. */ { "title_class_enabled", setconfvalue, SWM_S_WINDOW_CLASS_ENABLED }, /* For backwards compat. */
{ "title_name_enabled", setconfvalue, SWM_S_WINDOW_INSTANCE_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 }, { "urgent_enabled", setconfvalue, SWM_S_URGENT_ENABLED },
{ "verbose_layout", setconfvalue, SWM_S_VERBOSE_LAYOUT }, { "verbose_layout", setconfvalue, SWM_S_VERBOSE_LAYOUT },
{ "warp_pointer", setconfvalue, SWM_S_WARP_POINTER }, { "warp_pointer", setconfvalue, SWM_S_WARP_POINTER },