mirror of
https://github.com/tmate-io/tmate.git
synced 2024-12-23 23:29:15 +01:00
New option, set-titles-string, to allow the window title to be specified (as
for status-left/right) if set-titles is on. Also only update the title when the status line is being redrawn.
This commit is contained in:
parent
5c60162e3c
commit
63d499f480
@ -69,6 +69,7 @@ const struct set_option_entry set_option_table[] = {
|
|||||||
{ "repeat-time", SET_OPTION_NUMBER, 0, SHRT_MAX, NULL },
|
{ "repeat-time", SET_OPTION_NUMBER, 0, SHRT_MAX, NULL },
|
||||||
{ "set-remain-on-exit", SET_OPTION_FLAG, 0, 0, NULL },
|
{ "set-remain-on-exit", SET_OPTION_FLAG, 0, 0, NULL },
|
||||||
{ "set-titles", SET_OPTION_FLAG, 0, 0, NULL },
|
{ "set-titles", SET_OPTION_FLAG, 0, 0, NULL },
|
||||||
|
{ "set-titles-string", SET_OPTION_STRING, 0, 0, NULL },
|
||||||
{ "status", SET_OPTION_FLAG, 0, 0, NULL },
|
{ "status", SET_OPTION_FLAG, 0, 0, NULL },
|
||||||
{ "status-attr", SET_OPTION_ATTRIBUTES, 0, 0, NULL },
|
{ "status-attr", SET_OPTION_ATTRIBUTES, 0, 0, NULL },
|
||||||
{ "status-bg", SET_OPTION_COLOUR, 0, 0, NULL },
|
{ "status-bg", SET_OPTION_COLOUR, 0, 0, NULL },
|
||||||
|
37
server.c
37
server.c
@ -66,6 +66,7 @@ void server_clean_dead(void);
|
|||||||
void server_lost_client(struct client *);
|
void server_lost_client(struct client *);
|
||||||
void server_check_window(struct window *);
|
void server_check_window(struct window *);
|
||||||
void server_check_redraw(struct client *);
|
void server_check_redraw(struct client *);
|
||||||
|
void server_set_title(struct client *);
|
||||||
void server_redraw_locked(struct client *);
|
void server_redraw_locked(struct client *);
|
||||||
void server_check_timers(struct client *);
|
void server_check_timers(struct client *);
|
||||||
void server_second_timers(void);
|
void server_second_timers(void);
|
||||||
@ -516,7 +517,6 @@ server_check_redraw(struct client *c)
|
|||||||
{
|
{
|
||||||
struct session *s;
|
struct session *s;
|
||||||
struct window_pane *wp;
|
struct window_pane *wp;
|
||||||
char title[512];
|
|
||||||
int flags, redraw;
|
int flags, redraw;
|
||||||
|
|
||||||
if (c == NULL || c->session == NULL)
|
if (c == NULL || c->session == NULL)
|
||||||
@ -526,19 +526,10 @@ server_check_redraw(struct client *c)
|
|||||||
flags = c->tty.flags & TTY_FREEZE;
|
flags = c->tty.flags & TTY_FREEZE;
|
||||||
c->tty.flags &= ~TTY_FREEZE;
|
c->tty.flags &= ~TTY_FREEZE;
|
||||||
|
|
||||||
if (options_get_number(&s->options, "set-titles")) {
|
|
||||||
xsnprintf(title, sizeof title, "%s:%u:%s - \"%s\"",
|
|
||||||
s->name, s->curw->idx, s->curw->window->name,
|
|
||||||
s->curw->window->active->screen->title);
|
|
||||||
if (c->title == NULL || strcmp(title, c->title) != 0) {
|
|
||||||
if (c->title != NULL)
|
|
||||||
xfree(c->title);
|
|
||||||
c->title = xstrdup(title);
|
|
||||||
tty_set_title(&c->tty, c->title);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (c->flags & (CLIENT_REDRAW|CLIENT_STATUS)) {
|
if (c->flags & (CLIENT_REDRAW|CLIENT_STATUS)) {
|
||||||
|
if (options_get_number(&s->options, "set-titles"))
|
||||||
|
server_set_title(c);
|
||||||
|
|
||||||
if (c->message_string != NULL)
|
if (c->message_string != NULL)
|
||||||
redraw = status_message_redraw(c);
|
redraw = status_message_redraw(c);
|
||||||
else if (c->prompt_string != NULL)
|
else if (c->prompt_string != NULL)
|
||||||
@ -570,6 +561,26 @@ server_check_redraw(struct client *c)
|
|||||||
c->flags &= ~(CLIENT_REDRAW|CLIENT_STATUS);
|
c->flags &= ~(CLIENT_REDRAW|CLIENT_STATUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set client title. */
|
||||||
|
void
|
||||||
|
server_set_title(struct client *c)
|
||||||
|
{
|
||||||
|
struct session *s = c->session;
|
||||||
|
const char *template;
|
||||||
|
char *title;
|
||||||
|
|
||||||
|
template = options_get_string(&s->options, "set-titles-string");
|
||||||
|
|
||||||
|
title = status_replace(c->session, template, time(NULL));
|
||||||
|
if (c->title == NULL || strcmp(title, c->title) != 0) {
|
||||||
|
if (c->title != NULL)
|
||||||
|
xfree(c->title);
|
||||||
|
c->title = xstrdup(title);
|
||||||
|
tty_set_title(&c->tty, c->title);
|
||||||
|
}
|
||||||
|
xfree(title);
|
||||||
|
}
|
||||||
|
|
||||||
/* Redraw client when locked. */
|
/* Redraw client when locked. */
|
||||||
void
|
void
|
||||||
server_redraw_locked(struct client *c)
|
server_redraw_locked(struct client *c)
|
||||||
|
7
tmux.1
7
tmux.1
@ -1287,6 +1287,13 @@ This option is off by default.
|
|||||||
Note that elinks
|
Note that elinks
|
||||||
will only attempt to set the window title if the STY environment
|
will only attempt to set the window title if the STY environment
|
||||||
variable is set.
|
variable is set.
|
||||||
|
.It Ic set-titles-string Ar string
|
||||||
|
String used to set the window title if
|
||||||
|
.Ic set-titles
|
||||||
|
is on.
|
||||||
|
Character sequences are replaced as for the
|
||||||
|
.Ic status-left
|
||||||
|
option.
|
||||||
.It Xo Ic status
|
.It Xo Ic status
|
||||||
.Op Ic on | off
|
.Op Ic on | off
|
||||||
.Xc
|
.Xc
|
||||||
|
1
tmux.c
1
tmux.c
@ -413,6 +413,7 @@ main(int argc, char **argv)
|
|||||||
options_set_number(so, "repeat-time", 500);
|
options_set_number(so, "repeat-time", 500);
|
||||||
options_set_number(so, "set-remain-on-exit", 0);
|
options_set_number(so, "set-remain-on-exit", 0);
|
||||||
options_set_number(so, "set-titles", 0);
|
options_set_number(so, "set-titles", 0);
|
||||||
|
options_set_string(so, "set-titles-string", "#S:#I:#W - \"#T\"");
|
||||||
options_set_number(so, "status", 1);
|
options_set_number(so, "status", 1);
|
||||||
options_set_number(so, "status-attr", 0);
|
options_set_number(so, "status-attr", 0);
|
||||||
options_set_number(so, "status-bg", 2);
|
options_set_number(so, "status-bg", 2);
|
||||||
|
Loading…
Reference in New Issue
Block a user