mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-07 22:05:58 +01:00
Added Xwayland and floating props to windowrulev2
This commit is contained in:
parent
cf5426f2d8
commit
44a2d755c6
2 changed files with 26 additions and 1 deletions
|
@ -777,11 +777,14 @@ void CConfigManager::handleWindowRuleV2(const std::string& command, const std::s
|
||||||
SWindowRule rule;
|
SWindowRule rule;
|
||||||
rule.v2 = true;
|
rule.v2 = true;
|
||||||
rule.szRule = RULE;
|
rule.szRule = RULE;
|
||||||
|
rule.szValue = VALUE;
|
||||||
|
|
||||||
const auto TITLEPOS = VALUE.find("title:");
|
const auto TITLEPOS = VALUE.find("title:");
|
||||||
const auto CLASSPOS = VALUE.find("class:");
|
const auto CLASSPOS = VALUE.find("class:");
|
||||||
|
const auto X11POS = VALUE.find("xwayland:");
|
||||||
|
const auto FLOATPOS = VALUE.find("floating:");
|
||||||
|
|
||||||
if (TITLEPOS == std::string::npos && CLASSPOS == std::string::npos) {
|
if (TITLEPOS == std::string::npos && CLASSPOS == std::string::npos && X11POS == std::string::npos && FLOATPOS == std::string::npos) {
|
||||||
Debug::log(ERR, "Invalid rulev2 syntax: %s", VALUE.c_str());
|
Debug::log(ERR, "Invalid rulev2 syntax: %s", VALUE.c_str());
|
||||||
parseError = "Invalid rulev2 syntax: " + VALUE;
|
parseError = "Invalid rulev2 syntax: " + VALUE;
|
||||||
return;
|
return;
|
||||||
|
@ -794,6 +797,8 @@ void CConfigManager::handleWindowRuleV2(const std::string& command, const std::s
|
||||||
size_t min = 999999;
|
size_t min = 999999;
|
||||||
if (TITLEPOS > pos && TITLEPOS < min) min = TITLEPOS;
|
if (TITLEPOS > pos && TITLEPOS < min) min = TITLEPOS;
|
||||||
if (CLASSPOS > pos && CLASSPOS < min) min = CLASSPOS;
|
if (CLASSPOS > pos && CLASSPOS < min) min = CLASSPOS;
|
||||||
|
if (X11POS > pos && X11POS < min) min = X11POS;
|
||||||
|
if (FLOATPOS > pos && FLOATPOS < min) min = FLOATPOS;
|
||||||
|
|
||||||
result = result.substr(0, min - pos);
|
result = result.substr(0, min - pos);
|
||||||
|
|
||||||
|
@ -811,6 +816,14 @@ void CConfigManager::handleWindowRuleV2(const std::string& command, const std::s
|
||||||
rule.szTitle = extract(TITLEPOS + 6);
|
rule.szTitle = extract(TITLEPOS + 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (X11POS != std::string::npos) {
|
||||||
|
rule.bX11 = extract(X11POS + 9) == "1" ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FLOATPOS != std::string::npos) {
|
||||||
|
rule.bFloating = extract(FLOATPOS + 9) == "1" ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
m_dWindowRules.push_back(rule);
|
m_dWindowRules.push_back(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1370,6 +1383,16 @@ std::vector<SWindowRule> CConfigManager::getMatchingRules(CWindow* pWindow) {
|
||||||
if (!std::regex_search(title, RULECHECK))
|
if (!std::regex_search(title, RULECHECK))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rule.bX11 != -1) {
|
||||||
|
if (pWindow->m_bIsX11 != rule.bX11)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rule.bFloating != -1) {
|
||||||
|
if (pWindow->m_bIsFloating != rule.bFloating)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
Debug::log(ERR, "Regex error at %s", rule.szValue.c_str());
|
Debug::log(ERR, "Regex error at %s", rule.szValue.c_str());
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -52,6 +52,8 @@ struct SWindowRule {
|
||||||
bool v2 = false;
|
bool v2 = false;
|
||||||
std::string szTitle;
|
std::string szTitle;
|
||||||
std::string szClass;
|
std::string szClass;
|
||||||
|
int bX11 = -1; // -1 means "ANY"
|
||||||
|
int bFloating = -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SAnimationPropertyConfig {
|
struct SAnimationPropertyConfig {
|
||||||
|
|
Loading…
Reference in a new issue