diff options
author | Tony Crisci <tony@dubstepdish.com> | 2018-04-05 17:33:35 -0400 |
---|---|---|
committer | Tony Crisci <tony@dubstepdish.com> | 2018-04-05 17:33:35 -0400 |
commit | bbfc5487bce982ad7ad782fe00e7ac7c8de4c9d2 (patch) | |
tree | 8559f475468407e37ea9ce31e2b90216596fadda | |
parent | Merge pull request #1745 from swaywm/swaybar-hotplugging (diff) | |
download | sway-bbfc5487bce982ad7ad782fe00e7ac7c8de4c9d2.tar.gz sway-bbfc5487bce982ad7ad782fe00e7ac7c8de4c9d2.tar.zst sway-bbfc5487bce982ad7ad782fe00e7ac7c8de4c9d2.zip |
add layout to ipc containers
-rw-r--r-- | sway/ipc-json.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/sway/ipc-json.c b/sway/ipc-json.c index 54824a36..44828a0d 100644 --- a/sway/ipc-json.c +++ b/sway/ipc-json.c | |||
@@ -11,6 +11,40 @@ | |||
11 | #include <wlr/types/wlr_output.h> | 11 | #include <wlr/types/wlr_output.h> |
12 | #include "wlr-layer-shell-unstable-v1-protocol.h" | 12 | #include "wlr-layer-shell-unstable-v1-protocol.h" |
13 | 13 | ||
14 | static const char *ipc_json_layout_description(enum sway_container_layout l) { | ||
15 | const char *layout; | ||
16 | |||
17 | switch (l) { | ||
18 | case L_VERT: | ||
19 | layout = "splitv"; | ||
20 | break; | ||
21 | |||
22 | case L_HORIZ: | ||
23 | layout = "splith"; | ||
24 | break; | ||
25 | |||
26 | case L_TABBED: | ||
27 | layout = "tabbed"; | ||
28 | break; | ||
29 | |||
30 | case L_STACKED: | ||
31 | layout = "stacked"; | ||
32 | break; | ||
33 | |||
34 | case L_FLOATING: | ||
35 | layout = "floating"; | ||
36 | break; | ||
37 | |||
38 | case L_NONE: // fallthrough | ||
39 | case L_LAYOUTS: // fallthrough; this should never happen, I'm just trying to silence compiler warnings | ||
40 | default: | ||
41 | layout = "null"; | ||
42 | break; | ||
43 | } | ||
44 | |||
45 | return layout; | ||
46 | } | ||
47 | |||
14 | json_object *ipc_json_get_version() { | 48 | json_object *ipc_json_get_version() { |
15 | int major = 0, minor = 0, patch = 0; | 49 | int major = 0, minor = 0, patch = 0; |
16 | json_object *version = json_object_new_object(); | 50 | json_object *version = json_object_new_object(); |
@@ -116,6 +150,9 @@ static void ipc_json_describe_output(struct sway_container *container, json_obje | |||
116 | json_object_array_add(modes_array, mode_object); | 150 | json_object_array_add(modes_array, mode_object); |
117 | } | 151 | } |
118 | json_object_object_add(object, "modes", modes_array); | 152 | json_object_object_add(object, "modes", modes_array); |
153 | |||
154 | |||
155 | json_object_object_add(object, "layout", json_object_new_string("output")); | ||
119 | } | 156 | } |
120 | 157 | ||
121 | static void ipc_json_describe_workspace(struct sway_container *workspace, | 158 | static void ipc_json_describe_workspace(struct sway_container *workspace, |
@@ -127,12 +164,23 @@ static void ipc_json_describe_workspace(struct sway_container *workspace, | |||
127 | json_object_new_string(workspace->parent->name) : NULL); | 164 | json_object_new_string(workspace->parent->name) : NULL); |
128 | json_object_object_add(object, "type", json_object_new_string("workspace")); | 165 | json_object_object_add(object, "type", json_object_new_string("workspace")); |
129 | json_object_object_add(object, "urgent", json_object_new_boolean(false)); | 166 | json_object_object_add(object, "urgent", json_object_new_boolean(false)); |
167 | |||
168 | const char *layout = ipc_json_layout_description(workspace->workspace_layout); | ||
169 | json_object_object_add(object, "layout", (strcmp(layout, "null") == 0) ? | ||
170 | NULL : json_object_new_string(layout)); | ||
130 | } | 171 | } |
131 | 172 | ||
132 | static void ipc_json_describe_view(struct sway_container *c, json_object *object) { | 173 | static void ipc_json_describe_view(struct sway_container *c, json_object *object) { |
133 | json_object_object_add(object, "name", | 174 | json_object_object_add(object, "name", |
134 | c->name ? json_object_new_string(c->name) : NULL); | 175 | c->name ? json_object_new_string(c->name) : NULL); |
135 | json_object_object_add(object, "type", json_object_new_string("con")); | 176 | json_object_object_add(object, "type", json_object_new_string("con")); |
177 | |||
178 | if (c->parent) { | ||
179 | const char *layout = (c->parent->type == C_CONTAINER) ? | ||
180 | ipc_json_layout_description(c->parent->layout) : "none"; | ||
181 | json_object_object_add(object, "layout", | ||
182 | (strcmp(layout, "null") == 0) ? NULL : json_object_new_string(layout)); | ||
183 | } | ||
136 | } | 184 | } |
137 | 185 | ||
138 | json_object *ipc_json_describe_container(struct sway_container *c) { | 186 | json_object *ipc_json_describe_container(struct sway_container *c) { |