diff options
-rw-r--r-- | sway/criteria.c | 15 | ||||
-rw-r--r-- | sway/sway.5.scd | 4 |
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) { | |||
361 | } | 361 | } |
362 | } | 362 | } |
363 | break; | 363 | break; |
364 | case T_CON_ID: // These do not support __focused__ | 364 | case T_CON_ID: |
365 | case T_CON_MARK: | 365 | if (view->swayc == NULL) { |
366 | return NULL; | ||
367 | } | ||
368 | size_t id = view->swayc->id; | ||
369 | int len = snprintf(NULL, 0, "%zu", id) + 1; | ||
370 | char *id_str = malloc(len); | ||
371 | snprintf(id_str, len, "%zu", id); | ||
372 | value = id_str; | ||
373 | break; | ||
374 | case T_CON_MARK: // These do not support __focused__ | ||
366 | case T_FLOATING: | 375 | case T_FLOATING: |
367 | #ifdef HAVE_XWAYLAND | 376 | #ifdef HAVE_XWAYLAND |
368 | case T_ID: | 377 | case T_ID: |
@@ -425,7 +434,7 @@ static bool parse_token(struct criteria *criteria, char *name, char *value) { | |||
425 | case T_CON_ID: | 434 | case T_CON_ID: |
426 | criteria->con_id = strtoul(effective_value, &endptr, 10); | 435 | criteria->con_id = strtoul(effective_value, &endptr, 10); |
427 | if (*endptr != 0) { | 436 | if (*endptr != 0) { |
428 | error = strdup("The value for 'con_id' should be numeric"); | 437 | error = strdup("The value for 'con_id' should be '__focused__' or numeric"); |
429 | } | 438 | } |
430 | break; | 439 | break; |
431 | case T_CON_MARK: | 440 | 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: | |||
582 | the currently focused window. | 582 | the currently focused window. |
583 | 583 | ||
584 | *con\_id* | 584 | *con\_id* |
585 | Compare against the internal container ID, which you can find via IPC. | 585 | Compare against the internal container ID, which you can find via IPC. If |
586 | value is \_\_focused\_\_, then the id must be the same as that of the | ||
587 | currently focused window. | ||
586 | 588 | ||
587 | *con\_mark* | 589 | *con\_mark* |
588 | Compare against the window marks. Can be a regular expression. | 590 | Compare against the window marks. Can be a regular expression. |