diff --git a/bar/bar.c b/bar/bar.c index b7557fd..9806f44 100644 --- a/bar/bar.c +++ b/bar/bar.c @@ -408,6 +408,7 @@ bar_new(const struct bar_config *config) priv->right_spacing = config->right_spacing; priv->left_margin = config->left_margin; priv->right_margin = config->right_margin; + priv->trackpad_sensitivity = config->trackpad_sensitivity; priv->border.width = config->border.width; priv->border.color = config->border.color; priv->border.left_margin = config->border.left_margin; diff --git a/bar/bar.h b/bar/bar.h index 78e2414..4e82534 100644 --- a/bar/bar.h +++ b/bar/bar.h @@ -25,6 +25,7 @@ struct bar_config { int height; int left_spacing, right_spacing; int left_margin, right_margin; + int trackpad_sensitivity; pixman_color_t background; diff --git a/bar/private.h b/bar/private.h index b5d888f..eed532b 100644 --- a/bar/private.h +++ b/bar/private.h @@ -10,6 +10,7 @@ struct private { int height; int left_spacing, right_spacing; int left_margin, right_margin; + int trackpad_sensitivity; pixman_color_t background; diff --git a/bar/wayland.c b/bar/wayland.c index 19470fc..7e63cf0 100644 --- a/bar/wayland.c +++ b/bar/wayland.c @@ -307,6 +307,8 @@ wl_pointer_axis(void *data, struct wl_pointer *wl_pointer, struct seat *seat = data; struct wayland_backend *backend = seat->backend; + struct private *bar = backend->bar->private; + backend->active_seat = seat; if (backend->have_discrete) @@ -325,7 +327,7 @@ wl_pointer_axis(void *data, struct wl_pointer *wl_pointer, ? MOUSE_BTN_WHEEL_DOWN : MOUSE_BTN_WHEEL_UP; - const double step = 20.; + const double step = bar->trackpad_sensitivity; const double adjust = backend->aggregated_scroll > 0 ? -step : step; while (fabs(backend->aggregated_scroll) >= step) { diff --git a/config-verify.c b/config-verify.c index ae6e41d..6c09a4a 100644 --- a/config-verify.c +++ b/config-verify.c @@ -423,6 +423,8 @@ conf_verify_bar(const struct yml_node *bar) {"center", false, &verify_module_list}, {"right", false, &verify_module_list}, + {"trackpad-sensitivity", false, &conf_verify_int}, + {NULL, false, NULL}, }; diff --git a/config.c b/config.c index 956eba9..bc6d7a7 100644 --- a/config.c +++ b/config.c @@ -252,6 +252,12 @@ conf_to_bar(const struct yml_node *bar, enum bar_backend backend) if (right_margin != NULL) conf.right_margin = yml_value_as_int(right_margin); + const struct yml_node *trackpad_sensitivity = + yml_get_value(bar, "trackpad-sensitivity"); + conf.trackpad_sensitivity = trackpad_sensitivity != NULL + ? yml_value_as_int(trackpad_sensitivity) + : 30; + const struct yml_node *border = yml_get_value(bar, "border"); if (border != NULL) { const struct yml_node *width = yml_get_value(border, "width"); diff --git a/doc/yambar.5.scd b/doc/yambar.5.scd index 6b4a5ff..d352e0e 100644 --- a/doc/yambar.5.scd +++ b/doc/yambar.5.scd @@ -109,6 +109,12 @@ types that are frequently used: : color : no : Default foreground (text) color to use +| trackpad-sensitivity +: int +: no +: How easy it is to trigger wheel-up and wheel-down on-click + handlers. Higher values means you need to drag your finger a longer + distance. The default is 30. | left : list : no