=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-client.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- src/usr.bin/tmux/window-client.c 2017/06/30 22:24:08 1.7 +++ src/usr.bin/tmux/window-client.c 2017/08/09 11:43:45 1.8 @@ -1,4 +1,4 @@ -/* $OpenBSD: window-client.c,v 1.7 2017/06/30 22:24:08 nicm Exp $ */ +/* $OpenBSD: window-client.c,v 1.8 2017/08/09 11:43:45 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott @@ -36,6 +36,10 @@ #define WINDOW_CLIENT_DEFAULT_COMMAND "detach-client -t '%%'" +#define WINDOW_CLIENT_DEFAULT_FORMAT \ + "session #{session_name} " \ + "(#{client_width}x#{client_height}, #{t:client_activity})" + const struct window_mode window_client_mode = { .name = "client-mode", @@ -64,6 +68,7 @@ struct window_client_modedata { struct mode_tree_data *data; + char *format; char *command; struct window_client_itemdata **item_list; @@ -148,7 +153,7 @@ struct window_client_itemdata *item; u_int i; struct client *c; - char *tim, *text, *cp; + char *text, *cp; for (i = 0; i < data->item_size; i++) window_client_free_item(data->item_list[i]); @@ -198,11 +203,7 @@ free(cp); } - tim = ctime(&c->activity_time.tv_sec); - *strchr(tim, '\n') = '\0'; - - xasprintf(&text, "session %s (%ux%u, %s)", c->session->name, - c->tty.sx, c->tty.sy, tim); + text = format_single(NULL, data->format, c, NULL, NULL, NULL); mode_tree_add(data->data, NULL, item, (uint64_t)c, c->name, text, -1); free(text); @@ -251,6 +252,10 @@ wp->modedata = data = xcalloc(1, sizeof *data); + if (args == NULL || !args_has(args, 'F')) + data->format = xstrdup(WINDOW_CLIENT_DEFAULT_FORMAT); + else + data->format = xstrdup(args_get(args, 'F')); if (args == NULL || args->argc == 0) data->command = xstrdup(WINDOW_CLIENT_DEFAULT_COMMAND); else @@ -281,7 +286,9 @@ window_client_free_item(data->item_list[i]); free(data->item_list); + free(data->format); free(data->command); + free(data); }