query: add window type filter for if-actions

This commit is contained in:
Tobias Bengfort 2024-04-20 07:57:35 +02:00 committed by Johan Malm
parent b9b870cfa7
commit 7bc3cae91a
4 changed files with 12 additions and 0 deletions

View file

@ -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*

View file

@ -266,6 +266,7 @@ struct view_query {
struct wl_list link;
char *identifier;
char *title;
int window_type;
};
struct xdg_toplevel_view {

View file

@ -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);
}
}

View file

@ -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;
}