diff --git a/include/sway/xwayland.h b/include/sway/xwayland.h index 121edad30..93055c46c 100644 --- a/include/sway/xwayland.h +++ b/include/sway/xwayland.h @@ -10,6 +10,11 @@ enum atom_name { NET_WM_WINDOW_TYPE_UTILITY, NET_WM_WINDOW_TYPE_TOOLBAR, NET_WM_WINDOW_TYPE_SPLASH, + NET_WM_WINDOW_TYPE_MENU, + NET_WM_WINDOW_TYPE_DROPDOWN_MENU, + NET_WM_WINDOW_TYPE_POPUP_MENU, + NET_WM_WINDOW_TYPE_TOOLTIP, + NET_WM_WINDOW_TYPE_NOTIFICATION, NET_WM_STATE_MODAL, ATOM_LAST, }; diff --git a/sway/criteria.c b/sway/criteria.c index e00d638c3..89630d902 100644 --- a/sway/criteria.c +++ b/sway/criteria.c @@ -286,6 +286,16 @@ static enum atom_name parse_window_type(const char *type) { return NET_WM_WINDOW_TYPE_TOOLBAR; } else if (strcasecmp(type, "splash") == 0) { return NET_WM_WINDOW_TYPE_SPLASH; + } else if (strcasecmp(type, "menu") == 0) { + return NET_WM_WINDOW_TYPE_MENU; + } else if (strcasecmp(type, "dropdown_menu") == 0) { + return NET_WM_WINDOW_TYPE_DROPDOWN_MENU; + } else if (strcasecmp(type, "popup_menu") == 0) { + return NET_WM_WINDOW_TYPE_POPUP_MENU; + } else if (strcasecmp(type, "tooltip") == 0) { + return NET_WM_WINDOW_TYPE_TOOLTIP; + } else if (strcasecmp(type, "notification") == 0) { + return NET_WM_WINDOW_TYPE_NOTIFICATION; } return ATOM_LAST; // ie. invalid } diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c index 58cb4d071..b8ac8434b 100644 --- a/sway/desktop/xwayland.c +++ b/sway/desktop/xwayland.c @@ -23,6 +23,11 @@ static const char *atom_map[ATOM_LAST] = { "_NET_WM_WINDOW_TYPE_UTILITY", "_NET_WM_WINDOW_TYPE_TOOLBAR", "_NET_WM_WINDOW_TYPE_SPLASH", + "_NET_WM_WINDOW_TYPE_MENU", + "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU", + "_NET_WM_WINDOW_TYPE_POPUP_MENU", + "_NET_WM_WINDOW_TYPE_TOOLTIP", + "_NET_WM_WINDOW_TYPE_NOTIFICATION", "_NET_WM_STATE_MODAL", };