#include "../globals.hpp" #include "../cursor.hpp" #include "src/render/Renderer.hpp" #include "config.hpp" #include #include #include #include bool isEnabled() { static auto* const* PENABLED = (Hyprlang::INT* const*) getConfig(CONFIG_ENABLED); return **PENABLED && g_pHyprRenderer->m_pMostHzMonitor && g_pDynamicCursors; // make sure the compositor is properly initialized } Hyprlang::CConfigValue toHyprlang(std::variant value) { if (std::holds_alternative(value)) return Hyprlang::STRING { std::get(value).c_str() }; if (std::holds_alternative(value)) return Hyprlang::FLOAT { std::get(value) }; if (std::holds_alternative(value)) return Hyprlang::INT { std::get(value) }; throw new std::logic_error("invalid type in variant?!"); } EShapeRuleType toShapeRule(std::variant value) { if (std::holds_alternative(value)) return EShapeRuleType::STRING; if (std::holds_alternative(value)) return EShapeRuleType::FLOAT; if (std::holds_alternative(value)) return EShapeRuleType::INT; throw new std::logic_error("invalid type in variant?!"); } void startConfig() { g_pShapeRuleHandler = std::make_unique(); } void addConfig(std::string name, std::variant value) { HyprlandAPI::addConfigValue(PHANDLE, NAMESPACE + name, toHyprlang(value)); } void addShapeConfig(std::string name, std::variant value) { addConfig(name, value); g_pShapeRuleHandler->addProperty(name, toShapeRule(value)); } void* const* getConfig(std::string name) { return HyprlandAPI::getConfigValue(PHANDLE, NAMESPACE + name)->getDataStaticPtr(); } void* const* getHyprlandConfig(std::string name) { return HyprlandAPI::getConfigValue(PHANDLE, name)->getDataStaticPtr(); } void addRulesConfig() { HyprlandAPI::addConfigKeyword(PHANDLE, CONFIG_SHAPERULE, onShapeRuleKeyword, Hyprlang::SHandlerOptions {}); // clear on reload static const auto PCALLBACK = HyprlandAPI::registerCallbackDynamic( PHANDLE, "preConfigReload", [&](void* self, SCallbackInfo&, std::any data) { g_pShapeRuleHandler->clear(); }); } void finishConfig() { HyprlandAPI::reloadConfig(); }