mirror of
				https://github.com/swaywm/sway.git
				synced 2025-10-29 05:40:18 -04:00 
			
		
		
		
	i3 compat: Adding support for the all criteria
				
					
				
			Matches all views. i3 PR: https://github.com/i3/i3/pull/4460 Fixes #7110
This commit is contained in:
		
							parent
							
								
									3dd2f4a67f
								
							
						
					
					
						commit
						d952ce403e
					
				
					 3 changed files with 14 additions and 3 deletions
				
			
		|  | @ -43,6 +43,7 @@ struct criteria { | |||
| 	struct pattern *window_role; | ||||
| 	enum atom_name window_type; | ||||
| #endif | ||||
| 	bool all; | ||||
| 	bool floating; | ||||
| 	bool tiling; | ||||
| 	char urgent; // 'l' for latest or 'o' for oldest
 | ||||
|  |  | |||
|  | @ -19,6 +19,7 @@ | |||
| bool criteria_is_empty(struct criteria *criteria) { | ||||
| 	return !criteria->title | ||||
| 		&& !criteria->shell | ||||
| 		&& !criteria->all | ||||
| 		&& !criteria->app_id | ||||
| 		&& !criteria->con_mark | ||||
| 		&& !criteria->con_id | ||||
|  | @ -456,6 +457,7 @@ static enum atom_name parse_window_type(const char *type) { | |||
| #endif | ||||
| 
 | ||||
| enum criteria_token { | ||||
| 	T_ALL, | ||||
| 	T_APP_ID, | ||||
| 	T_CON_ID, | ||||
| 	T_CON_MARK, | ||||
|  | @ -478,7 +480,9 @@ enum criteria_token { | |||
| }; | ||||
| 
 | ||||
| static enum criteria_token token_from_name(char *name) { | ||||
| 	if (strcmp(name, "app_id") == 0) { | ||||
| 	if (strcmp(name, "all") == 0) { | ||||
| 		return T_ALL; | ||||
| 	} else if (strcmp(name, "app_id") == 0) { | ||||
| 		return T_APP_ID; | ||||
| 	} else if (strcmp(name, "con_id") == 0) { | ||||
| 		return T_CON_ID; | ||||
|  | @ -524,8 +528,8 @@ static bool parse_token(struct criteria *criteria, char *name, char *value) { | |||
| 		return false; | ||||
| 	} | ||||
| 
 | ||||
| 	// Require value, unless token is floating or tiled
 | ||||
| 	if (!value && token != T_FLOATING && token != T_TILING) { | ||||
| 	// Require value, unless token is all, floating or tiled
 | ||||
| 	if (!value && token != T_ALL && token != T_FLOATING && token != T_TILING) { | ||||
| 		const char *fmt = "Token '%s' requires a value"; | ||||
| 		int len = strlen(fmt) + strlen(name) - 1; | ||||
| 		error = malloc(len); | ||||
|  | @ -535,6 +539,9 @@ static bool parse_token(struct criteria *criteria, char *name, char *value) { | |||
| 
 | ||||
| 	char *endptr = NULL; | ||||
| 	switch (token) { | ||||
| 	case T_ALL: | ||||
| 		criteria->all = true; | ||||
| 		break; | ||||
| 	case T_TITLE: | ||||
| 		pattern_create(&criteria->title, value); | ||||
| 		break; | ||||
|  |  | |||
|  | @ -962,6 +962,9 @@ properties in practice for your applications. | |||
| 
 | ||||
| The following attributes may be matched with: | ||||
| 
 | ||||
| *all* | ||||
| 	Matches all windows. | ||||
| 
 | ||||
| *app_id* | ||||
| 	Compare value against the app id. Can be a regular expression. If value is | ||||
| 	\_\_focused\_\_, then the app id must be the same as that of the currently | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Johan Sköld
						Johan Sköld