diff --git a/src/modules/sway/window.cpp b/src/modules/sway/window.cpp index 3b424c2f..04910394 100644 --- a/src/modules/sway/window.cpp +++ b/src/modules/sway/window.cpp @@ -141,9 +141,15 @@ std::string Window::rewriteTitle(const std::string& title) for (auto it = rules.begin(); it != rules.end(); ++it) { if (it.key().isString() && it->isString()) { - const std::regex rule{it.key().asString()}; - if (std::regex_match(title, rule)) { - return std::regex_replace(title, rule, it->asString()); + try { + // malformated regexes will cause an exception. + // in this case, log error and try the next rule. + const std::regex rule{it.key().asString()}; + if (std::regex_match(title, rule)) { + return std::regex_replace(title, rule, it->asString()); + } + } catch (const std::regex_error& e) { + spdlog::error("Invalid rule {}: {}", it.key().asString(), e.what()); } } }