aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--niri-config/src/lib.rs24
1 files changed, 21 insertions, 3 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs
index ae3a1d56..1c63e5c1 100644
--- a/niri-config/src/lib.rs
+++ b/niri-config/src/lib.rs
@@ -81,19 +81,30 @@ pub struct Input {
pub workspace_auto_back_and_forth: bool,
}
-#[derive(knuffel::Decode, Debug, Default, PartialEq, Eq)]
+#[derive(knuffel::Decode, Debug, PartialEq, Eq)]
pub struct Keyboard {
#[knuffel(child, default)]
pub xkb: Xkb,
// The defaults were chosen to match wlroots and sway.
- #[knuffel(child, unwrap(argument), default = 600)]
+ #[knuffel(child, unwrap(argument), default = Self::default().repeat_delay)]
pub repeat_delay: u16,
- #[knuffel(child, unwrap(argument), default = 25)]
+ #[knuffel(child, unwrap(argument), default = Self::default().repeat_rate)]
pub repeat_rate: u8,
#[knuffel(child, unwrap(argument), default)]
pub track_layout: TrackLayout,
}
+impl Default for Keyboard {
+ fn default() -> Self {
+ Self {
+ xkb: Default::default(),
+ repeat_delay: 600,
+ repeat_rate: 25,
+ track_layout: Default::default(),
+ }
+ }
+}
+
#[derive(knuffel::Decode, Debug, Default, PartialEq, Eq, Clone)]
pub struct Xkb {
#[knuffel(child, unwrap(argument), default)]
@@ -2814,4 +2825,11 @@ mod tests {
},
);
}
+
+ #[test]
+ fn default_repeat_params() {
+ let config = Config::parse("config.kdl", "").unwrap();
+ assert_eq!(config.input.keyboard.repeat_delay, 600);
+ assert_eq!(config.input.keyboard.repeat_rate, 25);
+ }
}