diff --git a/cmd-set-option.c b/cmd-set-option.c index 06535e0d..63e646e0 100644 --- a/cmd-set-option.c +++ b/cmd-set-option.c @@ -88,6 +88,7 @@ const struct set_option_entry set_session_option_table[] = { { "default-shell", SET_OPTION_STRING, 0, 0, NULL }, { "default-terminal", SET_OPTION_STRING, 0, 0, NULL }, { "display-panes-colour", SET_OPTION_COLOUR, 0, 0, NULL }, + { "display-panes-active-colour", SET_OPTION_COLOUR, 0, 0, NULL }, { "display-panes-time", SET_OPTION_NUMBER, 1, INT_MAX, NULL }, { "display-time", SET_OPTION_NUMBER, 1, INT_MAX, NULL }, { "history-limit", SET_OPTION_NUMBER, 0, INT_MAX, NULL }, diff --git a/screen-redraw.c b/screen-redraw.c index 83eafa62..bd3010cb 100644 --- a/screen-redraw.c +++ b/screen-redraw.c @@ -269,18 +269,21 @@ screen_redraw_draw_number(struct client *c, struct window_pane *wp) { struct tty *tty = &c->tty; struct session *s = c->session; + struct options *oo = &s->options; + struct window *w = wp->window; struct grid_cell gc; u_int idx, px, py, i, j, xoff, yoff; - int colour; + int colour, active_colour; char buf[16], *ptr; size_t len; - idx = window_pane_index(wp->window, wp); + idx = window_pane_index(w, wp); len = xsnprintf(buf, sizeof buf, "%u", idx); if (wp->sx < len) return; - colour = options_get_number(&s->options, "display-panes-colour"); + colour = options_get_number(oo, "display-panes-colour"); + active_colour = options_get_number(oo, "display-panes-active-colour"); px = wp->sx / 2; py = wp->sy / 2; xoff = wp->xoff; yoff = wp->yoff; @@ -289,7 +292,10 @@ screen_redraw_draw_number(struct client *c, struct window_pane *wp) tty_cursor(tty, xoff + px - len / 2, yoff + py); memcpy(&gc, &grid_default_cell, sizeof gc); gc.data = '_'; /* not space */ - colour_set_fg(&gc, colour); + if (w->active == wp) + colour_set_fg(&gc, active_colour); + else + colour_set_fg(&gc, colour); tty_attributes(tty, &gc); tty_puts(tty, buf); return; @@ -300,7 +306,10 @@ screen_redraw_draw_number(struct client *c, struct window_pane *wp) memcpy(&gc, &grid_default_cell, sizeof gc); gc.data = '_'; /* not space */ - colour_set_bg(&gc, colour); + if (w->active == wp) + colour_set_bg(&gc, active_colour); + else + colour_set_bg(&gc, colour); tty_attributes(tty, &gc); for (ptr = buf; *ptr != '\0'; ptr++) { if (*ptr < '0' || *ptr > '9') diff --git a/tmux.1 b/tmux.1 index 286d9613..b80e8580 100644 --- a/tmux.1 +++ b/tmux.1 @@ -751,9 +751,10 @@ This command works only from inside Display a visible indicator of each pane shown by .Ar target-client . See the -.Ic display-panes-time +.Ic display-panes-time , +.Ic display-panes-colour , and -.Ic display-panes-colour +.Ic display-panes-active-colour session options. While the indicator is on screen, a pane may be selected with the .Ql 0 @@ -1398,10 +1399,14 @@ to work correctly, this be set to .Ql screen or a derivative of it. -.It Ic display-panes-colour Ar colour -Set the colour used for the +.It Ic display-panes-active-colour Ar colour +Set the colour used by the .Ic display-panes -command. +command to show the indicator for the active pane. +.It Ic display-panes-colour Ar colour +Set the colour used by the +.Ic display-panes +command to show the indicators for inactive panes. .It Ic display-panes-time Ar time Set the time in milliseconds for which the indicators shown by the .Ic display-panes diff --git a/tmux.c b/tmux.c index 24aa24f6..d003ff21 100644 --- a/tmux.c +++ b/tmux.c @@ -328,6 +328,7 @@ main(int argc, char **argv) options_set_string(so, "default-shell", "%s", getshell()); options_set_string(so, "default-terminal", "screen"); options_set_number(so, "display-panes-colour", 4); + options_set_number(so, "display-panes-active-colour", 1); options_set_number(so, "display-panes-time", 1000); options_set_number(so, "display-time", 750); options_set_number(so, "history-limit", 2000);