config: Add zoom configuration

This commit is contained in:
Victoria Brekenfeld 2025-01-24 17:49:13 +01:00 committed by Victoria Brekenfeld
parent c01de20b2b
commit 55d1ce5e3b
2 changed files with 33 additions and 1 deletions

View file

@ -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,
}

View file

@ -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<String>, state: &mut
state.common.config.cosmic_conf.edge_snap_threshold = new;
}
}
"accessibility_zoom" => {
let new = get_config::<ZoomConfig>(&config, "accessibility_zoom");
if new != state.common.config.cosmic_conf.accessibility_zoom {
state.common.config.cosmic_conf.accessibility_zoom = new;
}
}
_ => {}
}
}