aboutsummaryrefslogtreecommitdiff
path: root/sway
diff options
context:
space:
mode:
Diffstat (limited to 'sway')
-rw-r--r--sway/criteria.c15
-rw-r--r--sway/sway.5.scd4
2 files changed, 15 insertions, 4 deletions
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.