diff --git a/komorebi/src/workspace.rs b/komorebi/src/workspace.rs index 68e7cca5..f9d6f825 100644 --- a/komorebi/src/workspace.rs +++ b/komorebi/src/workspace.rs @@ -88,7 +88,7 @@ pub struct Workspace { pub float_override: Option, #[getset(get = "pub", get_mut = "pub", set = "pub")] pub globals: WorkspaceGlobals, - #[getset(get = "pub", get_mut = "pub", set = "pub")] + #[getset(get = "pub", get_mut = "pub")] pub layer: WorkspaceLayer, #[serde(skip_serializing_if = "Option::is_none")] #[getset(get = "pub", set = "pub")] @@ -593,6 +593,19 @@ impl Workspace { Ok((hwnds.len() + floating_hwnds.len(), container_ids.len())) } + pub fn set_layer(&mut self, layer: WorkspaceLayer) { + self.layer = layer; + + match layer { + WorkspaceLayer::Tiling => { + self.float_override = None; + } + WorkspaceLayer::Floating => { + self.float_override = Some(true); + } + } + } + pub fn container_for_window(&self, hwnd: isize) -> Option<&Container> { self.containers().get(self.container_idx_for_window(hwnd)?) }