aboutsummaryrefslogtreecommitdiffstats
path: root/sway/ipc-json.c
diff options
context:
space:
mode:
authorLibravatar Franklin "Snaipe" Mathieu <snaipe@diacritic.io>2018-10-27 18:35:31 +0100
committerLibravatar Franklin "Snaipe" Mathieu <snaipe@diacritic.io>2018-10-27 18:41:26 +0100
commit03ca8596d6bcec0a83567d9b51a71ccc7db197e5 (patch)
tree6f8aee7b3f5e85e3b9517540834ecc9875f35e6c /sway/ipc-json.c
parentipc: remove class key from view json (diff)
downloadsway-03ca8596d6bcec0a83567d9b51a71ccc7db197e5.tar.gz
sway-03ca8596d6bcec0a83567d9b51a71ccc7db197e5.tar.zst
sway-03ca8596d6bcec0a83567d9b51a71ccc7db197e5.zip
ipc: make class, instance, and title window properties optional
i3 seems to make all window properties, with the exception of transient_for, optional[1]. [1]: https://github.com/i3/i3/blob/315ff17563fd703b2f5117b2ec4d46e89389d323/src/ipc.c#L435-L450 Signed-off-by: Franklin "Snaipe" Mathieu <snaipe@diacritic.io>
Diffstat (limited to 'sway/ipc-json.c')
-rw-r--r--sway/ipc-json.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index 5d1393bc..5c9b3e5a 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -266,13 +266,16 @@ static void ipc_json_describe_view(struct sway_container *c, json_object *object
266 json_object *window_props = json_object_new_object(); 266 json_object *window_props = json_object_new_object();
267 267
268 const char *class = view_get_class(c->view); 268 const char *class = view_get_class(c->view);
269 json_object_object_add(window_props, "class", 269 if (class) {
270 class ? json_object_new_string(class) : NULL); 270 json_object_object_add(window_props, "class", json_object_new_string(class));
271 }
271 const char *instance = view_get_instance(c->view); 272 const char *instance = view_get_instance(c->view);
272 json_object_object_add(window_props, "instance", 273 if (instance) {
273 instance ? json_object_new_string(instance) : NULL); 274 json_object_object_add(window_props, "instance", json_object_new_string(instance));
274 json_object_object_add(window_props, "title", 275 }
275 c->title ? json_object_new_string(c->title) : NULL); 276 if (c->title) {
277 json_object_object_add(window_props, "title", json_object_new_string(c->title));
278 }
276 279
277 // the transient_for key is always present in i3's output 280 // the transient_for key is always present in i3's output
278 uint32_t parent_id = view_get_x11_parent_id(c->view); 281 uint32_t parent_id = view_get_x11_parent_id(c->view);
@@ -281,8 +284,7 @@ static void ipc_json_describe_view(struct sway_container *c, json_object *object
281 284
282 const char *role = view_get_window_role(c->view); 285 const char *role = view_get_window_role(c->view);
283 if (role) { 286 if (role) {
284 json_object_object_add(window_props, "window_role", 287 json_object_object_add(window_props, "window_role", json_object_new_string(role));
285 json_object_new_string(role));
286 } 288 }
287 289
288 json_object_object_add(object, "window_properties", window_props); 290 json_object_object_add(object, "window_properties", window_props);