From 8608a1c38b4579b09042a52668d2198f22fffad8 Mon Sep 17 00:00:00 2001 From: Jason Nader Date: Thu, 13 Feb 2020 07:20:33 +0900 Subject: [PATCH] i3compat: add `window_type` to IPC response i3 added these in i3/i3#3797 --- sway/ipc-json.c | 36 ++++++++++++++++++++++++++++++++++++ sway/sway-ipc.7.scd | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/sway/ipc-json.c b/sway/ipc-json.c index 2e75b5951..19fdba111 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 return NULL; } +#if HAVE_XWAYLAND +static const char *ipc_json_xwindow_type_description(enum atom_name window_type) { + switch (window_type) { + case NET_WM_WINDOW_TYPE_NORMAL: + return "normal"; + case NET_WM_WINDOW_TYPE_DIALOG: + return "dialog"; + case NET_WM_WINDOW_TYPE_UTILITY: + return "utility"; + case NET_WM_WINDOW_TYPE_TOOLBAR: + return "toolbar"; + case NET_WM_WINDOW_TYPE_SPLASH: + return "splash"; + case NET_WM_WINDOW_TYPE_MENU: + return "menu"; + case NET_WM_WINDOW_TYPE_DROPDOWN_MENU: + return "dropdown_menu"; + case NET_WM_WINDOW_TYPE_POPUP_MENU: + return "popup_menu"; + case NET_WM_WINDOW_TYPE_TOOLTIP: + return "tooltip"; + case NET_WM_WINDOW_TYPE_NOTIFICATION: + return "notification"; + default: + return "unknown"; + } +} +#endif + json_object *ipc_json_get_version(void) { int major = 0, minor = 0, patch = 0; json_object *version = json_object_new_object(); @@ -452,6 +481,13 @@ static void ipc_json_describe_view(struct sway_container *c, json_object *object json_object_object_add(window_props, "window_role", json_object_new_string(role)); } + uint32_t window_type = view_get_window_type(c->view); + if (window_type) { + json_object_object_add(window_props, "window_type", + json_object_new_string( + ipc_json_xwindow_type_description(window_type))); + } + json_object_object_add(object, "window_properties", window_props); } #endif diff --git a/sway/sway-ipc.7.scd b/sway/sway-ipc.7.scd index 6725b2552..ab61f8643 100644 --- a/sway/sway-ipc.7.scd +++ b/sway/sway-ipc.7.scd @@ -382,7 +382,7 @@ node and will have the following properties: |- window_properties : object : (Only xwayland views) An object containing the _title_, _class_, _instance_, - _window\_role_, and _transient\_for_ for the view + _window\_role_, _window\_type_, and _transient\_for_ for the view *Example Reply:*