mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-07-04 20:21:35 +02:00
fix(wm): unmanage multi-window exes on hide
Looks like explorer.exe is not the only one. Making the comparison against a list instead.
This commit is contained in:
@@ -41,6 +41,12 @@ lazy_static! {
|
|||||||
static ref FLOAT_TITLES: Arc<Mutex<Vec<String>>> = Arc::new(Mutex::new(vec![]));
|
static ref FLOAT_TITLES: Arc<Mutex<Vec<String>>> = Arc::new(Mutex::new(vec![]));
|
||||||
static ref LAYERED_EXE_WHITELIST: Arc<Mutex<Vec<String>>> =
|
static ref LAYERED_EXE_WHITELIST: Arc<Mutex<Vec<String>>> =
|
||||||
Arc::new(Mutex::new(vec!["steam.exe".to_string()]));
|
Arc::new(Mutex::new(vec!["steam.exe".to_string()]));
|
||||||
|
static ref MULTI_WINDOW_EXES: Arc<Mutex<Vec<String>>> = Arc::new(Mutex::new(vec![
|
||||||
|
"explorer.exe".to_string(),
|
||||||
|
"firefox.exe".to_string(),
|
||||||
|
"chrome.exe".to_string(),
|
||||||
|
"idea64.exe".to_string()
|
||||||
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn setup() -> Result<WorkerGuard> {
|
fn setup() -> Result<WorkerGuard> {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ use crossbeam_channel::select;
|
|||||||
|
|
||||||
use crate::window_manager::WindowManager;
|
use crate::window_manager::WindowManager;
|
||||||
use crate::window_manager_event::WindowManagerEvent;
|
use crate::window_manager_event::WindowManagerEvent;
|
||||||
|
use crate::MULTI_WINDOW_EXES;
|
||||||
|
|
||||||
pub fn listen_for_events(wm: Arc<Mutex<WindowManager>>) {
|
pub fn listen_for_events(wm: Arc<Mutex<WindowManager>>) {
|
||||||
let receiver = wm.lock().unwrap().incoming_events.lock().unwrap().clone();
|
let receiver = wm.lock().unwrap().incoming_events.lock().unwrap().clone();
|
||||||
@@ -82,9 +83,10 @@ impl WindowManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WindowManagerEvent::Hide(_, window) => {
|
WindowManagerEvent::Hide(_, window) => {
|
||||||
// explorer.exe is always returns true even if it's running in the background,
|
// Some major applications unfortunately send the HIDE signal when they are being
|
||||||
// but we want to be able to handle the event when File Explorer windows close properly
|
// minimized or destroyed. Will have to keep updating this list.
|
||||||
if !window.is_window() || window.exe()? == "explorer.exe" {
|
let common_multi_window_exes = MULTI_WINDOW_EXES.lock().unwrap();
|
||||||
|
if !window.is_window() || common_multi_window_exes.contains(&window.exe()?) {
|
||||||
self.focused_workspace_mut()?.remove_window(window.hwnd)?;
|
self.focused_workspace_mut()?.remove_window(window.hwnd)?;
|
||||||
self.update_focused_workspace(false)?;
|
self.update_focused_workspace(false)?;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user