|
|
|
@ -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) {
|
|
|
|
|