From abdfc5ea40c0793117f34bf6c465840500cf7cb0 Mon Sep 17 00:00:00 2001 From: UjinT34 <41110182+UjinT34@users.noreply.github.com> Date: Thu, 5 Jun 2025 17:56:46 +0300 Subject: config: add a new monitor v2 config syntax (#9761) --- src/config/ConfigManager.hpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/config/ConfigManager.hpp') diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp index 134292e5..2d8446b5 100644 --- a/src/config/ConfigManager.hpp +++ b/src/config/ConfigManager.hpp @@ -27,6 +27,8 @@ #define HANDLE void* +class CConfigManager; + struct SWorkspaceRule { std::string monitor = ""; std::string workspaceString = ""; @@ -170,6 +172,32 @@ namespace std { }; } +class CMonitorRuleParser { + public: + CMonitorRuleParser(const std::string& name); + + const std::string& name(); + SMonitorRule& rule(); + std::optional getError(); + bool parseMode(const std::string& value); + bool parsePosition(const std::string& value, bool isFirst = false); + bool parseScale(const std::string& value); + bool parseTransform(const std::string& value); + bool parseBitdepth(const std::string& value); + bool parseCM(const std::string& value); + bool parseSDRBrightness(const std::string& value); + bool parseSDRSaturation(const std::string& value); + bool parseVRR(const std::string& value); + + void setDisabled(); + void setMirror(const std::string& value); + bool setReserved(const SMonitorAdditionalReservedArea& value); + + private: + SMonitorRule m_rule; + std::string m_error = ""; +}; + class CConfigManager { public: CConfigManager(); @@ -257,6 +285,9 @@ class CConfigManager { std::optional handlePlugin(const std::string&, const std::string&); std::optional handlePermission(const std::string&, const std::string&); + std::optional handleMonitorv2(const std::string& output); + Hyprlang::CParseResult handleMonitorv2(); + std::string m_configCurrentPath; bool m_wantsMonitorReload = false; @@ -307,6 +338,7 @@ class CConfigManager { std::optional resetHLConfig(); std::optional generateConfig(std::string configPath); std::optional verifyConfigExists(); + void postConfigReload(const Hyprlang::CParseResult& result); SWorkspaceRule mergeWorkspaceRules(const SWorkspaceRule&, const SWorkspaceRule&); @@ -319,6 +351,7 @@ class CConfigManager { std::unordered_map m_mStoredFloatingSizes; friend struct SConfigOptionDescription; + friend class CMonitorRuleParser; }; inline UP g_pConfigManager; -- cgit v1.2.3