summaryrefslogtreecommitdiff
path: root/src/config/ConfigManager.cpp
diff options
context:
space:
mode:
authorUjinT34 <41110182+UjinT34@users.noreply.github.com>2025-06-15 13:15:18 +0300
committerGitHub <noreply@github.com>2025-06-15 12:15:18 +0200
commitc3894d9288e99500df4fc4704bcc614ea8d520ec (patch)
tree083ac23210b978f554e3a42aa6fc618e4a861d9e /src/config/ConfigManager.cpp
parent3db3baa19e55a039c1a64a29c8e9aaadea4e5f01 (diff)
config/monitor: Add monitor v2 HDR rules (#10623)
Diffstat (limited to 'src/config/ConfigManager.cpp')
-rw-r--r--src/config/ConfigManager.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 8fc6e326..c3cb8a58 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -808,6 +808,13 @@ CConfigManager::CConfigManager() {
m_config->addSpecialConfigValue("monitorv2", "sdrsaturation", Hyprlang::FLOAT{1.0});
m_config->addSpecialConfigValue("monitorv2", "vrr", Hyprlang::INT{0});
m_config->addSpecialConfigValue("monitorv2", "transform", {STRVAL_EMPTY}); // TODO use correct type
+ m_config->addSpecialConfigValue("monitorv2", "supports_wide_color", Hyprlang::INT{0});
+ m_config->addSpecialConfigValue("monitorv2", "supports_hdr", Hyprlang::INT{0});
+ m_config->addSpecialConfigValue("monitorv2", "sdr_min_luminance", Hyprlang::FLOAT{0.2});
+ m_config->addSpecialConfigValue("monitorv2", "sdr_max_luminance", Hyprlang::INT{80});
+ m_config->addSpecialConfigValue("monitorv2", "min_luminance", Hyprlang::FLOAT{-1.0});
+ m_config->addSpecialConfigValue("monitorv2", "max_luminance", Hyprlang::INT{-1});
+ m_config->addSpecialConfigValue("monitorv2", "max_avg_luminance", Hyprlang::INT{-1});
// keywords
m_config->registerHandler(&::handleExec, "exec", {false});
@@ -1069,6 +1076,29 @@ std::optional<std::string> CConfigManager::handleMonitorv2(const std::string& ou
if (VAL && VAL->m_bSetByUser)
parser.parseTransform(std::any_cast<Hyprlang::STRING>(VAL->getValue()));
+ VAL = m_config->getSpecialConfigValuePtr("monitorv2", "supports_wide_color", output.c_str());
+ if (VAL && VAL->m_bSetByUser)
+ parser.rule().supportsWideColor = std::any_cast<Hyprlang::INT>(VAL->getValue());
+ VAL = m_config->getSpecialConfigValuePtr("monitorv2", "supports_hdr", output.c_str());
+ if (VAL && VAL->m_bSetByUser)
+ parser.rule().supportsHDR = std::any_cast<Hyprlang::INT>(VAL->getValue());
+ VAL = m_config->getSpecialConfigValuePtr("monitorv2", "sdr_min_luminance", output.c_str());
+ if (VAL && VAL->m_bSetByUser)
+ parser.rule().sdrMinLuminance = std::any_cast<Hyprlang::FLOAT>(VAL->getValue());
+ VAL = m_config->getSpecialConfigValuePtr("monitorv2", "sdr_max_luminance", output.c_str());
+ if (VAL && VAL->m_bSetByUser)
+ parser.rule().sdrMaxLuminance = std::any_cast<Hyprlang::INT>(VAL->getValue());
+
+ VAL = m_config->getSpecialConfigValuePtr("monitorv2", "min_luminance", output.c_str());
+ if (VAL && VAL->m_bSetByUser)
+ parser.rule().minLuminance = std::any_cast<Hyprlang::FLOAT>(VAL->getValue());
+ VAL = m_config->getSpecialConfigValuePtr("monitorv2", "max_luminance", output.c_str());
+ if (VAL && VAL->m_bSetByUser)
+ parser.rule().maxLuminance = std::any_cast<Hyprlang::INT>(VAL->getValue());
+ VAL = m_config->getSpecialConfigValuePtr("monitorv2", "max_avg_luminance", output.c_str());
+ if (VAL && VAL->m_bSetByUser)
+ parser.rule().maxAvgLuminance = std::any_cast<Hyprlang::INT>(VAL->getValue());
+
auto newrule = parser.rule();
std::erase_if(m_monitorRules, [&](const auto& other) { return other.name == newrule.name; });