refactor(schema): simplify defaults in static_config

This commit is contained in:
LGUG2Z
2025-12-31 13:01:46 -08:00
parent 6e36b81669
commit 6cef8d9ef6
4 changed files with 70 additions and 87 deletions
+2
View File
@@ -242,7 +242,9 @@ lazy_static! {
pub static DEFAULT_WORKSPACE_PADDING: AtomicI32 = AtomicI32::new(10); pub static DEFAULT_WORKSPACE_PADDING: AtomicI32 = AtomicI32::new(10);
pub static DEFAULT_CONTAINER_PADDING: AtomicI32 = AtomicI32::new(10); pub static DEFAULT_CONTAINER_PADDING: AtomicI32 = AtomicI32::new(10);
pub static DEFAULT_RESIZE_DELTA: i32 = 50;
pub static DEFAULT_MOUSE_FOLLOWS_FOCUS: bool = true;
pub static INITIAL_CONFIGURATION_LOADED: AtomicBool = AtomicBool::new(false); pub static INITIAL_CONFIGURATION_LOADED: AtomicBool = AtomicBool::new(false);
pub static CUSTOM_FFM: AtomicBool = AtomicBool::new(false); pub static CUSTOM_FFM: AtomicBool = AtomicBool::new(false);
pub static SESSION_ID: AtomicU32 = AtomicU32::new(0); pub static SESSION_ID: AtomicU32 = AtomicU32::new(0);
+50 -69
View File
@@ -3,6 +3,8 @@ use crate::Axis;
use crate::CrossBoundaryBehaviour; use crate::CrossBoundaryBehaviour;
use crate::DATA_DIR; use crate::DATA_DIR;
use crate::DEFAULT_CONTAINER_PADDING; use crate::DEFAULT_CONTAINER_PADDING;
use crate::DEFAULT_MOUSE_FOLLOWS_FOCUS;
use crate::DEFAULT_RESIZE_DELTA;
use crate::DEFAULT_WORKSPACE_PADDING; use crate::DEFAULT_WORKSPACE_PADDING;
use crate::DISPLAY_INDEX_PREFERENCES; use crate::DISPLAY_INDEX_PREFERENCES;
use crate::FLOATING_APPLICATIONS; use crate::FLOATING_APPLICATIONS;
@@ -106,25 +108,6 @@ use std::sync::atomic::Ordering;
use uds_windows::UnixListener; use uds_windows::UnixListener;
use uds_windows::UnixStream; use uds_windows::UnixStream;
mod defaults {
pub const RESIZE_DELTA: i32 = 50;
pub const BORDER_WIDTH: i32 = 8;
pub const BORDER_OFFSET: i32 = -1;
pub const BORDER_ENABLED: bool = true;
pub const TRANSPARENCY_ENABLED: bool = false;
pub const TRANSPARENCY_ALPHA: u8 = 200;
pub const DEFAULT_WORKSPACE_PADDING: i32 = 10;
pub const DEFAULT_CONTAINER_PADDING: i32 = 10;
pub const MOUSE_FOLLOWS_FOCUS: bool = true;
pub const FLOAT_OVERRIDE: bool = false;
pub const TILE: bool = true;
pub const APPLY_WINDOW_BASED_WORK_AREA_OFFSET: bool = true;
pub const WINDOW_BASED_WORK_AREA_OFFSET_LIMIT: isize = 1;
pub const GENERATE_THEME: bool = true;
pub const ANIMATION_FPS: u64 = 60;
pub const SLOW_APPLICATION_COMPENSATION_TIME: u64 = 20;
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))] #[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
/// Border colours for different container states /// Border colours for different container states
@@ -209,7 +192,7 @@ pub struct Wallpaper {
pub path: PathBuf, pub path: PathBuf,
/// Generate and apply Base16 theme for this wallpaper /// Generate and apply Base16 theme for this wallpaper
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::GENERATE_THEME)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = true)))]
pub generate_theme: Option<bool>, pub generate_theme: Option<bool>,
/// Specify Light or Dark variant for theme generation /// Specify Light or Dark variant for theme generation
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@@ -262,7 +245,7 @@ pub struct WorkspaceConfig {
pub work_area_offset: Option<Rect>, pub work_area_offset: Option<Rect>,
/// Apply this monitor's window-based work area offset /// Apply this monitor's window-based work area offset
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::APPLY_WINDOW_BASED_WORK_AREA_OFFSET)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = true)))]
pub apply_window_based_work_area_offset: Option<bool>, pub apply_window_based_work_area_offset: Option<bool>,
/// Determine what happens when a new window is opened /// Determine what happens when a new window is opened
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@@ -273,11 +256,11 @@ pub struct WorkspaceConfig {
pub window_container_behaviour_rules: Option<HashMap<usize, WindowContainerBehaviour>>, pub window_container_behaviour_rules: Option<HashMap<usize, WindowContainerBehaviour>>,
/// Enable or disable float override, which makes it so every new window opens in floating mode /// Enable or disable float override, which makes it so every new window opens in floating mode
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::FLOAT_OVERRIDE)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = false)))]
pub float_override: Option<bool>, pub float_override: Option<bool>,
/// Enable or disable tiling for the workspace /// Enable or disable tiling for the workspace
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::TILE)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = true)))]
pub tile: Option<bool>, pub tile: Option<bool>,
/// Specify an axis on which to flip the selected layout /// Specify an axis on which to flip the selected layout
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@@ -391,7 +374,7 @@ pub struct MonitorConfig {
pub window_based_work_area_offset: Option<Rect>, pub window_based_work_area_offset: Option<Rect>,
/// Open window limit after which the window based work area offset will no longer be applied /// Open window limit after which the window based work area offset will no longer be applied
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::WINDOW_BASED_WORK_AREA_OFFSET_LIMIT)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = 1)))]
pub window_based_work_area_offset_limit: Option<isize>, pub window_based_work_area_offset_limit: Option<isize>,
/// Container padding (default: global) /// Container padding (default: global)
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@@ -476,7 +459,7 @@ pub struct StaticConfig {
pub minimum_window_height: Option<i32>, pub minimum_window_height: Option<i32>,
/// Delta to resize windows by /// Delta to resize windows by
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::RESIZE_DELTA)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = DEFAULT_RESIZE_DELTA)))]
pub resize_delta: Option<i32>, pub resize_delta: Option<i32>,
/// Determine what happens when a new window is opened /// Determine what happens when a new window is opened
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@@ -484,7 +467,7 @@ pub struct StaticConfig {
pub window_container_behaviour: Option<WindowContainerBehaviour>, pub window_container_behaviour: Option<WindowContainerBehaviour>,
/// Enable or disable float override, which makes it so every new window opens in floating mode /// Enable or disable float override, which makes it so every new window opens in floating mode
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::FLOAT_OVERRIDE)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = false)))]
pub float_override: Option<bool>, pub float_override: Option<bool>,
/// Determines what happens on a new window when on the `FloatingLayer` /// Determines what happens on a new window when on the `FloatingLayer`
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@@ -526,7 +509,7 @@ pub struct StaticConfig {
pub focus_follows_mouse: Option<FocusFollowsMouseImplementation>, pub focus_follows_mouse: Option<FocusFollowsMouseImplementation>,
/// Enable or disable mouse follows focus /// Enable or disable mouse follows focus
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::MOUSE_FOLLOWS_FOCUS)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = DEFAULT_MOUSE_FOLLOWS_FOCUS)))]
pub mouse_follows_focus: Option<bool>, pub mouse_follows_focus: Option<bool>,
/// Path to applications.json from komorebi-application-specific-configurations /// Path to applications.json from komorebi-application-specific-configurations
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@@ -534,17 +517,17 @@ pub struct StaticConfig {
/// Width of window borders /// Width of window borders
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[serde(alias = "active_window_border_width")] #[serde(alias = "active_window_border_width")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::BORDER_WIDTH)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = border_manager::BORDER_WIDTH)))]
pub border_width: Option<i32>, pub border_width: Option<i32>,
/// Offset of window borders /// Offset of window borders
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[serde(alias = "active_window_border_offset")] #[serde(alias = "active_window_border_offset")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::BORDER_OFFSET)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = border_manager::BORDER_OFFSET)))]
pub border_offset: Option<i32>, pub border_offset: Option<i32>,
/// Display window borders /// Display window borders
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[serde(alias = "active_window_border")] #[serde(alias = "active_window_border")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::BORDER_ENABLED)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = border_manager::BORDER_ENABLED)))]
pub border: Option<bool>, pub border: Option<bool>,
/// Window border colours for different container types (has no effect if [`theme`] is defined) /// Window border colours for different container types (has no effect if [`theme`] is defined)
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@@ -565,22 +548,22 @@ pub struct StaticConfig {
pub border_implementation: Option<BorderImplementation>, pub border_implementation: Option<BorderImplementation>,
/// Add transparency to unfocused windows /// Add transparency to unfocused windows
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::TRANSPARENCY_ENABLED)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = transparency_manager::TRANSPARENCY_ENABLED)))]
pub transparency: Option<bool>, pub transparency: Option<bool>,
/// Alpha value for unfocused window transparency [[0-255]] /// Alpha value for unfocused window transparency [[0-255]]
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::TRANSPARENCY_ALPHA)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = transparency_manager::TRANSPARENCY_ALPHA)))]
pub transparency_alpha: Option<u8>, pub transparency_alpha: Option<u8>,
/// Individual window transparency ignore rules /// Individual window transparency ignore rules
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
pub transparency_ignore_rules: Option<Vec<MatchingRule>>, pub transparency_ignore_rules: Option<Vec<MatchingRule>>,
/// Global default workspace padding /// Global default workspace padding
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::DEFAULT_WORKSPACE_PADDING)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = DEFAULT_WORKSPACE_PADDING)))]
pub default_workspace_padding: Option<i32>, pub default_workspace_padding: Option<i32>,
/// Global default container padding /// Global default container padding
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::DEFAULT_CONTAINER_PADDING)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = DEFAULT_CONTAINER_PADDING)))]
pub default_container_padding: Option<i32>, pub default_container_padding: Option<i32>,
/// Monitor and workspace configurations /// Monitor and workspace configurations
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@@ -639,7 +622,7 @@ pub struct StaticConfig {
pub slow_application_identifiers: Option<Vec<MatchingRule>>, pub slow_application_identifiers: Option<Vec<MatchingRule>>,
/// How long to wait when compensating for slow applications, in milliseconds /// How long to wait when compensating for slow applications, in milliseconds
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::SLOW_APPLICATION_COMPENSATION_TIME)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = SLOW_APPLICATION_COMPENSATION_TIME)))]
pub slow_application_compensation_time: Option<u64>, pub slow_application_compensation_time: Option<u64>,
/// Komorebi status bar configuration files for multiple instances on different monitors /// Komorebi status bar configuration files for multiple instances on different monitors
// this option is a little special because it is only consumed by komorebic // this option is a little special because it is only consumed by komorebic
@@ -675,7 +658,7 @@ pub struct AnimationsConfig {
pub style: Option<PerAnimationPrefixConfig<AnimationStyle>>, pub style: Option<PerAnimationPrefixConfig<AnimationStyle>>,
/// Set the animation FPS /// Set the animation FPS
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
#[cfg_attr(feature = "schemars", schemars(extend("default" = defaults::ANIMATION_FPS)))] #[cfg_attr(feature = "schemars", schemars(extend("default" = ANIMATION_FPS)))]
pub fps: Option<u64>, pub fps: Option<u64>,
} }
@@ -1006,18 +989,17 @@ impl StaticConfig {
DEFAULT_WORKSPACE_PADDING.store(workspace, Ordering::SeqCst); DEFAULT_WORKSPACE_PADDING.store(workspace, Ordering::SeqCst);
} }
border_manager::BORDER_WIDTH.store( if let Some(border_width) = self.border_width {
self.border_width.unwrap_or(defaults::BORDER_WIDTH), border_manager::BORDER_WIDTH.store(border_width, Ordering::SeqCst);
Ordering::SeqCst, }
);
border_manager::BORDER_OFFSET.store( if let Some(border_offset) = self.border_offset {
self.border_offset.unwrap_or(defaults::BORDER_OFFSET), border_manager::BORDER_OFFSET.store(border_offset, Ordering::SeqCst);
Ordering::SeqCst, }
);
border_manager::BORDER_ENABLED.store( if let Some(border_enabled) = self.border {
self.border.unwrap_or(defaults::BORDER_ENABLED), border_manager::BORDER_ENABLED.store(border_enabled, Ordering::SeqCst);
Ordering::SeqCst, }
);
if let Some(colours) = &self.border_colours { if let Some(colours) = &self.border_colours {
if let Some(single) = colours.single { if let Some(single) = colours.single {
@@ -1071,15 +1053,14 @@ impl StaticConfig {
border_manager::send_notification(None); border_manager::send_notification(None);
} }
transparency_manager::TRANSPARENCY_ENABLED.store( if let Some(transparency_enabled) = self.transparency {
self.transparency.unwrap_or(defaults::TRANSPARENCY_ENABLED), transparency_manager::TRANSPARENCY_ENABLED
Ordering::SeqCst, .store(transparency_enabled, Ordering::SeqCst);
); }
transparency_manager::TRANSPARENCY_ALPHA.store(
self.transparency_alpha if let Some(transparency_alpha) = self.transparency_alpha {
.unwrap_or(defaults::TRANSPARENCY_ALPHA), transparency_manager::TRANSPARENCY_ALPHA.store(transparency_alpha, Ordering::SeqCst);
Ordering::SeqCst, }
);
let mut ignore_identifiers = IGNORE_IDENTIFIERS.lock(); let mut ignore_identifiers = IGNORE_IDENTIFIERS.lock();
let mut regex_identifiers = REGEX_IDENTIFIERS.lock(); let mut regex_identifiers = REGEX_IDENTIFIERS.lock();
@@ -1303,12 +1284,12 @@ impl StaticConfig {
unmanaged_window_operation_behaviour: value unmanaged_window_operation_behaviour: value
.unmanaged_window_operation_behaviour .unmanaged_window_operation_behaviour
.unwrap_or(OperationBehaviour::Op), .unwrap_or(OperationBehaviour::Op),
resize_delta: value.resize_delta.unwrap_or(defaults::RESIZE_DELTA), resize_delta: value.resize_delta.unwrap_or(DEFAULT_RESIZE_DELTA),
#[allow(deprecated)] #[allow(deprecated)]
focus_follows_mouse: value.focus_follows_mouse, focus_follows_mouse: value.focus_follows_mouse,
mouse_follows_focus: value mouse_follows_focus: value
.mouse_follows_focus .mouse_follows_focus
.unwrap_or(defaults::MOUSE_FOLLOWS_FOCUS), .unwrap_or(DEFAULT_MOUSE_FOLLOWS_FOCUS),
hotwatch: Hotwatch::new()?, hotwatch: Hotwatch::new()?,
has_pending_raise_op: false, has_pending_raise_op: false,
pending_move_op: Arc::new(None), pending_move_op: Arc::new(None),
@@ -1398,7 +1379,7 @@ impl StaticConfig {
monitor_config.window_based_work_area_offset; monitor_config.window_based_work_area_offset;
monitor.window_based_work_area_offset_limit = monitor_config monitor.window_based_work_area_offset_limit = monitor_config
.window_based_work_area_offset_limit .window_based_work_area_offset_limit
.unwrap_or(defaults::WINDOW_BASED_WORK_AREA_OFFSET_LIMIT); .unwrap_or(1);
monitor.container_padding = monitor_config.container_padding; monitor.container_padding = monitor_config.container_padding;
monitor.workspace_padding = monitor_config.workspace_padding; monitor.workspace_padding = monitor_config.workspace_padding;
monitor.wallpaper = monitor_config.wallpaper.clone(); monitor.wallpaper = monitor_config.wallpaper.clone();
@@ -1490,7 +1471,7 @@ impl StaticConfig {
m.window_based_work_area_offset = monitor_config.window_based_work_area_offset; m.window_based_work_area_offset = monitor_config.window_based_work_area_offset;
m.window_based_work_area_offset_limit = monitor_config m.window_based_work_area_offset_limit = monitor_config
.window_based_work_area_offset_limit .window_based_work_area_offset_limit
.unwrap_or(defaults::WINDOW_BASED_WORK_AREA_OFFSET_LIMIT); .unwrap_or(1);
m.container_padding = monitor_config.container_padding; m.container_padding = monitor_config.container_padding;
m.workspace_padding = monitor_config.workspace_padding; m.workspace_padding = monitor_config.workspace_padding;
m.floating_layer_behaviour = monitor_config.floating_layer_behaviour; m.floating_layer_behaviour = monitor_config.floating_layer_behaviour;
@@ -1571,7 +1552,7 @@ impl StaticConfig {
monitor_config.window_based_work_area_offset; monitor_config.window_based_work_area_offset;
monitor.window_based_work_area_offset_limit = monitor_config monitor.window_based_work_area_offset_limit = monitor_config
.window_based_work_area_offset_limit .window_based_work_area_offset_limit
.unwrap_or(defaults::WINDOW_BASED_WORK_AREA_OFFSET_LIMIT); .unwrap_or(1);
monitor.container_padding = monitor_config.container_padding; monitor.container_padding = monitor_config.container_padding;
monitor.workspace_padding = monitor_config.workspace_padding; monitor.workspace_padding = monitor_config.workspace_padding;
monitor.wallpaper = monitor_config.wallpaper.clone(); monitor.wallpaper = monitor_config.wallpaper.clone();
@@ -1655,7 +1636,7 @@ impl StaticConfig {
m.window_based_work_area_offset = monitor_config.window_based_work_area_offset; m.window_based_work_area_offset = monitor_config.window_based_work_area_offset;
m.window_based_work_area_offset_limit = monitor_config m.window_based_work_area_offset_limit = monitor_config
.window_based_work_area_offset_limit .window_based_work_area_offset_limit
.unwrap_or(defaults::WINDOW_BASED_WORK_AREA_OFFSET_LIMIT); .unwrap_or(1);
m.container_padding = monitor_config.container_padding; m.container_padding = monitor_config.container_padding;
m.workspace_padding = monitor_config.workspace_padding; m.workspace_padding = monitor_config.workspace_padding;
m.floating_layer_behaviour = monitor_config.floating_layer_behaviour; m.floating_layer_behaviour = monitor_config.floating_layer_behaviour;
@@ -1675,10 +1656,10 @@ impl StaticConfig {
wm.enforce_workspace_rules()?; wm.enforce_workspace_rules()?;
border_manager::BORDER_ENABLED.store( if let Some(border_enabled) = value.border {
value.border.unwrap_or(defaults::BORDER_ENABLED), border_manager::BORDER_ENABLED.store(border_enabled, Ordering::SeqCst);
Ordering::SeqCst, }
);
wm.window_management_behaviour.current_behaviour = wm.window_management_behaviour.current_behaviour =
value.window_container_behaviour.unwrap_or_default(); value.window_container_behaviour.unwrap_or_default();
wm.window_management_behaviour.float_override = value.float_override.unwrap_or_default(); wm.window_management_behaviour.float_override = value.float_override.unwrap_or_default();
@@ -1698,10 +1679,10 @@ impl StaticConfig {
wm.unmanaged_window_operation_behaviour = value wm.unmanaged_window_operation_behaviour = value
.unmanaged_window_operation_behaviour .unmanaged_window_operation_behaviour
.unwrap_or_default(); .unwrap_or_default();
wm.resize_delta = value.resize_delta.unwrap_or(defaults::RESIZE_DELTA); wm.resize_delta = value.resize_delta.unwrap_or(DEFAULT_RESIZE_DELTA);
wm.mouse_follows_focus = value wm.mouse_follows_focus = value
.mouse_follows_focus .mouse_follows_focus
.unwrap_or(defaults::MOUSE_FOLLOWS_FOCUS); .unwrap_or(DEFAULT_MOUSE_FOLLOWS_FOCUS);
wm.work_area_offset = value.global_work_area_offset; wm.work_area_offset = value.global_work_area_offset;
#[allow(deprecated)] #[allow(deprecated)]
{ {
+9 -9
View File
@@ -2490,47 +2490,47 @@
"description": "A predefined komorebi layout", "description": "A predefined komorebi layout",
"oneOf": [ "oneOf": [
{ {
"description": "BSP Layout\n\n```\n+-------+-----+\n| | |\n| +--+--+\n| | |--|\n+-------+--+--+\n```", "description": "BSP Layout\n\n```text\n+-------+-----+\n| | |\n| +--+--+\n| | |--|\n+-------+--+--+\n```",
"type": "string", "type": "string",
"const": "BSP" "const": "BSP"
}, },
{ {
"description": "Columns Layout\n\n```\n+--+--+--+--+\n| | | | |\n| | | | |\n| | | | |\n+--+--+--+--+\n```", "description": "Columns Layout\n\n```text\n+--+--+--+--+\n| | | | |\n| | | | |\n| | | | |\n+--+--+--+--+\n```",
"type": "string", "type": "string",
"const": "Columns" "const": "Columns"
}, },
{ {
"description": "Rows Layout\n\n```\n+-----------+\n|-----------|\n|-----------|\n|-----------|\n+-----------+\n```", "description": "Rows Layout\n\n```text\n+-----------+\n|-----------|\n|-----------|\n|-----------|\n+-----------+\n```",
"type": "string", "type": "string",
"const": "Rows" "const": "Rows"
}, },
{ {
"description": "Vertical Stack Layout\n\n```\n+-------+-----+\n| | |\n| +-----+\n| | |\n+-------+-----+\n```", "description": "Vertical Stack Layout\n\n```text\n+-------+-----+\n| | |\n| +-----+\n| | |\n+-------+-----+\n```",
"type": "string", "type": "string",
"const": "VerticalStack" "const": "VerticalStack"
}, },
{ {
"description": "Horizontal Stack Layout\n\n```\n+------+------+\n| |\n|------+------+\n| | |\n+------+------+\n```", "description": "Horizontal Stack Layout\n\n```text\n+------+------+\n| |\n|------+------+\n| | |\n+------+------+\n```",
"type": "string", "type": "string",
"const": "HorizontalStack" "const": "HorizontalStack"
}, },
{ {
"description": "Ultrawide Vertical Stack Layout\n\n```\n+-----+-----------+-----+\n| | | |\n| | +-----+\n| | | |\n| | +-----+\n| | | |\n+-----+-----------+-----+\n```", "description": "Ultrawide Vertical Stack Layout\n\n```text\n+-----+-----------+-----+\n| | | |\n| | +-----+\n| | | |\n| | +-----+\n| | | |\n+-----+-----------+-----+\n```",
"type": "string", "type": "string",
"const": "UltrawideVerticalStack" "const": "UltrawideVerticalStack"
}, },
{ {
"description": "Grid Layout\n\n```\n+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n| | | | | | | | | | | | | | |\n| | | | | | | | | | | | | +---+\n+-----+-----+ | +---+---+ +---+---+---+ +---+---| |\n| | | | | | | | | | | | | +---+\n| | | | | | | | | | | | | | |\n+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n 4 windows 5 windows 6 windows 7 windows\n```", "description": "Grid Layout\n\n```text\n+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n| | | | | | | | | | | | | | |\n| | | | | | | | | | | | | +---+\n+-----+-----+ | +---+---+ +---+---+---+ +---+---| |\n| | | | | | | | | | | | | +---+\n| | | | | | | | | | | | | | |\n+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n 4 windows 5 windows 6 windows 7 windows\n```",
"type": "string", "type": "string",
"const": "Grid" "const": "Grid"
}, },
{ {
"description": "Right Main Vertical Stack Layout\n\n```\n+-----+-------+\n| | |\n+-----+ |\n| | |\n+-----+-------+\n```", "description": "Right Main Vertical Stack Layout\n\n```text\n+-----+-------+\n| | |\n+-----+ |\n| | |\n+-----+-------+\n```",
"type": "string", "type": "string",
"const": "RightMainVerticalStack" "const": "RightMainVerticalStack"
}, },
{ {
"description": "Scrolling Layout\n\n```\n+--+--+--+--+--+--+\n| | | |\n| | | |\n| | | |\n+--+--+--+--+--+--+\n```", "description": "Scrolling Layout\n\n```text\n+--+--+--+--+--+--+\n| | | |\n| | | |\n| | | |\n+--+--+--+--+--+--+\n```",
"type": "string", "type": "string",
"const": "Scrolling" "const": "Scrolling"
} }
+9 -9
View File
@@ -2695,47 +2695,47 @@
"description": "A predefined komorebi layout", "description": "A predefined komorebi layout",
"oneOf": [ "oneOf": [
{ {
"description": "BSP Layout\n\n```\n+-------+-----+\n| | |\n| +--+--+\n| | |--|\n+-------+--+--+\n```", "description": "BSP Layout\n\n```text\n+-------+-----+\n| | |\n| +--+--+\n| | |--|\n+-------+--+--+\n```",
"type": "string", "type": "string",
"const": "BSP" "const": "BSP"
}, },
{ {
"description": "Columns Layout\n\n```\n+--+--+--+--+\n| | | | |\n| | | | |\n| | | | |\n+--+--+--+--+\n```", "description": "Columns Layout\n\n```text\n+--+--+--+--+\n| | | | |\n| | | | |\n| | | | |\n+--+--+--+--+\n```",
"type": "string", "type": "string",
"const": "Columns" "const": "Columns"
}, },
{ {
"description": "Rows Layout\n\n```\n+-----------+\n|-----------|\n|-----------|\n|-----------|\n+-----------+\n```", "description": "Rows Layout\n\n```text\n+-----------+\n|-----------|\n|-----------|\n|-----------|\n+-----------+\n```",
"type": "string", "type": "string",
"const": "Rows" "const": "Rows"
}, },
{ {
"description": "Vertical Stack Layout\n\n```\n+-------+-----+\n| | |\n| +-----+\n| | |\n+-------+-----+\n```", "description": "Vertical Stack Layout\n\n```text\n+-------+-----+\n| | |\n| +-----+\n| | |\n+-------+-----+\n```",
"type": "string", "type": "string",
"const": "VerticalStack" "const": "VerticalStack"
}, },
{ {
"description": "Horizontal Stack Layout\n\n```\n+------+------+\n| |\n|------+------+\n| | |\n+------+------+\n```", "description": "Horizontal Stack Layout\n\n```text\n+------+------+\n| |\n|------+------+\n| | |\n+------+------+\n```",
"type": "string", "type": "string",
"const": "HorizontalStack" "const": "HorizontalStack"
}, },
{ {
"description": "Ultrawide Vertical Stack Layout\n\n```\n+-----+-----------+-----+\n| | | |\n| | +-----+\n| | | |\n| | +-----+\n| | | |\n+-----+-----------+-----+\n```", "description": "Ultrawide Vertical Stack Layout\n\n```text\n+-----+-----------+-----+\n| | | |\n| | +-----+\n| | | |\n| | +-----+\n| | | |\n+-----+-----------+-----+\n```",
"type": "string", "type": "string",
"const": "UltrawideVerticalStack" "const": "UltrawideVerticalStack"
}, },
{ {
"description": "Grid Layout\n\n```\n+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n| | | | | | | | | | | | | | |\n| | | | | | | | | | | | | +---+\n+-----+-----+ | +---+---+ +---+---+---+ +---+---| |\n| | | | | | | | | | | | | +---+\n| | | | | | | | | | | | | | |\n+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n 4 windows 5 windows 6 windows 7 windows\n```", "description": "Grid Layout\n\n```text\n+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n| | | | | | | | | | | | | | |\n| | | | | | | | | | | | | +---+\n+-----+-----+ | +---+---+ +---+---+---+ +---+---| |\n| | | | | | | | | | | | | +---+\n| | | | | | | | | | | | | | |\n+-----+-----+ +---+---+---+ +---+---+---+ +---+---+---+\n 4 windows 5 windows 6 windows 7 windows\n```",
"type": "string", "type": "string",
"const": "Grid" "const": "Grid"
}, },
{ {
"description": "Right Main Vertical Stack Layout\n\n```\n+-----+-------+\n| | |\n+-----+ |\n| | |\n+-----+-------+\n```", "description": "Right Main Vertical Stack Layout\n\n```text\n+-----+-------+\n| | |\n+-----+ |\n| | |\n+-----+-------+\n```",
"type": "string", "type": "string",
"const": "RightMainVerticalStack" "const": "RightMainVerticalStack"
}, },
{ {
"description": "Scrolling Layout\n\n```\n+--+--+--+--+--+--+\n| | | |\n| | | |\n| | | |\n+--+--+--+--+--+--+\n```", "description": "Scrolling Layout\n\n```text\n+--+--+--+--+--+--+\n| | | |\n| | | |\n| | | |\n+--+--+--+--+--+--+\n```",
"type": "string", "type": "string",
"const": "Scrolling" "const": "Scrolling"
} }