summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/config.h1
-rw-r--r--include/criteria.h36
2 files changed, 37 insertions, 0 deletions
diff --git a/include/config.h b/include/config.h
index 3bdbdb7b..6b48063a 100644
--- a/include/config.h
+++ b/include/config.h
@@ -66,6 +66,7 @@ struct sway_config {
66 list_t *cmd_queue; 66 list_t *cmd_queue;
67 list_t *workspace_outputs; 67 list_t *workspace_outputs;
68 list_t *output_configs; 68 list_t *output_configs;
69 list_t *criteria;
69 struct sway_mode *current_mode; 70 struct sway_mode *current_mode;
70 uint32_t floating_mod; 71 uint32_t floating_mod;
71 enum swayc_layouts default_orientation; 72 enum swayc_layouts default_orientation;
diff --git a/include/criteria.h b/include/criteria.h
new file mode 100644
index 00000000..5c71d172
--- /dev/null
+++ b/include/criteria.h
@@ -0,0 +1,36 @@
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#endif