diff --git a/cosmic-comp-config/src/lib.rs b/cosmic-comp-config/src/lib.rs index 011270f7..641ca6dd 100644 --- a/cosmic-comp-config/src/lib.rs +++ b/cosmic-comp-config/src/lib.rs @@ -48,6 +48,7 @@ pub struct CosmicCompConfig { pub descale_xwayland: bool, /// The threshold before windows snap themselves to output edges pub edge_snap_threshold: u32, + pub accessibility_zoom: ZoomConfig, } impl Default for CosmicCompConfig { @@ -79,6 +80,7 @@ impl Default for CosmicCompConfig { focus_follows_cursor_delay: 250, descale_xwayland: false, edge_snap_threshold: 0, + accessibility_zoom: ZoomConfig::default(), } } } @@ -124,3 +126,27 @@ fn default_repeat_rate() -> u32 { fn default_repeat_delay() -> u32 { 600 } + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize)] +pub struct ZoomConfig { + pub start_on_login: bool, + pub increment: u32, + pub view_moves: ZoomMovement, +} + +impl Default for ZoomConfig { + fn default() -> Self { + ZoomConfig { + start_on_login: false, + increment: 100, + view_moves: ZoomMovement::OnEdge, + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Deserialize, Serialize)] +pub enum ZoomMovement { + OnEdge, + Centered, + Continuously, +} diff --git a/src/config/mod.rs b/src/config/mod.rs index 0f080c5e..332c3333 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -45,7 +45,7 @@ pub use self::types::*; use cosmic::config::CosmicTk; use cosmic_comp_config::{ input::InputConfig, workspace::WorkspaceConfig, CosmicCompConfig, KeyboardConfig, TileBehavior, - XkbConfig, + XkbConfig, ZoomConfig, }; #[derive(Debug)] @@ -852,6 +852,12 @@ fn config_changed(config: cosmic_config::Config, keys: Vec, state: &mut state.common.config.cosmic_conf.edge_snap_threshold = new; } } + "accessibility_zoom" => { + let new = get_config::(&config, "accessibility_zoom"); + if new != state.common.config.cosmic_conf.accessibility_zoom { + state.common.config.cosmic_conf.accessibility_zoom = new; + } + } _ => {} } }