From 710f27d0d2a33e937d5b8dd8c9342b19fa04ebe9 Mon Sep 17 00:00:00 2001 From: Ian Fan Date: Sun, 29 Jul 2018 10:33:21 +0100 Subject: commands: allow "first", "last", "newest" and "recent" as values for urgent criteria --- sway/criteria.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'sway/criteria.c') diff --git a/sway/criteria.c b/sway/criteria.c index 39d300ea..dd995c4b 100644 --- a/sway/criteria.c +++ b/sway/criteria.c @@ -452,13 +452,18 @@ static bool parse_token(struct criteria *criteria, char *name, char *value) { criteria->tiling = true; break; case T_URGENT: - if (strcmp(effective_value, "latest") == 0) { + if (strcmp(effective_value, "latest") == 0 || + strcmp(effective_value, "newest") == 0 || + strcmp(effective_value, "last") == 0 || + strcmp(effective_value, "recent") == 0) { criteria->urgent = 'l'; - } else if (strcmp(effective_value, "oldest") == 0) { + } else if (strcmp(effective_value, "oldest") == 0 || + strcmp(effective_value, "first") == 0) { criteria->urgent = 'o'; } else { error = - strdup("The value for 'urgent' must be 'latest' or 'oldest'"); + strdup("The value for 'urgent' must be 'first', 'last', " + "'latest', 'newest', 'oldest' or 'recent'"); } break; case T_WORKSPACE: -- cgit v1.2.3 From 11ac66d6fef118077731fccdaecc350257b8942a Mon Sep 17 00:00:00 2001 From: Ian Fan Date: Sun, 29 Jul 2018 11:16:28 +0100 Subject: commands: allow __focused__ for con_id criterion --- sway/criteria.c | 15 ++++++++++++--- sway/sway.5.scd | 4 +++- 2 files changed, 15 insertions(+), 4 deletions(-) (limited to 'sway/criteria.c') diff --git a/sway/criteria.c b/sway/criteria.c index dd995c4b..2fa9878b 100644 --- a/sway/criteria.c +++ b/sway/criteria.c @@ -361,8 +361,17 @@ static char *get_focused_prop(enum criteria_token token) { } } break; - case T_CON_ID: // These do not support __focused__ - case T_CON_MARK: + case T_CON_ID: + if (view->swayc == NULL) { + return NULL; + } + size_t id = view->swayc->id; + int len = snprintf(NULL, 0, "%zu", id) + 1; + char *id_str = malloc(len); + snprintf(id_str, len, "%zu", id); + value = id_str; + break; + case T_CON_MARK: // These do not support __focused__ case T_FLOATING: #ifdef HAVE_XWAYLAND case T_ID: @@ -425,7 +434,7 @@ static bool parse_token(struct criteria *criteria, char *name, char *value) { case T_CON_ID: criteria->con_id = strtoul(effective_value, &endptr, 10); if (*endptr != 0) { - error = strdup("The value for 'con_id' should be numeric"); + error = strdup("The value for 'con_id' should be '__focused__' or numeric"); } break; case T_CON_MARK: diff --git a/sway/sway.5.scd b/sway/sway.5.scd index 2d35f5d0..b639653a 100644 --- a/sway/sway.5.scd +++ b/sway/sway.5.scd @@ -582,7 +582,9 @@ The following attributes may be matched with: the currently focused window. *con\_id* - Compare against the internal container ID, which you can find via IPC. + Compare against the internal container ID, which you can find via IPC. If + value is \_\_focused\_\_, then the id must be the same as that of the + currently focused window. *con\_mark* Compare against the window marks. Can be a regular expression. -- cgit v1.2.3 From 3a980857cba80719e70ee3960b5b3b12923fda81 Mon Sep 17 00:00:00 2001 From: Ian Fan Date: Wed, 1 Aug 2018 16:02:56 +0100 Subject: commands: better type for con_id string length --- sway/criteria.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'sway/criteria.c') diff --git a/sway/criteria.c b/sway/criteria.c index 2fa9878b..9077aa9b 100644 --- a/sway/criteria.c +++ b/sway/criteria.c @@ -366,9 +366,9 @@ static char *get_focused_prop(enum criteria_token token) { return NULL; } size_t id = view->swayc->id; - int len = snprintf(NULL, 0, "%zu", id) + 1; - char *id_str = malloc(len); - snprintf(id_str, len, "%zu", id); + size_t id_size = snprintf(NULL, 0, "%zu", id) + 1; + char *id_str = malloc(id_size); + snprintf(id_str, id_size, "%zu", id); value = id_str; break; case T_CON_MARK: // These do not support __focused__ -- cgit v1.2.3