summaryrefslogtreecommitdiff
path: root/sway/criteria.c
diff options
context:
space:
mode:
authorReza Jelveh <[email protected]>2024-04-15 13:39:41 +0800
committerGitHub <[email protected]>2024-04-15 01:39:41 -0400
commitfb86ed6b0588dfdebfb66ce875bc63cfa0a897f6 (patch)
tree29857a1769107adc58696f08d379f608aa4e29a2 /sway/criteria.c
parenta5e79676c4bd22fc5902182acf0667907202a465 (diff)
feat: 1.9 merge (#277)
Co-authored-by: William McKinnon <[email protected]> Co-authored-by: Erik Reider <[email protected]>
Diffstat (limited to 'sway/criteria.c')
-rw-r--r--sway/criteria.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sway/criteria.c b/sway/criteria.c
index d7326bea..78ea8b8a 100644
--- a/sway/criteria.c
+++ b/sway/criteria.c
@@ -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;