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 | dd41ce45f7eb26ad84e9b3fe7a83f200f6396711 (diff) | |
| download | sway-e714fbcbec43fa87e1b969e5fcdc0abf298ade44.tar.xz | |
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) {  		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) { | 
