diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 89c0d08b..445e2e04 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -495,17 +495,14 @@ CMonitor* CCompositor::getMonitorFromName(const std::string& name) { return m.get(); } } - return nullptr; } CMonitor* CCompositor::getMonitorFromDesc(const std::string& desc) { for (auto& m : m_vMonitors) { - if (desc == m->output->description) { + if (m->output->description && std::string(m->output->description).find(desc) == 0) return m.get(); - } } - return nullptr; } diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index b5fcf0fa..56c55f3b 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -2195,8 +2195,15 @@ void CConfigManager::removePluginConfig(HANDLE handle) { std::string CConfigManager::getDefaultWorkspaceFor(const std::string& name) { for (auto other = m_dWorkspaceRules.begin(); other != m_dWorkspaceRules.end(); ++other) { - if (other->isDefault && (other->monitor == name || (other->monitor.substr(0, 5) == "desc:" && g_pCompositor->getMonitorFromDesc(other->monitor.substr(5))->szName == name))) - return other->workspaceString; + if (other->isDefault) { + if (other->monitor == name) + return other->workspaceString; + if (other->monitor.substr(0, 5) == "desc:") { + auto monitor = g_pCompositor->getMonitorFromDesc(other->monitor.substr(5)); + if (monitor && monitor->szName == name) + return other->workspaceString; + } + } } return ""; }