diff options
author | Mykyta Holubakha <hilobakho@gmail.com> | 2017-01-19 03:14:59 +0200 |
---|---|---|
committer | Mykyta Holubakha <hilobakho@gmail.com> | 2017-01-19 03:14:59 +0200 |
commit | e714fbcbec43fa87e1b969e5fcdc0abf298ade44 (patch) | |
tree | cc10e0f32f2e83c3b14180b1fd44b6f0a114bf92 /sway/criteria.c | |
parent | Merge pull request #1051 from ametisf/master (diff) | |
download | sway-e714fbcbec43fa87e1b969e5fcdc0abf298ade44.tar.gz sway-e714fbcbec43fa87e1b969e5fcdc0abf298ade44.tar.zst sway-e714fbcbec43fa87e1b969e5fcdc0abf298ade44.zip |
Add window instance support
Diffstat (limited to 'sway/criteria.c')
-rw-r--r-- | sway/criteria.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/sway/criteria.c b/sway/criteria.c index 739a183e..fd1ea64b 100644 --- a/sway/criteria.c +++ b/sway/criteria.c | |||
@@ -173,9 +173,8 @@ static char *parse_criteria_name(enum criteria_type *type, char *name) { | |||
173 | char *error = malloc(len); | 173 | char *error = malloc(len); |
174 | snprintf(error, len, fmt, name); | 174 | snprintf(error, len, fmt, name); |
175 | return error; | 175 | return error; |
176 | } else if (*type == CRIT_INSTANCE || *type == CRIT_URGENT || | 176 | } else if (*type == CRIT_URGENT || *type == CRIT_WINDOW_ROLE || |
177 | *type == CRIT_WINDOW_ROLE || *type == CRIT_WINDOW_TYPE) { | 177 | *type == CRIT_WINDOW_TYPE) { |
178 | |||
179 | // (we're just being helpful here) | 178 | // (we're just being helpful here) |
180 | const char *fmt = "\"%s\" criteria currently unsupported, " | 179 | const char *fmt = "\"%s\" criteria currently unsupported, " |
181 | "no window will match this"; | 180 | "no window will match this"; |
@@ -267,6 +266,16 @@ static bool criteria_test(swayc_t *cont, list_t *tokens) { | |||
267 | } | 266 | } |
268 | break; | 267 | break; |
269 | case CRIT_INSTANCE: | 268 | case CRIT_INSTANCE: |
269 | if (!cont->instance) { | ||
270 | // ignore | ||
271 | } else if (strcmp(crit->raw, "focused") == 0) { | ||
272 | swayc_t *focused = get_focused_view(&root_container); | ||
273 | if (focused->instance && strcmp(cont->instance, focused->instance) == 0) { | ||
274 | matches++; | ||
275 | } | ||
276 | } else if (crit->regex && regexec(crit->regex, cont->instance, 0, NULL, 0) == 0) { | ||
277 | matches++; | ||
278 | } | ||
270 | break; | 279 | break; |
271 | case CRIT_TITLE: | 280 | case CRIT_TITLE: |
272 | if (!cont->name) { | 281 | if (!cont->name) { |