use crate::appearance::{Color, WorkspaceShadow, DEFAULT_BACKDROP_COLOR}; use crate::FloatOrInt; #[derive(knuffel::Decode, Debug, Clone, PartialEq, Eq)] pub struct SpawnAtStartup { #[knuffel(arguments)] pub command: Vec, } #[derive(knuffel::Decode, Debug, Clone, PartialEq, Eq)] pub struct SpawnShAtStartup { #[knuffel(argument)] pub command: String, } #[derive(knuffel::Decode, Debug, PartialEq)] pub struct Cursor { #[knuffel(child, unwrap(argument), default = String::from("default"))] pub xcursor_theme: String, #[knuffel(child, unwrap(argument), default = 24)] pub xcursor_size: u8, #[knuffel(child)] pub hide_when_typing: bool, #[knuffel(child, unwrap(argument))] pub hide_after_inactive_ms: Option, } impl Default for Cursor { fn default() -> Self { Self { xcursor_theme: String::from("default"), xcursor_size: 24, hide_when_typing: false, hide_after_inactive_ms: None, } } } #[derive(knuffel::Decode, Debug, Default, Clone, Copy, PartialEq, Eq)] pub struct HotkeyOverlay { #[knuffel(child)] pub skip_at_startup: bool, #[knuffel(child)] pub hide_not_bound: bool, } #[derive(knuffel::Decode, Debug, Default, Clone, Copy, PartialEq, Eq)] pub struct ConfigNotification { #[knuffel(child)] pub disable_failed: bool, } #[derive(knuffel::Decode, Debug, Default, Clone, Copy, PartialEq, Eq)] pub struct Clipboard { #[knuffel(child)] pub disable_primary: bool, } #[derive(knuffel::Decode, Debug, Clone, Copy, PartialEq)] pub struct Overview { #[knuffel(child, unwrap(argument), default = Self::default().zoom)] pub zoom: FloatOrInt<0, 1>, #[knuffel(child, default = Self::default().backdrop_color)] pub backdrop_color: Color, #[knuffel(child, default)] pub workspace_shadow: WorkspaceShadow, } impl Default for Overview { fn default() -> Self { Self { zoom: FloatOrInt(0.5), backdrop_color: DEFAULT_BACKDROP_COLOR, workspace_shadow: WorkspaceShadow::default(), } } } #[derive(knuffel::Decode, Debug, Default, Clone, PartialEq, Eq)] pub struct Environment(#[knuffel(children)] pub Vec); #[derive(knuffel::Decode, Debug, Clone, PartialEq, Eq)] pub struct EnvironmentVariable { #[knuffel(node_name)] pub name: String, #[knuffel(argument)] pub value: Option, } #[derive(knuffel::Decode, Debug, Clone, PartialEq, Eq)] pub struct XwaylandSatellite { #[knuffel(child)] pub off: bool, #[knuffel(child, unwrap(argument), default = Self::default().path)] pub path: String, } impl Default for XwaylandSatellite { fn default() -> Self { Self { off: false, path: String::from("xwayland-satellite"), } } }