mirror of
https://github.com/tmux/tmux.git
synced 2025-04-02 22:08:49 +00:00
Options to set the colours and attributes for status-left/-right. From Thomas
Adam, thanks.
This commit is contained in:
parent
92cc3a6914
commit
90f8151ffd
@ -74,8 +74,14 @@ const struct set_option_entry set_option_table[] = {
|
|||||||
SET_OPTION_CHOICE, 0, 0, set_option_status_justify_list },
|
SET_OPTION_CHOICE, 0, 0, set_option_status_justify_list },
|
||||||
{ "status-keys", SET_OPTION_CHOICE, 0, 0, set_option_status_keys_list },
|
{ "status-keys", SET_OPTION_CHOICE, 0, 0, set_option_status_keys_list },
|
||||||
{ "status-left", SET_OPTION_STRING, 0, 0, NULL },
|
{ "status-left", SET_OPTION_STRING, 0, 0, NULL },
|
||||||
|
{ "status-left-attr", SET_OPTION_ATTRIBUTES, 0, 0, NULL },
|
||||||
|
{ "status-left-bg", SET_OPTION_COLOUR, 0, 0, NULL },
|
||||||
|
{ "status-left-fg", SET_OPTION_COLOUR, 0, 0, NULL },
|
||||||
{ "status-left-length", SET_OPTION_NUMBER, 0, SHRT_MAX, NULL },
|
{ "status-left-length", SET_OPTION_NUMBER, 0, SHRT_MAX, NULL },
|
||||||
{ "status-right", SET_OPTION_STRING, 0, 0, NULL },
|
{ "status-right", SET_OPTION_STRING, 0, 0, NULL },
|
||||||
|
{ "status-right-attr", SET_OPTION_ATTRIBUTES, 0, 0, NULL },
|
||||||
|
{ "status-right-bg", SET_OPTION_COLOUR, 0, 0, NULL },
|
||||||
|
{ "status-right-fg", SET_OPTION_COLOUR, 0, 0, NULL },
|
||||||
{ "status-right-length", SET_OPTION_NUMBER, 0, SHRT_MAX, NULL },
|
{ "status-right-length", SET_OPTION_NUMBER, 0, SHRT_MAX, NULL },
|
||||||
{ "status-utf8", SET_OPTION_FLAG, 0, 0, NULL },
|
{ "status-utf8", SET_OPTION_FLAG, 0, 0, NULL },
|
||||||
{ "terminal-overrides", SET_OPTION_STRING, 0, 0, NULL },
|
{ "terminal-overrides", SET_OPTION_STRING, 0, 0, NULL },
|
||||||
|
34
status.c
34
status.c
@ -47,8 +47,10 @@ status_redraw(struct client *c)
|
|||||||
char *left, *right, *text, *ptr;
|
char *left, *right, *text, *ptr;
|
||||||
size_t llen, llen2, rlen, rlen2, offset;
|
size_t llen, llen2, rlen, rlen2, offset;
|
||||||
size_t ox, xx, yy, size, start, width;
|
size_t ox, xx, yy, size, start, width;
|
||||||
struct grid_cell stdgc, gc;
|
struct grid_cell stdgc, sl_stdgc, sr_stdgc, gc;
|
||||||
int larrow, rarrow, utf8flag;
|
int larrow, rarrow, utf8flag;
|
||||||
|
int sl_fg, sl_bg, sr_fg, sr_bg;
|
||||||
|
int sl_attr, sr_attr;
|
||||||
|
|
||||||
left = right = NULL;
|
left = right = NULL;
|
||||||
|
|
||||||
@ -68,6 +70,32 @@ status_redraw(struct client *c)
|
|||||||
stdgc.bg = options_get_number(&s->options, "status-bg");
|
stdgc.bg = options_get_number(&s->options, "status-bg");
|
||||||
stdgc.attr |= options_get_number(&s->options, "status-attr");
|
stdgc.attr |= options_get_number(&s->options, "status-attr");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set the status-left and status-right parts to the default status
|
||||||
|
* line options and only change them where they differ from the
|
||||||
|
* defaults.
|
||||||
|
*/
|
||||||
|
memcpy(&sl_stdgc, &stdgc, sizeof sl_stdgc);
|
||||||
|
memcpy(&sr_stdgc, &stdgc, sizeof sr_stdgc);
|
||||||
|
sl_fg = options_get_number(&s->options, "status-left-fg");
|
||||||
|
if (sl_fg != 8)
|
||||||
|
sl_stdgc.fg = sl_fg;
|
||||||
|
sl_bg = options_get_number(&s->options, "status-left-bg");
|
||||||
|
if (sl_bg != 8)
|
||||||
|
sl_stdgc.bg = sl_bg;
|
||||||
|
sl_attr = options_get_number(&s->options, "status-left-attr");
|
||||||
|
if (sl_attr != 0)
|
||||||
|
sl_stdgc.attr = sl_attr;
|
||||||
|
sr_fg = options_get_number(&s->options, "status-right-fg");
|
||||||
|
if (sr_fg != 8)
|
||||||
|
sr_stdgc.fg = sr_fg;
|
||||||
|
sr_bg = options_get_number(&s->options, "status-right-bg");
|
||||||
|
if (sr_bg != 8)
|
||||||
|
sr_stdgc.bg = sr_bg;
|
||||||
|
sr_attr = options_get_number(&s->options, "status-right-attr");
|
||||||
|
if (sr_attr != 0)
|
||||||
|
sr_stdgc.attr = sr_attr;
|
||||||
|
|
||||||
yy = c->tty.sy - 1;
|
yy = c->tty.sy - 1;
|
||||||
if (yy == 0)
|
if (yy == 0)
|
||||||
goto blank;
|
goto blank;
|
||||||
@ -164,7 +192,7 @@ draw:
|
|||||||
screen_write_start(&ctx, NULL, &c->status);
|
screen_write_start(&ctx, NULL, &c->status);
|
||||||
if (llen != 0) {
|
if (llen != 0) {
|
||||||
screen_write_cursormove(&ctx, 0, yy);
|
screen_write_cursormove(&ctx, 0, yy);
|
||||||
screen_write_nputs(&ctx, llen, &stdgc, utf8flag, "%s", left);
|
screen_write_nputs(&ctx, llen, &sl_stdgc, utf8flag, "%s", left);
|
||||||
screen_write_putc(&ctx, &stdgc, ' ');
|
screen_write_putc(&ctx, &stdgc, ' ');
|
||||||
if (larrow)
|
if (larrow)
|
||||||
screen_write_putc(&ctx, &stdgc, ' ');
|
screen_write_putc(&ctx, &stdgc, ' ');
|
||||||
@ -238,7 +266,7 @@ draw:
|
|||||||
if (rlen != 0) {
|
if (rlen != 0) {
|
||||||
screen_write_cursormove(&ctx, c->tty.sx - rlen - 1, yy);
|
screen_write_cursormove(&ctx, c->tty.sx - rlen - 1, yy);
|
||||||
screen_write_putc(&ctx, &stdgc, ' ');
|
screen_write_putc(&ctx, &stdgc, ' ');
|
||||||
screen_write_nputs(&ctx, rlen, &stdgc, utf8flag, "%s", right);
|
screen_write_nputs(&ctx, rlen, &sr_stdgc, utf8flag, "%s", right);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Draw the arrows. */
|
/* Draw the arrows. */
|
||||||
|
12
tmux.1
12
tmux.1
@ -1238,6 +1238,12 @@ By default, UTF-8 in
|
|||||||
is not interpreted, to enable UTF-8, use the
|
is not interpreted, to enable UTF-8, use the
|
||||||
.Ic status-utf8
|
.Ic status-utf8
|
||||||
option.
|
option.
|
||||||
|
.It Ic status-left-attr Ar attributes
|
||||||
|
Set the attribute of the left part of the status line.
|
||||||
|
.It Ic status-left-fg Ar colour
|
||||||
|
Set the foreground colour of the left part of the status line.
|
||||||
|
.It Ic status-left-bg Ar colour
|
||||||
|
Set the background colour of the left part of the status line.
|
||||||
.It Ic status-left-length Ar length
|
.It Ic status-left-length Ar length
|
||||||
Set the maximum
|
Set the maximum
|
||||||
.Ar length
|
.Ar length
|
||||||
@ -1256,6 +1262,12 @@ will be passed to
|
|||||||
character pairs are replaced, and UTF-8 is dependent on the
|
character pairs are replaced, and UTF-8 is dependent on the
|
||||||
.Ic status-utf8
|
.Ic status-utf8
|
||||||
option.
|
option.
|
||||||
|
.It Ic status-right-attr Ar attributes
|
||||||
|
Set the attribute of the right part of the status line.
|
||||||
|
.It Ic status-right-fg Ar colour
|
||||||
|
Set the foreground colour of the right part of the status line.
|
||||||
|
.It Ic status-right-bg Ar colour
|
||||||
|
Set the background colour of the right part of the status line.
|
||||||
.It Ic status-right-length Ar length
|
.It Ic status-right-length Ar length
|
||||||
Set the maximum
|
Set the maximum
|
||||||
.Ar length
|
.Ar length
|
||||||
|
10
tmux.c
10
tmux.c
@ -359,11 +359,17 @@ main(int argc, char **argv)
|
|||||||
options_set_number(&global_s_options, "status-interval", 15);
|
options_set_number(&global_s_options, "status-interval", 15);
|
||||||
options_set_number(&global_s_options, "status-keys", MODEKEY_EMACS);
|
options_set_number(&global_s_options, "status-keys", MODEKEY_EMACS);
|
||||||
options_set_number(&global_s_options, "status-justify", 0);
|
options_set_number(&global_s_options, "status-justify", 0);
|
||||||
options_set_number(&global_s_options, "status-left-length", 10);
|
|
||||||
options_set_number(&global_s_options, "status-right-length", 40);
|
|
||||||
options_set_string(&global_s_options, "status-left", "[#S]");
|
options_set_string(&global_s_options, "status-left", "[#S]");
|
||||||
|
options_set_number(&global_s_options, "status-left-attr", 0);
|
||||||
|
options_set_number(&global_s_options, "status-left-fg", 8);
|
||||||
|
options_set_number(&global_s_options, "status-left-bg", 8);
|
||||||
|
options_set_number(&global_s_options, "status-left-length", 10);
|
||||||
options_set_string(
|
options_set_string(
|
||||||
&global_s_options, "status-right", "\"#22T\" %%H:%%M %%d-%%b-%%y");
|
&global_s_options, "status-right", "\"#22T\" %%H:%%M %%d-%%b-%%y");
|
||||||
|
options_set_number(&global_s_options, "status-right-attr", 0);
|
||||||
|
options_set_number(&global_s_options, "status-right-fg", 8);
|
||||||
|
options_set_number(&global_s_options, "status-right-bg", 8);
|
||||||
|
options_set_number(&global_s_options, "status-right-length", 40);
|
||||||
if (flags & IDENTIFY_UTF8)
|
if (flags & IDENTIFY_UTF8)
|
||||||
options_set_number(&global_s_options, "status-utf8", 1);
|
options_set_number(&global_s_options, "status-utf8", 1);
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user