From c3894d9288e99500df4fc4704bcc614ea8d520ec Mon Sep 17 00:00:00 2001 From: UjinT34 <41110182+UjinT34@users.noreply.github.com> Date: Sun, 15 Jun 2025 13:15:18 +0300 Subject: config/monitor: Add monitor v2 HDR rules (#10623) --- src/config/ConfigManager.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/config/ConfigManager.cpp') 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 CConfigManager::handleMonitorv2(const std::string& ou if (VAL && VAL->m_bSetByUser) parser.parseTransform(std::any_cast(VAL->getValue())); + VAL = m_config->getSpecialConfigValuePtr("monitorv2", "supports_wide_color", output.c_str()); + if (VAL && VAL->m_bSetByUser) + parser.rule().supportsWideColor = std::any_cast(VAL->getValue()); + VAL = m_config->getSpecialConfigValuePtr("monitorv2", "supports_hdr", output.c_str()); + if (VAL && VAL->m_bSetByUser) + parser.rule().supportsHDR = std::any_cast(VAL->getValue()); + VAL = m_config->getSpecialConfigValuePtr("monitorv2", "sdr_min_luminance", output.c_str()); + if (VAL && VAL->m_bSetByUser) + parser.rule().sdrMinLuminance = std::any_cast(VAL->getValue()); + VAL = m_config->getSpecialConfigValuePtr("monitorv2", "sdr_max_luminance", output.c_str()); + if (VAL && VAL->m_bSetByUser) + parser.rule().sdrMaxLuminance = std::any_cast(VAL->getValue()); + + VAL = m_config->getSpecialConfigValuePtr("monitorv2", "min_luminance", output.c_str()); + if (VAL && VAL->m_bSetByUser) + parser.rule().minLuminance = std::any_cast(VAL->getValue()); + VAL = m_config->getSpecialConfigValuePtr("monitorv2", "max_luminance", output.c_str()); + if (VAL && VAL->m_bSetByUser) + parser.rule().maxLuminance = std::any_cast(VAL->getValue()); + VAL = m_config->getSpecialConfigValuePtr("monitorv2", "max_avg_luminance", output.c_str()); + if (VAL && VAL->m_bSetByUser) + parser.rule().maxAvgLuminance = std::any_cast(VAL->getValue()); + auto newrule = parser.rule(); std::erase_if(m_monitorRules, [&](const auto& other) { return other.name == newrule.name; }); -- cgit v1.2.3