aboutsummaryrefslogtreecommitdiff
path: root/sway/criteria.c
diff options
context:
space:
mode:
authorMykyta Holubakha <hilobakho@gmail.com>2017-01-19 03:14:59 +0200
committerMykyta Holubakha <hilobakho@gmail.com>2017-01-19 03:14:59 +0200
commite714fbcbec43fa87e1b969e5fcdc0abf298ade44 (patch)
treecc10e0f32f2e83c3b14180b1fd44b6f0a114bf92 /sway/criteria.c
parentdd41ce45f7eb26ad84e9b3fe7a83f200f6396711 (diff)
Add window instance support
Diffstat (limited to 'sway/criteria.c')
-rw-r--r--sway/criteria.c15
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) {
char *error = malloc(len);
snprintf(error, len, fmt, name);
return error;
- } else if (*type == CRIT_INSTANCE || *type == CRIT_URGENT ||
- *type == CRIT_WINDOW_ROLE || *type == CRIT_WINDOW_TYPE) {
-
+ } else if (*type == CRIT_URGENT || *type == CRIT_WINDOW_ROLE ||
+ *type == CRIT_WINDOW_TYPE) {
// (we're just being helpful here)
const char *fmt = "\"%s\" criteria currently unsupported, "
"no window will match this";
@@ -267,6 +266,16 @@ static bool criteria_test(swayc_t *cont, list_t *tokens) {
}
break;
case CRIT_INSTANCE:
+ if (!cont->instance) {
+ // ignore
+ } else if (strcmp(crit->raw, "focused") == 0) {
+ swayc_t *focused = get_focused_view(&root_container);
+ if (focused->instance && strcmp(cont->instance, focused->instance) == 0) {
+ matches++;
+ }
+ } else if (crit->regex && regexec(crit->regex, cont->instance, 0, NULL, 0) == 0) {
+ matches++;
+ }
break;
case CRIT_TITLE:
if (!cont->name) {