diff --git a/komorebi/src/static_config.rs b/komorebi/src/static_config.rs index 0cf04baf..825f10e3 100644 --- a/komorebi/src/static_config.rs +++ b/komorebi/src/static_config.rs @@ -35,6 +35,7 @@ use crate::window_manager::WindowManager; use crate::window_manager_event::WindowManagerEvent; use crate::windows_api::WindowsApi; use crate::workspace::Workspace; +use crate::Axis; use crate::CrossBoundaryBehaviour; use crate::DATA_DIR; use crate::DEFAULT_CONTAINER_PADDING; @@ -148,6 +149,9 @@ pub struct WorkspaceConfig { /// (default: false) #[serde(skip_serializing_if = "Option::is_none")] pub float_override: Option, + /// Specify an axis on which to flip the selected layout (default: None) + #[serde(skip_serializing_if = "Option::is_none")] + pub layout_flip: Option, } impl From<&Workspace> for WorkspaceConfig { @@ -202,6 +206,7 @@ impl From<&Workspace> for WorkspaceConfig { apply_window_based_work_area_offset: Some(value.apply_window_based_work_area_offset()), window_container_behaviour: *value.window_container_behaviour(), float_override: *value.float_override(), + layout_flip: value.layout_flip(), } } } diff --git a/komorebi/src/workspace.rs b/komorebi/src/workspace.rs index c3180a3e..ce9d61ea 100644 --- a/komorebi/src/workspace.rs +++ b/komorebi/src/workspace.rs @@ -187,6 +187,10 @@ impl Workspace { self.set_float_override(config.float_override); } + if config.layout_flip.is_some() { + self.set_layout_flip(config.layout_flip); + } + Ok(()) }