summaryrefslogtreecommitdiffstats
path: root/sway/ipc-json.c
diff options
context:
space:
mode:
authorLibravatar Jason Nader <jason.nader@protonmail.com>2020-02-13 07:20:33 +0900
committerLibravatar Drew DeVault <sir@cmpwn.com>2020-02-17 21:58:05 +0100
commit8608a1c38b4579b09042a52668d2198f22fffad8 (patch)
tree3a9c592ae73135e381b0ab9a500b741fba52fe65 /sway/ipc-json.c
parentSpecify that output transform applies clockwise rotations (diff)
downloadsway-8608a1c38b4579b09042a52668d2198f22fffad8.tar.gz
sway-8608a1c38b4579b09042a52668d2198f22fffad8.tar.zst
sway-8608a1c38b4579b09042a52668d2198f22fffad8.zip
i3compat: add `window_type` to IPC response
i3 added these in i3/i3#3797
Diffstat (limited to 'sway/ipc-json.c')
-rw-r--r--sway/ipc-json.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index 2e75b595..19fdba11 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -85,6 +85,35 @@ static const char *ipc_json_output_transform_description(enum wl_output_transfor
85 return NULL; 85 return NULL;
86} 86}
87 87
88#if HAVE_XWAYLAND
89static const char *ipc_json_xwindow_type_description(enum atom_name window_type) {
90 switch (window_type) {
91 case NET_WM_WINDOW_TYPE_NORMAL:
92 return "normal";
93 case NET_WM_WINDOW_TYPE_DIALOG:
94 return "dialog";
95 case NET_WM_WINDOW_TYPE_UTILITY:
96 return "utility";
97 case NET_WM_WINDOW_TYPE_TOOLBAR:
98 return "toolbar";
99 case NET_WM_WINDOW_TYPE_SPLASH:
100 return "splash";
101 case NET_WM_WINDOW_TYPE_MENU:
102 return "menu";
103 case NET_WM_WINDOW_TYPE_DROPDOWN_MENU:
104 return "dropdown_menu";
105 case NET_WM_WINDOW_TYPE_POPUP_MENU:
106 return "popup_menu";
107 case NET_WM_WINDOW_TYPE_TOOLTIP:
108 return "tooltip";
109 case NET_WM_WINDOW_TYPE_NOTIFICATION:
110 return "notification";
111 default:
112 return "unknown";
113 }
114}
115#endif
116
88json_object *ipc_json_get_version(void) { 117json_object *ipc_json_get_version(void) {
89 int major = 0, minor = 0, patch = 0; 118 int major = 0, minor = 0, patch = 0;
90 json_object *version = json_object_new_object(); 119 json_object *version = json_object_new_object();
@@ -452,6 +481,13 @@ static void ipc_json_describe_view(struct sway_container *c, json_object *object
452 json_object_object_add(window_props, "window_role", json_object_new_string(role)); 481 json_object_object_add(window_props, "window_role", json_object_new_string(role));
453 } 482 }
454 483
484 uint32_t window_type = view_get_window_type(c->view);
485 if (window_type) {
486 json_object_object_add(window_props, "window_type",
487 json_object_new_string(
488 ipc_json_xwindow_type_description(window_type)));
489 }
490
455 json_object_object_add(object, "window_properties", window_props); 491 json_object_object_add(object, "window_properties", window_props);
456 } 492 }
457#endif 493#endif