From: Florian Merkel Date: Mon, 7 Dec 2015 11:34:24 +0000 (+0100) Subject: Support matching _NET_WM_WINDOW_TYPE_NOTIFICATION X-Git-Tag: 4.12~87^2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=refs%2Fpull%2F2102%2Fhead;p=i3%2Fi3 Support matching _NET_WM_WINDOW_TYPE_NOTIFICATION This commit fixes #1969 by adding support for matching a window's type against _NET_WM_WINDOW_TYPE_NOTIFICATION. The userguide and tests were updated to reflect this change. --- diff --git a/docs/userguide b/docs/userguide index e596aeae..69f7da92 100644 --- a/docs/userguide +++ b/docs/userguide @@ -1657,7 +1657,7 @@ window_role:: window_type:: Compare the window type (_NET_WM_WINDOW_TYPE). Possible values are +normal+, +dialog+, +utility+, +toolbar+, +splash+, +menu+, +dropdown_menu+, - +popup_menu+ and +tooltip+. + +popup_menu+, +tooltip+ and +notification+. id:: Compares the X11 window ID, which you can get via +xwininfo+ for example. title:: diff --git a/include/atoms.xmacro b/include/atoms.xmacro index 8798528a..139b6efb 100644 --- a/include/atoms.xmacro +++ b/include/atoms.xmacro @@ -20,6 +20,7 @@ xmacro(_NET_WM_WINDOW_TYPE_MENU) xmacro(_NET_WM_WINDOW_TYPE_DROPDOWN_MENU) xmacro(_NET_WM_WINDOW_TYPE_POPUP_MENU) xmacro(_NET_WM_WINDOW_TYPE_TOOLTIP) +xmacro(_NET_WM_WINDOW_TYPE_NOTIFICATION) xmacro(_NET_WM_DESKTOP) xmacro(_NET_WM_STRUT_PARTIAL) xmacro(_NET_CLIENT_LIST) diff --git a/src/match.c b/src/match.c index caeb909f..bbb239ac 100644 --- a/src/match.c +++ b/src/match.c @@ -330,6 +330,8 @@ void match_parse_property(Match *match, const char *ctype, const char *cvalue) { match->window_type = A__NET_WM_WINDOW_TYPE_POPUP_MENU; } else if (strcasecmp(cvalue, "tooltip") == 0) { match->window_type = A__NET_WM_WINDOW_TYPE_TOOLTIP; + } else if (strcasecmp(cvalue, "notification") == 0) { + match->window_type = A__NET_WM_WINDOW_TYPE_NOTIFICATION; } else { ELOG("unknown window_type value \"%s\"\n", cvalue); match->error = sstrdup("unknown window_type value"); diff --git a/src/xcb.c b/src/xcb.c index 07f9281a..9d181cfa 100644 --- a/src/xcb.c +++ b/src/xcb.c @@ -175,7 +175,8 @@ xcb_atom_t xcb_get_preferred_window_type(xcb_get_property_reply_t *reply) { atoms[i] == A__NET_WM_WINDOW_TYPE_MENU || atoms[i] == A__NET_WM_WINDOW_TYPE_DROPDOWN_MENU || atoms[i] == A__NET_WM_WINDOW_TYPE_POPUP_MENU || - atoms[i] == A__NET_WM_WINDOW_TYPE_TOOLTIP) { + atoms[i] == A__NET_WM_WINDOW_TYPE_TOOLTIP || + atoms[i] == A__NET_WM_WINDOW_TYPE_NOTIFICATION) { return atoms[i]; } } diff --git a/testcases/t/165-for_window.t b/testcases/t/165-for_window.t index 476bcc9f..025fe21c 100644 --- a/testcases/t/165-for_window.t +++ b/testcases/t/165-for_window.t @@ -380,7 +380,8 @@ my %window_types = ( 'menu' => '_NET_WM_WINDOW_TYPE_MENU', 'dropdown_menu' => '_NET_WM_WINDOW_TYPE_DROPDOWN_MENU', 'popup_menu' => '_NET_WM_WINDOW_TYPE_POPUP_MENU', - 'tooltip' => '_NET_WM_WINDOW_TYPE_TOOLTIP' + 'tooltip' => '_NET_WM_WINDOW_TYPE_TOOLTIP', + 'notification' => '_NET_WM_WINDOW_TYPE_NOTIFICATION' ); while (my ($window_type, $atom) = each %window_types) { diff --git a/testcases/t/232-cmd-move-criteria.t b/testcases/t/232-cmd-move-criteria.t index c023bca4..787f72b3 100644 --- a/testcases/t/232-cmd-move-criteria.t +++ b/testcases/t/232-cmd-move-criteria.t @@ -54,7 +54,8 @@ my %window_types = ( 'menu' => '_NET_WM_WINDOW_TYPE_MENU', 'dropdown_menu' => '_NET_WM_WINDOW_TYPE_DROPDOWN_MENU', 'popup_menu' => '_NET_WM_WINDOW_TYPE_POPUP_MENU', - 'tooltip' => '_NET_WM_WINDOW_TYPE_TOOLTIP' + 'tooltip' => '_NET_WM_WINDOW_TYPE_TOOLTIP', + 'notification' => '_NET_WM_WINDOW_TYPE_NOTIFICATION' ); while (my ($window_type, $atom) = each %window_types) {