From 6f4cb2b29d5a708d58a88c40ed6cc01bf471a8f0 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 29 May 2018 17:42:11 +1000 Subject: [PATCH] Add tree representation to IPC workspace description --- sway/ipc-json.c | 2 ++ sway/tree/container.c | 10 ++++++---- swaymsg/main.c | 10 +++++++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/sway/ipc-json.c b/sway/ipc-json.c index ad37216f..0233a36e 100644 --- a/sway/ipc-json.c +++ b/sway/ipc-json.c @@ -147,6 +147,8 @@ static void ipc_json_describe_workspace(struct sway_container *workspace, json_object_new_string(workspace->parent->name) : NULL); json_object_object_add(object, "type", json_object_new_string("workspace")); json_object_object_add(object, "urgent", json_object_new_boolean(false)); + json_object_object_add(object, "representation", workspace->formatted_title ? + json_object_new_string(workspace->formatted_title) : NULL); const char *layout = ipc_json_layout_description(workspace->layout); json_object_object_add(object, "layout", json_object_new_string(layout)); diff --git a/sway/tree/container.c b/sway/tree/container.c index 59137d88..33d88d7f 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c @@ -842,7 +842,7 @@ static size_t get_tree_representation(struct sway_container *parent, char *buffe } void container_notify_subtree_changed(struct sway_container *container) { - if (!container || container->type != C_CONTAINER) { + if (!container || container->type < C_WORKSPACE) { return; } free(container->formatted_title); @@ -856,9 +856,11 @@ void container_notify_subtree_changed(struct sway_container *container) { get_tree_representation(container, buffer); container->formatted_title = buffer; - container_calculate_title_height(container); - container_update_title_textures(container); - container_notify_subtree_changed(container->parent); + if (container->type != C_WORKSPACE) { + container_calculate_title_height(container); + container_update_title_textures(container); + container_notify_subtree_changed(container->parent); + } } size_t container_titlebar_height() { diff --git a/swaymsg/main.c b/swaymsg/main.c index bf56b80d..8a53474b 100644 --- a/swaymsg/main.c +++ b/swaymsg/main.c @@ -53,24 +53,28 @@ static void pretty_print_cmd(json_object *r) { } static void pretty_print_workspace(json_object *w) { - json_object *name, *rect, *visible, *output, *urgent, *layout, *focused; + json_object *name, *rect, *visible, *output, *urgent, *layout, + *representation, *focused; json_object_object_get_ex(w, "name", &name); json_object_object_get_ex(w, "rect", &rect); json_object_object_get_ex(w, "visible", &visible); json_object_object_get_ex(w, "output", &output); json_object_object_get_ex(w, "urgent", &urgent); json_object_object_get_ex(w, "layout", &layout); + json_object_object_get_ex(w, "representation", &representation); json_object_object_get_ex(w, "focused", &focused); printf( "Workspace %s%s%s%s\n" " Output: %s\n" - " Layout: %s\n\n", + " Layout: %s\n" + " Representation: %s\n\n", json_object_get_string(name), json_object_get_boolean(focused) ? " (focused)" : "", !json_object_get_boolean(visible) ? " (off-screen)" : "", json_object_get_boolean(urgent) ? " (urgent)" : "", json_object_get_string(output), - json_object_get_string(layout) + json_object_get_string(layout), + json_object_get_string(representation) ); }