From df0c8e0f7a580e18eebbe934c00124a08b426583 Mon Sep 17 00:00:00 2001 From: Roberto Previdi Date: Mon, 9 Oct 2023 21:28:22 +0200 Subject: [PATCH] workspacerules: Add a persistent workspace rule (#3530) * add persistent flag to workspace rules * get rid of unused ws->indestructible flag --- src/Compositor.cpp | 5 ++++- src/config/ConfigManager.cpp | 2 ++ src/config/ConfigManager.hpp | 1 + src/helpers/Workspace.hpp | 3 --- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 66306888..42c2ab35 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -1188,8 +1188,11 @@ void CCompositor::sanityCheckWorkspaces() { auto it = m_vWorkspaces.begin(); while (it != m_vWorkspaces.end()) { - if ((*it)->m_bIndestructible) + const auto WORKSPACERULE = g_pConfigManager->getWorkspaceRuleFor(it->get()); + if (WORKSPACERULE.isPersistent) { + ++it; continue; + } const auto WINDOWSONWORKSPACE = getWindowsOnWorkspace((*it)->m_iID); diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 23efe77e..f21ad9f3 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -1177,6 +1177,8 @@ void CConfigManager::handleWorkspaceRules(const std::string& command, const std: wsRule.monitor = rule.substr(delim + 8); else if ((delim = rule.find("default:")) != std::string::npos) wsRule.isDefault = configStringToInt(rule.substr(delim + 8)); + else if ((delim = rule.find("persistent:")) != std::string::npos) + wsRule.isPersistent = configStringToInt(rule.substr(delim + 11)); }; size_t pos = 0; diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp index 390079d3..e637979d 100644 --- a/src/config/ConfigManager.hpp +++ b/src/config/ConfigManager.hpp @@ -41,6 +41,7 @@ struct SWorkspaceRule { std::string workspaceName = ""; int workspaceId = -1; bool isDefault = false; + bool isPersistent = false; std::optional gapsIn; std::optional gapsOut; std::optional borderSize; diff --git a/src/helpers/Workspace.hpp b/src/helpers/Workspace.hpp index 2e810b9a..cbdbc07a 100644 --- a/src/helpers/Workspace.hpp +++ b/src/helpers/Workspace.hpp @@ -50,9 +50,6 @@ class CWorkspace { bool m_bDefaultFloating = false; bool m_bDefaultPseudo = false; - // don't destroy in sanity check - bool m_bIndestructible = false; - // last monitor (used on reconnect) std::string m_szLastMonitor = "";