aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorla .uetcis <weitcis@pm.me>2024-03-13 21:26:03 -0700
committerGitHub <noreply@github.com>2024-03-13 21:26:03 -0700
commitcc83ff008d7500f38bce4e75c2dbcdfc1621cac4 (patch)
treeb3f271eab4402c0b59d1efb01b988a87a2b1f129
parentba4e7481c3be18c3ec0faeca03ab44a1b49e75bf (diff)
downloadniri-cc83ff008d7500f38bce4e75c2dbcdfc1621cac4.tar.gz
niri-cc83ff008d7500f38bce4e75c2dbcdfc1621cac4.tar.bz2
niri-cc83ff008d7500f38bce4e75c2dbcdfc1621cac4.zip
Add `clickfinger` in touchpad config (#256)
* Add clickfinger in touchpad config * Change `clickfinger` to `click-method` * Change `bottom_areas` to `button_areas` * Change button_areas to button-areas For consistency. * Reorder click methods in error message The most usual one comes first. * default-config: Move click-method down --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
-rw-r--r--niri-config/src/lib.rs33
-rw-r--r--resources/default-config.kdl1
-rw-r--r--src/input.rs6
3 files changed, 40 insertions, 0 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs
index 6d104827..cad39c66 100644
--- a/niri-config/src/lib.rs
+++ b/niri-config/src/lib.rs
@@ -142,6 +142,8 @@ pub struct Touchpad {
pub dwtp: bool,
#[knuffel(child)]
pub natural_scroll: bool,
+ #[knuffel(child, unwrap(argument, str))]
+ pub click_method: Option<ClickMethod>,
#[knuffel(child, unwrap(argument), default)]
pub accel_speed: f64,
#[knuffel(child, unwrap(argument, str))]
@@ -171,6 +173,21 @@ pub struct Trackpoint {
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum ClickMethod {
+ Clickfinger,
+ ButtonAreas,
+}
+
+impl From<ClickMethod> for input::ClickMethod {
+ fn from(value: ClickMethod) -> Self {
+ match value {
+ ClickMethod::Clickfinger => Self::Clickfinger,
+ ClickMethod::ButtonAreas => Self::ButtonAreas,
+ }
+ }
+}
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum AccelProfile {
Adaptive,
Flat,
@@ -1469,6 +1486,20 @@ impl FromStr for Key {
}
}
+impl FromStr for ClickMethod {
+ type Err = miette::Error;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ match s {
+ "clickfinger" => Ok(Self::Clickfinger),
+ "button-areas" => Ok(Self::ButtonAreas),
+ _ => Err(miette!(
+ r#"invalid click method, can be "button-areas" or "clickfinger""#
+ )),
+ }
+ }
+}
+
impl FromStr for AccelProfile {
type Err = miette::Error;
@@ -1534,6 +1565,7 @@ mod tests {
tap
dwt
dwtp
+ click-method "clickfinger"
accel-speed 0.2
accel-profile "flat"
tap-button-map "left-middle-right"
@@ -1676,6 +1708,7 @@ mod tests {
tap: true,
dwt: true,
dwtp: true,
+ click_method: Some(ClickMethod::Clickfinger),
natural_scroll: false,
accel_speed: 0.2,
accel_profile: Some(AccelProfile::Flat),
diff --git a/resources/default-config.kdl b/resources/default-config.kdl
index e1ea0a2f..0567573b 100644
--- a/resources/default-config.kdl
+++ b/resources/default-config.kdl
@@ -33,6 +33,7 @@ input {
// accel-speed 0.2
// accel-profile "flat"
// tap-button-map "left-middle-right"
+ // click-method "clickfinger"
}
mouse {
diff --git a/src/input.rs b/src/input.rs
index 715d39c8..7f3e6fa7 100644
--- a/src/input.rs
+++ b/src/input.rs
@@ -1774,6 +1774,12 @@ pub fn apply_libinput_settings(config: &niri_config::Input, device: &mut input::
} else if let Some(default) = device.config_tap_default_button_map() {
let _ = device.config_tap_set_button_map(default);
}
+
+ if let Some(method) = c.click_method {
+ let _ = device.config_click_set_method(method.into());
+ } else if let Some(default) = device.config_click_default_method() {
+ let _ = device.config_click_set_method(default);
+ }
}
// This is how Mutter tells apart mice.