aboutsummaryrefslogtreecommitdiff
path: root/niri-config/src/animations.rs
diff options
context:
space:
mode:
Diffstat (limited to 'niri-config/src/animations.rs')
-rw-r--r--niri-config/src/animations.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/niri-config/src/animations.rs b/niri-config/src/animations.rs
index a3be59c9..346b6251 100644
--- a/niri-config/src/animations.rs
+++ b/niri-config/src/animations.rs
@@ -18,6 +18,7 @@ pub struct Animations {
pub exit_confirmation_open_close: ExitConfirmationOpenCloseAnim,
pub screenshot_ui_open: ScreenshotUiOpenAnim,
pub overview_open_close: OverviewOpenCloseAnim,
+ pub recent_windows_close: RecentWindowsCloseAnim,
}
impl Default for Animations {
@@ -35,6 +36,7 @@ impl Default for Animations {
exit_confirmation_open_close: Default::default(),
screenshot_ui_open: Default::default(),
overview_open_close: Default::default(),
+ recent_windows_close: Default::default(),
}
}
}
@@ -67,6 +69,8 @@ pub struct AnimationsPart {
pub screenshot_ui_open: Option<ScreenshotUiOpenAnim>,
#[knuffel(child)]
pub overview_open_close: Option<OverviewOpenCloseAnim>,
+ #[knuffel(child)]
+ pub recent_windows_close: Option<RecentWindowsCloseAnim>,
}
impl MergeWith<AnimationsPart> for Animations {
@@ -92,6 +96,7 @@ impl MergeWith<AnimationsPart> for Animations {
exit_confirmation_open_close,
screenshot_ui_open,
overview_open_close,
+ recent_windows_close,
);
}
}
@@ -305,6 +310,22 @@ impl Default for OverviewOpenCloseAnim {
}
}
+#[derive(Debug, Clone, Copy, PartialEq)]
+pub struct RecentWindowsCloseAnim(pub Animation);
+
+impl Default for RecentWindowsCloseAnim {
+ fn default() -> Self {
+ Self(Animation {
+ off: false,
+ kind: Kind::Spring(SpringParams {
+ damping_ratio: 1.,
+ stiffness: 800,
+ epsilon: 0.001,
+ }),
+ })
+ }
+}
+
impl<S> knuffel::Decode<S> for WorkspaceSwitchAnim
where
S: knuffel::traits::ErrorSpan,
@@ -488,6 +509,21 @@ where
}
}
+impl<S> knuffel::Decode<S> for RecentWindowsCloseAnim
+where
+ S: knuffel::traits::ErrorSpan,
+{
+ fn decode_node(
+ node: &knuffel::ast::SpannedNode<S>,
+ ctx: &mut knuffel::decode::Context<S>,
+ ) -> Result<Self, DecodeError<S>> {
+ let default = Self::default().0;
+ Ok(Self(Animation::decode_node(node, ctx, default, |_, _| {
+ Ok(false)
+ })?))
+ }
+}
+
impl Animation {
pub fn new_off() -> Self {
Self {