summaryrefslogtreecommitdiffstats
path: root/window-client.c
diff options
context:
space:
mode:
authornicm <nicm>2017-06-08 07:48:04 +0000
committernicm <nicm>2017-06-08 07:48:04 +0000
commit8c4ae1c938b557f6cc9a6954aaa969dbba5e5d98 (patch)
tree9c94525212dbb00e9291cce9568d570d85a769b5 /window-client.c
parent356fab7bcb378d0adad487dc6898085b58d54fec (diff)
Add size to client descriptions in list, suggested by Greg Hurrell.
Diffstat (limited to 'window-client.c')
-rw-r--r--window-client.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/window-client.c b/window-client.c
index bb33b0f4..483ce8fe 100644
--- a/window-client.c
+++ b/window-client.c
@@ -47,11 +47,13 @@ const struct window_mode window_client_mode = {
enum window_client_sort_type {
WINDOW_CLIENT_BY_NAME,
+ WINDOW_CLIENT_BY_SIZE,
WINDOW_CLIENT_BY_CREATION_TIME,
WINDOW_CLIENT_BY_ACTIVITY_TIME,
};
static const char *window_client_sort_list[] = {
"name",
+ "size",
"creation time",
"activity time"
};
@@ -96,6 +98,23 @@ window_client_cmp_name(const void *a0, const void *b0)
}
static int
+window_client_cmp_size(const void *a0, const void *b0)
+{
+ const struct window_client_itemdata *const *a = a0;
+ const struct window_client_itemdata *const *b = b0;
+
+ if ((*a)->c->tty.sx < (*b)->c->tty.sx)
+ return (-1);
+ if ((*a)->c->tty.sx > (*b)->c->tty.sx)
+ return (1);
+ if ((*a)->c->tty.sy < (*b)->c->tty.sy)
+ return (-1);
+ if ((*a)->c->tty.sy > (*b)->c->tty.sy)
+ return (1);
+ return (strcmp((*a)->c->name, (*b)->c->name));
+}
+
+static int
window_client_cmp_creation_time(const void *a0, const void *b0)
{
const struct window_client_itemdata *const *a = a0;
@@ -105,7 +124,7 @@ window_client_cmp_creation_time(const void *a0, const void *b0)
return (-1);
if (timercmp(&(*a)->c->creation_time, &(*b)->c->creation_time, <))
return (1);
- return (0);
+ return (strcmp((*a)->c->name, (*b)->c->name));
}
static int
@@ -118,7 +137,7 @@ window_client_cmp_activity_time(const void *a0, const void *b0)
return (-1);
if (timercmp(&(*a)->c->activity_time, &(*b)->c->activity_time, <))
return (1);
- return (0);
+ return (strcmp((*a)->c->name, (*b)->c->name));
}
static void
@@ -152,6 +171,10 @@ window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag)
qsort(data->item_list, data->item_size, sizeof *data->item_list,
window_client_cmp_name);
break;
+ case WINDOW_CLIENT_BY_SIZE:
+ qsort(data->item_list, data->item_size, sizeof *data->item_list,
+ window_client_cmp_size);
+ break;
case WINDOW_CLIENT_BY_CREATION_TIME:
qsort(data->item_list, data->item_size, sizeof *data->item_list,
window_client_cmp_creation_time);
@@ -169,7 +192,8 @@ window_client_build(void *modedata, u_int sort_type, __unused uint64_t *tag)
tim = ctime(&c->activity_time.tv_sec);
*strchr(tim, '\n') = '\0';
- xasprintf(&text, "session %s (%s)", c->session->name, tim);
+ xasprintf(&text, "session %s (%ux%u, %s)", c->session->name,
+ c->tty.sx, c->tty.sy, tim);
mode_tree_add(data->data, NULL, item, (uint64_t)c, c->name,
text, -1);
free(text);