diff --git a/src/Window.hpp b/src/Window.hpp index 05359cf1..236ee47b 100644 --- a/src/Window.hpp +++ b/src/Window.hpp @@ -26,6 +26,7 @@ struct SWindowAdditionalConfigData { bool forceNoAnims = false; bool forceNoBorder = false; bool forceNoShadow = false; + bool windowDanceCompat = false; }; class CWindow { diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 40a36eb3..fd19931e 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -761,6 +761,7 @@ bool windowRuleValid(const std::string& RULE) { && RULE != "fullscreen" && RULE != "pin" && RULE != "noanim" + && RULE != "windowdance" && RULE.find("animation") != 0 && RULE.find("rounding") != 0 && RULE.find("workspace") != 0); diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index 825e24d5..a7c9bd30 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -169,6 +169,8 @@ void Events::listener_mapWindow(void* owner, void* data) { requestsFullscreen = true; } else if (r.szRule == "opaque") { PWINDOW->m_sAdditionalConfigData.forceOpaque = true; + } else if (r.szRule == "windowdance") { + PWINDOW->m_sAdditionalConfigData.windowDanceCompat = true; } else if (r.szRule == "forceinput") { PWINDOW->m_sAdditionalConfigData.forceAllowsInput = true; } else if (r.szRule == "pin") { @@ -737,7 +739,8 @@ void Events::listener_configureX11(void* owner, void* data) { PWINDOW->m_bCreatedOverFullscreen = true; - g_pInputManager->refocus(); + if (!PWINDOW->m_sAdditionalConfigData.windowDanceCompat) + g_pInputManager->refocus(); g_pHyprRenderer->damageWindow(PWINDOW);