diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-09-18 15:19:27 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-09-18 15:19:27 +0000 |
commit | 63d499f480e264f8251552fb6d16965a1065e0e6 (patch) | |
tree | b5d14ca954947eda66d20562649e43b7da792adf /server.c | |
parent | 5c60162e3c4f8ac9deede6c0fb5a21930d92e3b4 (diff) | |
download | rtmux-63d499f480e264f8251552fb6d16965a1065e0e6.tar.gz rtmux-63d499f480e264f8251552fb6d16965a1065e0e6.tar.bz2 rtmux-63d499f480e264f8251552fb6d16965a1065e0e6.zip |
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.
Diffstat (limited to 'server.c')
-rw-r--r-- | server.c | 37 |
1 files changed, 24 insertions, 13 deletions
@@ -66,6 +66,7 @@ void server_clean_dead(void); void server_lost_client(struct client *); void server_check_window(struct window *); void server_check_redraw(struct client *); +void server_set_title(struct client *); void server_redraw_locked(struct client *); void server_check_timers(struct client *); void server_second_timers(void); @@ -516,7 +517,6 @@ server_check_redraw(struct client *c) { struct session *s; struct window_pane *wp; - char title[512]; int flags, redraw; if (c == NULL || c->session == NULL) @@ -526,19 +526,10 @@ server_check_redraw(struct client *c) flags = 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 (options_get_number(&s->options, "set-titles")) + server_set_title(c); + if (c->message_string != NULL) redraw = status_message_redraw(c); else if (c->prompt_string != NULL) @@ -570,6 +561,26 @@ server_check_redraw(struct client *c) 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. */ void server_redraw_locked(struct client *c) |