aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlbonn <bonnans.l@gmail.com>2017-10-07 22:02:08 +0200
committerlbonn <bonnans.l@gmail.com>2017-10-08 11:51:03 +0200
commit661625b29edb820a7e6d29f4eafcdd3d9610ef22 (patch)
treed6b29900f5a9b12b0eafcfdae874b6e20bed1822
parente7df811f100f74dc005efcd12818742f040cb940 (diff)
downloadsway-661625b29edb820a7e6d29f4eafcdd3d9610ef22.zip
sway-661625b29edb820a7e6d29f4eafcdd3d9610ef22.tar.gz
sway-661625b29edb820a7e6d29f4eafcdd3d9610ef22.tar.bz2
ipc/tree: output mandatory fields for all nodes
Still missing: focus
-rw-r--r--sway/ipc-json.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index 31de53f..775fcc2 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -138,7 +138,6 @@ static void ipc_json_describe_workspace(swayc_t *workspace, json_object *object)
json_object_object_add(object, "num", json_object_new_int(num));
json_object_object_add(object, "output", (workspace->parent) ? json_object_new_string(workspace->parent->name) : NULL);
- json_object_object_add(object, "urgent", json_object_new_boolean(false));
json_object_object_add(object, "type", json_object_new_string("workspace"));
json_object_object_add(object, "layout", (strcmp(layout, "null") == 0) ? NULL : json_object_new_string(layout));
}
@@ -156,7 +155,6 @@ static const char *ipc_json_get_scratchpad_state(swayc_t *c) {
static void ipc_json_describe_view(swayc_t *c, json_object *object) {
json_object *props = json_object_new_object();
- float percent = ipc_json_child_percentage(c);
const char *layout = (c->parent->type == C_CONTAINER) ?
ipc_json_layout_description(c->parent->layout) : "none";
const char *last_layout = (c->parent->type == C_CONTAINER) ?
@@ -167,9 +165,6 @@ static void ipc_json_describe_view(swayc_t *c, json_object *object) {
json_object_object_add(object, "scratchpad_state",
json_object_new_string(ipc_json_get_scratchpad_state(c)));
- json_object_object_add(object, "percent", (percent > 0) ? json_object_new_double(percent) : NULL);
- // TODO: make urgency actually work once Sway supports it
- json_object_object_add(object, "urgent", json_object_new_boolean(false));
json_object_object_add(object, "layout",
(strcmp(layout, "null") == 0) ? NULL : json_object_new_string(layout));
json_object_object_add(object, "last_split_layout",
@@ -177,17 +172,8 @@ static void ipc_json_describe_view(swayc_t *c, json_object *object) {
json_object_object_add(object, "workspace_layout",
json_object_new_string(ipc_json_layout_description(swayc_parent_by_type(c, C_WORKSPACE)->workspace_layout)));
- json_object_object_add(object, "border", json_object_new_string(ipc_json_border_description(c)));
- json_object_object_add(object, "current_border_width", json_object_new_int(c->border_thickness));
-
- json_object_object_add(object, "rect", ipc_json_create_rect(c));
- json_object_object_add(object, "deco_rect", ipc_json_create_rect_from_geometry(c->title_bar_geometry));
- json_object_object_add(object, "geometry", ipc_json_create_rect_from_geometry(c->cached_geometry));
- json_object_object_add(object, "window_rect", ipc_json_create_rect_from_geometry(c->actual_geometry));
-
json_object_object_add(object, "name", (c->name) ? json_object_new_string(c->name) : NULL);
- json_object_object_add(object, "window", json_object_new_int(c->handle)); // for the sake of i3 compat
json_object_object_add(props, "class", c->class ? json_object_new_string(c->class) :
c->app_id ? json_object_new_string(c->app_id) : NULL);
json_object_object_add(props, "instance", c->instance ? json_object_new_string(c->instance) :
@@ -205,7 +191,14 @@ static void ipc_json_describe_view(swayc_t *c, json_object *object) {
json_object_object_add(object, "app_id", c->app_id ? json_object_new_string(c->app_id) : NULL);
}
+static void ipc_json_describe_root(swayc_t *c, json_object *object) {
+ json_object_object_add(object, "type", json_object_new_string("root"));
+ json_object_object_add(object, "layout", json_object_new_string("splith"));
+}
+
json_object *ipc_json_describe_container(swayc_t *c) {
+ float percent = ipc_json_child_percentage(c);
+
if (!(sway_assert(c, "Container must not be null."))) {
return NULL;
}
@@ -218,9 +211,19 @@ json_object *ipc_json_describe_container(swayc_t *c) {
json_object_object_add(object, "visible", json_object_new_boolean(c->visible));
json_object_object_add(object, "focused", json_object_new_boolean(c == current_focus));
+ json_object_object_add(object, "border", json_object_new_string(ipc_json_border_description(c)));
+ json_object_object_add(object, "window_rect", ipc_json_create_rect_from_geometry(c->actual_geometry));
+ json_object_object_add(object, "deco_rect", ipc_json_create_rect_from_geometry(c->title_bar_geometry));
+ json_object_object_add(object, "geometry", ipc_json_create_rect_from_geometry(c->cached_geometry));
+ json_object_object_add(object, "percent", (percent > 0) ? json_object_new_double(percent) : NULL);
+ json_object_object_add(object, "window", json_object_new_int(c->handle)); // for the sake of i3 compat
+ // TODO: make urgency actually work once Sway supports it
+ json_object_object_add(object, "urgent", json_object_new_boolean(false));
+ json_object_object_add(object, "current_border_width", json_object_new_int(c->border_thickness));
+
switch (c->type) {
case C_ROOT:
- json_object_object_add(object, "type", json_object_new_string("root"));
+ ipc_json_describe_root(c, object);
break;
case C_OUTPUT: