From d5093f7af0f2d1e6d39a3facd0806c36e9667af1 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 5 Mar 2023 13:12:01 +0000 Subject: [PATCH] add env keyword to cfg --- src/config/ConfigManager.cpp | 16 ++++++++++++++++ src/config/ConfigManager.hpp | 1 + 2 files changed, 17 insertions(+) diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 94e09c70..78543609 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -1039,6 +1039,20 @@ void CConfigManager::handleBindWS(const std::string& command, const std::string& boundWorkspaces.push_back({ARGS[0], ARGS[1]}); } +void CConfigManager::handleEnv(const std::string& command, const std::string& value) { + if (!isFirstLaunch) + return; + + const auto ARGS = CVarList(value, 2); + + if (ARGS[0].empty()) { + parseError = "env empty"; + return; + } + + setenv(ARGS[0].c_str(), ARGS[1].c_str(), 1); +} + std::string CConfigManager::parseKeyword(const std::string& COMMAND, const std::string& VALUE, bool dynamic) { if (dynamic) { parseError = ""; @@ -1083,6 +1097,8 @@ std::string CConfigManager::parseKeyword(const std::string& COMMAND, const std:: handleBlurLS(COMMAND, VALUE); else if (COMMAND == "wsbind") handleBindWS(COMMAND, VALUE); + else if (COMMAND == "env") + handleEnv(COMMAND, VALUE); else { configSetValueSafe(currentCategory + (currentCategory == "" ? "" : ":") + COMMAND, VALUE); needsLayoutRecalc = 2; diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp index 742f9fe8..cfb81d56 100644 --- a/src/config/ConfigManager.hpp +++ b/src/config/ConfigManager.hpp @@ -244,6 +244,7 @@ class CConfigManager { void handleSubmap(const std::string&, const std::string&); void handleBlurLS(const std::string&, const std::string&); void handleBindWS(const std::string&, const std::string&); + void handleEnv(const std::string&, const std::string&); }; inline std::unique_ptr g_pConfigManager;