aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/blocks/fs.c2
-rw-r--r--src/blocks/slider.c41
-rw-r--r--src/config.c79
-rw-r--r--src/config.h19
4 files changed, 81 insertions, 60 deletions
diff --git a/src/blocks/fs.c b/src/blocks/fs.c
index 1f92776..f7feeeb 100644
--- a/src/blocks/fs.c
+++ b/src/blocks/fs.c
@@ -175,7 +175,7 @@ static int block_fs_validate(block_t *block, config_t *config)
}
static const config_entry_t block_fs_entries[] = {
- { "path", CONFIG_STRING, NULL, offsetof(block_fs_t, path) },
+ { "path", CONFIG_STRING, NULL, NULL, offsetof(block_fs_t, path) },
{ 0 },
};
diff --git a/src/blocks/slider.c b/src/blocks/slider.c
index 5246162..fe8ee28 100644
--- a/src/blocks/slider.c
+++ b/src/blocks/slider.c
@@ -190,6 +190,7 @@ static void block_slider_event(layout_t *layout, config_t *config, event_t event
int bar_width = slider->width;
int bar_height = slider->height;
+ // NOTE: Consider disabling these actions for non seekable sliders
bool clicked = check_capsule(event.x, event.y, bar_x, bar_y, bar_width, bar_height);
action_t *action = layout->block->actions[event.type];
@@ -307,26 +308,26 @@ static config_enum_t knob_shape_enum[] = {
static const config_entry_t block_slider_entries[] = {
// TODO: Ugly names
- { "bar-color", CONFIG_GRADIENT, NULL, offsetof(block_slider_t, bar_color) },
- { "bar-line-color", CONFIG_GRADIENT, NULL, offsetof(block_slider_t, line_color) },
- { "bar-bg-color", CONFIG_GRADIENT, NULL, offsetof(block_slider_t, bg_color) },
- { "bar-height", CONFIG_UINT, NULL, offsetof(block_slider_t, height) },
- { "bar-width", CONFIG_UINT, NULL, offsetof(block_slider_t, width) },
- { "bar-line-width", CONFIG_UINT, NULL, offsetof(block_slider_t, line_width) },
- { "bar-value", CONFIG_INT, NULL, offsetof(block_slider_t, value) },
- { "seekable", CONFIG_BOOL, NULL, offsetof(block_slider_t, seekable) },
- { "knob", CONFIG_ENUM, knob_shape_enum, offsetof(block_slider_t, knob) },
- { "knob-height", CONFIG_UINT, NULL, offsetof(block_slider_t, knob_height) },
- { "knob-width", CONFIG_UINT, NULL, offsetof(block_slider_t, knob_width) },
- { "knob-line-width", CONFIG_UINT, NULL, offsetof(block_slider_t, knob_line_width) },
- { "knob-color", CONFIG_GRADIENT, NULL, offsetof(block_slider_t, knob_color) },
- { "knob-line-color", CONFIG_GRADIENT, NULL, offsetof(block_slider_t, knob_line_color) },
- { "knob-x-offset", CONFIG_INT, NULL, offsetof(block_slider_t, knob_x_offset) },
- { "knob-y-offset", CONFIG_INT, NULL, offsetof(block_slider_t, knob_y_offset) },
- { "knob-rotation", CONFIG_DOUBLE, NULL, offsetof(block_slider_t, knob_rotation) },
- { "left-click-bar", CONFIG_STRING, NULL, offsetof(block_slider_t, left_click) },
- { "middle-click-bar", CONFIG_STRING, NULL, offsetof(block_slider_t, middle_click) },
- { "right-click-bar", CONFIG_STRING, NULL, offsetof(block_slider_t, right_click) },
+ { "bar-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_slider_t, bar_color) },
+ { "bar-line-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_slider_t, line_color) },
+ { "bar-bg-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_slider_t, bg_color) },
+ { "bar-height", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, height) },
+ { "bar-width", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, width) },
+ { "bar-line-width", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, line_width) },
+ { "bar-value", CONFIG_INT, NULL, NULL, offsetof(block_slider_t, value) },
+ { "seekable", CONFIG_BOOL, NULL, NULL, offsetof(block_slider_t, seekable) },
+ { "knob", CONFIG_ENUM, knob_shape_enum, NULL, offsetof(block_slider_t, knob) },
+ { "knob-height", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, knob_height) },
+ { "knob-width", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, knob_width) },
+ { "knob-line-width", CONFIG_UINT, NULL, NULL, offsetof(block_slider_t, knob_line_width) },
+ { "knob-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_slider_t, knob_color) },
+ { "knob-line-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_slider_t, knob_line_color) },
+ { "knob-x-offset", CONFIG_INT, NULL, NULL, offsetof(block_slider_t, knob_x_offset) },
+ { "knob-y-offset", CONFIG_INT, NULL, NULL, offsetof(block_slider_t, knob_y_offset) },
+ { "knob-rotation", CONFIG_DOUBLE, NULL, NULL, offsetof(block_slider_t, knob_rotation) },
+ { "left-click-bar", CONFIG_STRING, NULL, NULL, offsetof(block_slider_t, left_click) },
+ { "middle-click-bar", CONFIG_STRING, NULL, NULL, offsetof(block_slider_t, middle_click) },
+ { "right-click-bar", CONFIG_STRING, NULL, NULL, offsetof(block_slider_t, right_click) },
{ 0 },
};
diff --git a/src/config.c b/src/config.c
index 6f66cd4..43b7928 100644
--- a/src/config.c
+++ b/src/config.c
@@ -15,20 +15,20 @@
#include "any_ini.h"
const config_entry_t bar_entries[] = {
- { "override-redirect", CONFIG_BOOL, NULL, offsetof(config_t, override_redirect) },
- { "action-strict-run", CONFIG_BOOL, NULL, offsetof(config_t, action_strict_run) },
- { "action-strict-set", CONFIG_BOOL, NULL, offsetof(config_t, action_strict_set) },
- { "action-fail-fast", CONFIG_BOOL, NULL, offsetof(config_t, action_failfast) },
- { "wm-name", CONFIG_STRING, NULL, offsetof(config_t, wm_name) },
- { "wm-struts", CONFIG_BOOL, NULL, offsetof(config_t, wm_struts) },
- { "background", CONFIG_GRADIENT, NULL, offsetof(config_t, background) },
- { "font", CONFIG_STRING, NULL, offsetof(config_t, font) },
- { "monitor", CONFIG_STRING, NULL, offsetof(config_t, monitor) },
- { "width", CONFIG_UINT, NULL, offsetof(config_t, width) },
- { "height", CONFIG_UINT, NULL, offsetof(config_t, height) },
- { "x-offset", CONFIG_UINT, NULL, offsetof(config_t, x_offset) },
- { "y-offset", CONFIG_UINT, NULL, offsetof(config_t, y_offset) },
- { "scale", CONFIG_DOUBLE, NULL, offsetof(config_t, scale) },
+ { "override-redirect", CONFIG_BOOL, NULL, NULL, offsetof(config_t, override_redirect) },
+ { "action-strict-run", CONFIG_BOOL, NULL, NULL, offsetof(config_t, action_strict_run) },
+ { "action-strict-set", CONFIG_BOOL, NULL, NULL, offsetof(config_t, action_strict_set) },
+ { "action-fail-fast", CONFIG_BOOL, NULL, NULL, offsetof(config_t, action_failfast) },
+ { "wm-name", CONFIG_STRING, NULL, NULL, offsetof(config_t, wm_name) },
+ { "wm-struts", CONFIG_BOOL, NULL, NULL, offsetof(config_t, wm_struts) },
+ { "background", CONFIG_GRADIENT, NULL, NULL, offsetof(config_t, background) },
+ { "font", CONFIG_STRING, NULL, NULL, offsetof(config_t, font) },
+ { "monitor", CONFIG_STRING, NULL, NULL, offsetof(config_t, monitor) },
+ { "width", CONFIG_UINT, NULL, NULL, offsetof(config_t, width) },
+ { "height", CONFIG_UINT, NULL, NULL, offsetof(config_t, height) },
+ { "x-offset", CONFIG_UINT, NULL, NULL, offsetof(config_t, x_offset) },
+ { "y-offset", CONFIG_UINT, NULL, NULL, offsetof(config_t, y_offset) },
+ { "scale", CONFIG_DOUBLE, NULL, NULL, offsetof(config_t, scale) },
{ 0 },
};
@@ -40,39 +40,39 @@ const config_enum_t text_align_enum[] = {
};
const config_entry_t block_entries[] = {
- { "hidden", CONFIG_BOOL, NULL, offsetof(block_t, hidden) },
- { "color", CONFIG_GRADIENT, NULL, offsetof(block_t, bg_color) },
- { "line-color", CONFIG_GRADIENT, NULL, offsetof(block_t, line_color) },
- { "line-width", CONFIG_UINT, NULL, offsetof(block_t, line_width) },
- { "x-padding", CONFIG_UINT, NULL, offsetof(block_t, x_padding) },
- { "y-padding", CONFIG_UINT, NULL, offsetof(block_t, y_padding) },
- { "min-width", CONFIG_UINT, NULL, offsetof(block_t, min_width) },
- { "max-width", CONFIG_UINT, NULL, offsetof(block_t, max_width) },
- { "interval", CONFIG_TIME, NULL, offsetof(block_t, update_interval) },
- { "trigger", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_TRIGGER]) },
- { "left-click", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_LEFT_CLICK]) },
- { "middle-click", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_MIDDLE_CLICK]) },
- { "right-click", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_RIGHT_CLICK]) },
- { "scroll-up", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_SCROLL_UP]) },
- { "scroll-down", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_SCROLL_DOWN]) },
- { "hover-start", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_HOVER_START]) },
- { "hover-move", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_HOVER_MOVE]) },
- { "hover-stop", CONFIG_STRING, NULL, offsetof(block_t, actions[EVENT_HOVER_STOP]) },
+ { "hidden", CONFIG_BOOL, NULL, NULL, offsetof(block_t, hidden) },
+ { "color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_t, bg_color) },
+ { "line-color", CONFIG_GRADIENT, NULL, NULL, offsetof(block_t, line_color) },
+ { "line-width", CONFIG_UINT, NULL, NULL, offsetof(block_t, line_width) },
+ { "x-padding", CONFIG_UINT, NULL, NULL, offsetof(block_t, x_padding) },
+ { "y-padding", CONFIG_UINT, NULL, NULL, offsetof(block_t, y_padding) },
+ { "min-width", CONFIG_UINT, NULL, NULL, offsetof(block_t, min_width) },
+ { "max-width", CONFIG_UINT, NULL, NULL, offsetof(block_t, max_width) },
+ { "interval", CONFIG_TIME, NULL, NULL, offsetof(block_t, update_interval) },
+ { "trigger", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_TRIGGER]) },
+ { "left-click", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_LEFT_CLICK]) },
+ { "middle-click", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_MIDDLE_CLICK]) },
+ { "right-click", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_RIGHT_CLICK]) },
+ { "scroll-up", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_SCROLL_UP]) },
+ { "scroll-down", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_SCROLL_DOWN]) },
+ { "hover-start", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_HOVER_START]) },
+ { "hover-move", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_HOVER_MOVE]) },
+ { "hover-stop", CONFIG_STRING, NULL, NULL, offsetof(block_t, actions[EVENT_HOVER_STOP]) },
{ 0 },
};
const config_entry_t block_group_entries[] = {
- { "spacing", CONFIG_UINT, NULL, offsetof(block_group_t, spacing) },
- { "blocks", CONFIG_LIST, NULL, offsetof(block_group_t, children) },
- { "collapse", CONFIG_BOOL, NULL, offsetof(block_group_t, collapse) },
+ { "spacing", CONFIG_UINT, NULL, NULL, offsetof(block_group_t, spacing) },
+ { "blocks", CONFIG_LIST, NULL, NULL, offsetof(block_group_t, children) },
+ { "collapse", CONFIG_BOOL, NULL, NULL, offsetof(block_group_t, collapse) },
{ 0 },
};
const config_entry_t block_text_entries[] = {
- { "text", CONFIG_STRING, NULL, offsetof(block_text_t, text) },
- { "text-color", CONFIG_COLOR, NULL, offsetof(block_text_t, text_color) },
- { "text-size", CONFIG_UINT, NULL, offsetof(block_text_t, text_size) },
- { "text-align", CONFIG_ENUM, text_align_enum, offsetof(block_text_t, text_size) },
+ { "text", CONFIG_STRING, NULL, NULL, offsetof(block_text_t, text) },
+ { "text-color", CONFIG_COLOR, NULL, NULL, offsetof(block_text_t, text_color) },
+ { "text-size", CONFIG_UINT, NULL, NULL, offsetof(block_text_t, text_size) },
+ { "text-align", CONFIG_ENUM, text_align_enum, NULL, offsetof(block_text_t, text_size) },
{ 0 },
};
@@ -710,6 +710,7 @@ int config_read(config_t *config, FILE *file)
case CONFIG_SUCCESS:
if (result != NULL && found != NULL) {
result += found->offset;
+
log_value_debug("Parsed entry",
"s:key", key,
"g:value", config_formatters[found->type], result,
diff --git a/src/config.h b/src/config.h
index 699fa83..427ad40 100644
--- a/src/config.h
+++ b/src/config.h
@@ -5,6 +5,7 @@
#include <stdint.h>
#include "util.h"
+#include "any_log.h"
typedef struct block block_t;
@@ -23,10 +24,26 @@ typedef enum {
CONFIG_LIST,
} config_type_t;
+typedef enum {
+ CHECK_NONE,
+ CHECK_POSITIVE,
+ CHECK_IN_RANGE,
+} config_check_type_t;
+
+typedef struct {
+ config_check_type_t type;
+ union {
+ struct {
+ int min, max;
+ } range;
+ };
+} config_check_t;
+
typedef struct {
const char *key;
config_type_t type;
const void *data;
+ const config_check_t *checks;
size_t offset;
} config_entry_t;
@@ -62,6 +79,8 @@ typedef struct {
int value;
} config_enum_t;
+extern const any_log_formatter_t config_formatters[];
+
const char *config_type_to_string(config_type_t type);
void config_init(config_t *config);