summaryrefslogtreecommitdiffstats
path: root/window-client.c
diff options
context:
space:
mode:
authornicm <nicm>2017-08-09 11:43:45 +0000
committernicm <nicm>2017-08-09 11:43:45 +0000
commit5dd5543fe42d4d485b9020f3ce8b8d4d47d29001 (patch)
tree5981d6d6a70649f0ff6f745d15a36fdfc2d3c3ca /window-client.c
parent31b06571aa565c347c89458a1b357c6cd5d289be (diff)
Add -F to choose-tree, choose-client, choose-buffer to specify the
format of each line, as well as adding a couple of formats needed for the default display.
Diffstat (limited to 'window-client.c')
-rw-r--r--window-client.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/window-client.c b/window-client.c
index 2e72a398..214d3b7c 100644
--- a/window-client.c
+++ b/window-client.c
@@ -36,6 +36,10 @@ static void window_client_key(struct window_pane *,
#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_itemdata {
struct window_client_modedata {
struct mode_tree_data *data;
+ char *format;
char *command;
struct window_client_itemdata **item_list;
@@ -148,7 +153,7 @@ window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag,
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 @@ window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag,
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 @@ window_client_init(struct window_pane *wp, __unused struct cmd_find_state *fs,
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(struct window_pane *wp)
window_client_free_item(data->item_list[i]);
free(data->item_list);
+ free(data->format);
free(data->command);
+
free(data);
}