summaryrefslogtreecommitdiff
path: root/src/config/ConfigManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/ConfigManager.cpp')
-rw-r--r--src/config/ConfigManager.cpp32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 67df5bf4..bdce573f 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -716,20 +716,24 @@ std::optional<std::string> CConfigManager::generateConfig(std::string configPath
}
std::string CConfigManager::getMainConfigPath() {
- if (!g_pCompositor->explicitConfigPath.empty())
- return g_pCompositor->explicitConfigPath;
-
- if (const auto CFG_ENV = getenv("HYPRLAND_CONFIG"); CFG_ENV)
- return CFG_ENV;
-
- const auto PATHS = Hyprutils::Path::findConfig(ISDEBUG ? "hyprlandd" : "hyprland");
- if (PATHS.first.has_value()) {
- return PATHS.first.value();
- } else if (PATHS.second.has_value()) {
- const auto CONFIGPATH = Hyprutils::Path::fullConfigPath(PATHS.second.value(), ISDEBUG ? "hyprlandd" : "hyprland");
- return generateConfig(CONFIGPATH).value();
- } else
- throw std::runtime_error("Neither HOME nor XDG_CONFIG_HOME are set in the environment. Could not find config in XDG_CONFIG_DIRS or /etc/xdg.");
+ static std::string CONFIG_PATH = [this]() -> std::string {
+ if (!g_pCompositor->explicitConfigPath.empty())
+ return g_pCompositor->explicitConfigPath;
+
+ if (const auto CFG_ENV = getenv("HYPRLAND_CONFIG"); CFG_ENV)
+ return CFG_ENV;
+
+ const auto PATHS = Hyprutils::Path::findConfig(ISDEBUG ? "hyprlandd" : "hyprland");
+ if (PATHS.first.has_value()) {
+ return PATHS.first.value();
+ } else if (PATHS.second.has_value()) {
+ const auto CONFIGPATH = Hyprutils::Path::fullConfigPath(PATHS.second.value(), ISDEBUG ? "hyprlandd" : "hyprland");
+ return generateConfig(CONFIGPATH).value();
+ } else
+ throw std::runtime_error("Neither HOME nor XDG_CONFIG_HOME are set in the environment. Could not find config in XDG_CONFIG_DIRS or /etc/xdg.");
+ }();
+
+ return CONFIG_PATH;
}
std::optional<std::string> CConfigManager::verifyConfigExists() {