diff options
| author | vaxerski <vaxry@vaxry.net> | 2023-01-24 19:05:34 +0000 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2023-01-24 19:05:43 +0000 |
| commit | a2ae37396fd92482534579a5344c0a0594026a33 (patch) | |
| tree | 5068c72ed5849f86f462c2b86b75781b40791b90 /src/debug/HyprCtl.cpp | |
| parent | eb9fa8460fb613bc701816e7087cc3667e43bb51 (diff) | |
add hyprctl setprop
Diffstat (limited to 'src/debug/HyprCtl.cpp')
| -rw-r--r-- | src/debug/HyprCtl.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp index e2c265bf..934bd3de 100644 --- a/src/debug/HyprCtl.cpp +++ b/src/debug/HyprCtl.cpp @@ -836,6 +836,73 @@ std::string dispatchSeterror(std::string request) { return "ok"; } +std::string dispatchSetProp(std::string request) { + CVarList vars(request, 0, ' '); + + if (vars.size() < 4) + return "not enough args"; + + const auto PWINDOW = g_pCompositor->getWindowByRegex(vars[1]); + + if (!PWINDOW) + return "window not found"; + + const auto PROP = vars[2]; + const auto VAL = vars[3]; + + bool lock = false; + + if (vars.size() > 4) { + if (vars[4].find("lock") == 0) { + lock = true; + } + } + + try { + if (PROP == "animationstyle") { + PWINDOW->m_sAdditionalConfigData.animationStyle = VAL; + } else if (PROP == "rounding") { + PWINDOW->m_sAdditionalConfigData.rounding.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "forcenoblur") { + PWINDOW->m_sAdditionalConfigData.forceNoBlur.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "forceopaque") { + PWINDOW->m_sAdditionalConfigData.forceOpaque.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "forceopaqueoverriden") { + PWINDOW->m_sAdditionalConfigData.forceOpaqueOverriden.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "forceallowsinput") { + PWINDOW->m_sAdditionalConfigData.forceAllowsInput.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "forcenoanims") { + PWINDOW->m_sAdditionalConfigData.forceNoAnims.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "forcenoborder") { + PWINDOW->m_sAdditionalConfigData.forceNoBorder.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "forcenoshadow") { + PWINDOW->m_sAdditionalConfigData.forceNoShadow.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "windowdancecompat") { + PWINDOW->m_sAdditionalConfigData.windowDanceCompat.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "nomaxsize") { + PWINDOW->m_sAdditionalConfigData.noMaxSize.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "dimaround") { + PWINDOW->m_sAdditionalConfigData.dimAround.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "alphaoverride") { + PWINDOW->m_sSpecialRenderData.alphaOverride.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "alpha") { + PWINDOW->m_sSpecialRenderData.alpha.forceSetIgnoreLocked(std::stof(VAL), lock); + } else if (PROP == "alphainactiveoverride") { + PWINDOW->m_sSpecialRenderData.alphaInactiveOverride.forceSetIgnoreLocked(std::stoi(VAL), lock); + } else if (PROP == "alphainactive") { + PWINDOW->m_sSpecialRenderData.alphaInactive.forceSetIgnoreLocked(std::stof(VAL), lock); + } else if (PROP == "activebordercolor") { + PWINDOW->m_sSpecialRenderData.activeBorderColor.forceSetIgnoreLocked(std::stoll(VAL), lock); + } else if (PROP == "inactivebordercolor") { + PWINDOW->m_sSpecialRenderData.inactiveBorderColor.forceSetIgnoreLocked(std::stoll(VAL), lock); + } else { + return "prop not found"; + } + } catch (std::exception& e) { return "error in parsing prop value: " + std::string(e.what()); } + + return "ok"; +} + std::string dispatchGetOption(std::string request, HyprCtl::eHyprCtlOutputFormat format) { std::string curitem = ""; @@ -1004,6 +1071,8 @@ std::string getReply(std::string request) { return cursorPosRequest(format); else if (request == "binds") return bindsRequest(format); + else if (request.find("setprop") == 0) + return dispatchSetProp(request); else if (request.find("seterror") == 0) return dispatchSeterror(request); else if (request.find("switchxkblayout") == 0) |
