diff --git a/komorebi/src/transparency_manager.rs b/komorebi/src/transparency_manager.rs index daf542d3..c1814a78 100644 --- a/komorebi/src/transparency_manager.rs +++ b/komorebi/src/transparency_manager.rs @@ -17,6 +17,7 @@ use crate::WindowsApi; use crate::should_act; pub static TRANSPARENCY_ENABLED: AtomicBool = AtomicBool::new(false); +pub static TRANSPARENCY_ENABLED_OVERRIDE: AtomicBool = AtomicBool::new(false); pub static TRANSPARENCY_ALPHA: AtomicU8 = AtomicU8::new(200); static KNOWN_HWNDS: OnceLock>> = OnceLock::new(); diff --git a/komorebi/src/window_manager.rs b/komorebi/src/window_manager.rs index a9f2aeef..6244f847 100644 --- a/komorebi/src/window_manager.rs +++ b/komorebi/src/window_manager.rs @@ -2682,6 +2682,11 @@ impl WindowManager { #[tracing::instrument(skip(self))] pub fn stack_all(&mut self) -> eyre::Result<()> { + if transparency_manager::TRANSPARENCY_ENABLED.load(Ordering::SeqCst) { + transparency_manager::TRANSPARENCY_ENABLED.store(false, Ordering::SeqCst); + transparency_manager::TRANSPARENCY_ENABLED_OVERRIDE.store(true, Ordering::SeqCst); + } + self.handle_unmanaged_window_behaviour()?; tracing::info!("stacking all windows on workspace"); @@ -2749,6 +2754,11 @@ impl WindowManager { workspace.focus_container_by_window(hwnd)?; } + if transparency_manager::TRANSPARENCY_ENABLED_OVERRIDE.load(Ordering::SeqCst) { + transparency_manager::TRANSPARENCY_ENABLED.store(true, Ordering::SeqCst); + transparency_manager::TRANSPARENCY_ENABLED_OVERRIDE.store(false, Ordering::SeqCst); + } + if update_workspace { self.update_focused_workspace(self.mouse_follows_focus, true)?; }