aboutsummaryrefslogtreecommitdiffstats
path: root/include/sway/criteria.h
diff options
context:
space:
mode:
authorLibravatar Tony Crisci <tony@dubstepdish.com>2018-01-20 16:21:45 -0500
committerLibravatar Tony Crisci <tony@dubstepdish.com>2018-01-20 16:21:45 -0500
commit6a1d71b8b8f33bdea3fb41bcd0de9439c0452682 (patch)
tree3ebbb611bb34864f9e86ceed87b6e32c73b93f84 /include/sway/criteria.h
parentadd kill command (diff)
downloadsway-6a1d71b8b8f33bdea3fb41bcd0de9439c0452682.tar.gz
sway-6a1d71b8b8f33bdea3fb41bcd0de9439c0452682.tar.zst
sway-6a1d71b8b8f33bdea3fb41bcd0de9439c0452682.zip
basic command criteria
Diffstat (limited to 'include/sway/criteria.h')
-rw-r--r--include/sway/criteria.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/include/sway/criteria.h b/include/sway/criteria.h
new file mode 100644
index 00000000..c5ed9857
--- /dev/null
+++ b/include/sway/criteria.h
@@ -0,0 +1,42 @@
1#ifndef _SWAY_CRITERIA_H
2#define _SWAY_CRITERIA_H
3
4#include "container.h"
5#include "list.h"
6
7/**
8 * Maps criteria (as a list of criteria tokens) to a command list.
9 *
10 * A list of tokens together represent a single criteria string (e.g.
11 * '[class="abc" title="xyz"]' becomes two criteria tokens).
12 *
13 * for_window: Views matching all criteria will have the bound command list
14 * executed on them.
15 *
16 * Set via `for_window <criteria> <cmd list>`.
17 */
18struct criteria {
19 list_t *tokens; // struct crit_token, contains compiled regex.
20 char *crit_raw; // entire criteria string (for logging)
21
22 char *cmdlist;
23};
24
25int criteria_cmp(const void *item, const void *data);
26void free_criteria(struct criteria *crit);
27
28// Pouplate list with crit_tokens extracted from criteria string, returns error
29// string or NULL if successful.
30char *extract_crit_tokens(list_t *tokens, const char *criteria);
31
32// Returns list of criteria that match given container. These criteria have
33// been set with `for_window` commands and have an associated cmdlist.
34list_t *criteria_for(swayc_t *cont);
35
36// Returns a list of all containers that match the given list of tokens.
37list_t *container_for(list_t *tokens);
38
39// Returns true if any criteria in the given list matches this container
40bool criteria_any(swayc_t *cont, list_t *criteria);
41
42#endif