aboutsummaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
authorallusive-dev <[email protected]>2023-10-13 16:55:39 +1100
committerallusive-dev <[email protected]>2023-10-13 16:55:39 +1100
commit32d36d9d887401e6738d1a887f4c838011789887 (patch)
treebc710c3e1291be65110e92563b84e16b8e758aa8 /src/config.c
parentMerge branch 'main' of github.com:allusive-dev/picom-allusive (diff)
downloadcompfy-32d36d9d887401e6738d1a887f4c838011789887.tar.xz
compfy-32d36d9d887401e6738d1a887f4c838011789887.zip
testing corner-rules again
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/config.c b/src/config.c
index d415757..1d58f00 100644
--- a/src/config.c
+++ b/src/config.c
@@ -439,6 +439,36 @@ bool parse_rule_opacity(c2_lptr_t **res, const char *src) {
}
/**
+ * Parse a list of corner rules.
+ */
+bool parse_rule_corners(c2_lptr_t **res, const char *src) {
+ // Find corner value
+ char *endptr = NULL;
+ long val = strtol(src, &endptr, 0);
+ if (!endptr || endptr == src) {
+ log_error("No corner-radius specified: %s", src);
+ return false;
+ }
+ if (val > 100 || val < 0) {
+ log_error("Opacity %ld invalid: %s", val, src);
+ return false;
+ }
+
+ // Skip over spaces
+ while (*endptr && isspace((unsigned char)*endptr))
+ ++endptr;
+ if (':' != *endptr) {
+ log_error("Corner terminator not found: %s", src);
+ return false;
+ }
+ ++endptr;
+
+ // Parse pattern
+ // I hope 1-100 is acceptable for (void *)
+ return c2_parse(res, endptr, (void *)val);
+}
+
+/**
* Add a pattern to a condition linked list.
*/
bool condlst_add(c2_lptr_t **pcondlst, const char *pattern) {
@@ -634,7 +664,8 @@ char *parse_config(options_t *opt, const char *config_file, bool *shadow_enable,
.rounded_corners_blacklist = NULL,
.animation_open_blacklist = NULL,
- .animation_unmap_blacklist = NULL
+ .animation_unmap_blacklist = NULL,
+ .corner_rules = NULL
};
// clang-format on