mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	Options to set the colours and attributes for status-left/-right. From Thomas
Adam, thanks.
This commit is contained in:
		| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Nicholas Marriott
					Nicholas Marriott