diff --git a/docs/labwc-actions.5.scd b/docs/labwc-actions.5.scd index 4f0492b6..db0ce5cd 100644 --- a/docs/labwc-actions.5.scd +++ b/docs/labwc-actions.5.scd @@ -316,6 +316,10 @@ Actions that execute other actions. Used in keyboard/mouse bindings. XDG shell title for Wayland clients, WM_NAME for XWayland clients. + *type* + Internal heuristics for Wayland clients, + NET_WM_WINDOW_TYPE for XWayland clients. + This argument is optional. *then* diff --git a/include/view.h b/include/view.h index 5ab5d002..cb7e70dc 100644 --- a/include/view.h +++ b/include/view.h @@ -266,6 +266,7 @@ struct view_query { struct wl_list link; char *identifier; char *title; + int window_type; }; struct xdg_toplevel_view { diff --git a/src/config/rcxml.c b/src/config/rcxml.c index c2863819..9884d41a 100644 --- a/src/config/rcxml.c +++ b/src/config/rcxml.c @@ -316,6 +316,8 @@ fill_action_query(char *nodename, char *content, struct action *action) current_view_query->identifier = xstrdup(content); } else if (!strcasecmp(nodename, "title")) { current_view_query->title = xstrdup(content); + } else if (!strcmp(nodename, "type")) { + current_view_query->window_type = parse_window_type(content); } } diff --git a/src/view.c b/src/view.c index b10a39ae..74f5faf6 100644 --- a/src/view.c +++ b/src/view.c @@ -80,6 +80,11 @@ view_matches_query(struct view *view, struct view_query *query) match &= match_glob(query->title, title); } + if (match && query->window_type >= 0) { + empty = false; + match &= view_contains_window_type(view, query->window_type); + } + return !empty && match; }