mirror of
https://github.com/hyprwm/Hyprland
synced 2025-01-10 21:09:48 +01:00
config: avoid querying the fs every tick
This commit is contained in:
parent
1697171fc0
commit
4971725b69
2 changed files with 26 additions and 22 deletions
|
@ -716,20 +716,24 @@ std::optional<std::string> CConfigManager::generateConfig(std::string configPath
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CConfigManager::getMainConfigPath() {
|
std::string CConfigManager::getMainConfigPath() {
|
||||||
if (!g_pCompositor->explicitConfigPath.empty())
|
static std::string CONFIG_PATH = [this]() -> std::string {
|
||||||
return g_pCompositor->explicitConfigPath;
|
if (!g_pCompositor->explicitConfigPath.empty())
|
||||||
|
return g_pCompositor->explicitConfigPath;
|
||||||
|
|
||||||
if (const auto CFG_ENV = getenv("HYPRLAND_CONFIG"); CFG_ENV)
|
if (const auto CFG_ENV = getenv("HYPRLAND_CONFIG"); CFG_ENV)
|
||||||
return CFG_ENV;
|
return CFG_ENV;
|
||||||
|
|
||||||
const auto PATHS = Hyprutils::Path::findConfig(ISDEBUG ? "hyprlandd" : "hyprland");
|
const auto PATHS = Hyprutils::Path::findConfig(ISDEBUG ? "hyprlandd" : "hyprland");
|
||||||
if (PATHS.first.has_value()) {
|
if (PATHS.first.has_value()) {
|
||||||
return PATHS.first.value();
|
return PATHS.first.value();
|
||||||
} else if (PATHS.second.has_value()) {
|
} else if (PATHS.second.has_value()) {
|
||||||
const auto CONFIGPATH = Hyprutils::Path::fullConfigPath(PATHS.second.value(), ISDEBUG ? "hyprlandd" : "hyprland");
|
const auto CONFIGPATH = Hyprutils::Path::fullConfigPath(PATHS.second.value(), ISDEBUG ? "hyprlandd" : "hyprland");
|
||||||
return generateConfig(CONFIGPATH).value();
|
return generateConfig(CONFIGPATH).value();
|
||||||
} else
|
} 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.");
|
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() {
|
std::optional<std::string> CConfigManager::verifyConfigExists() {
|
||||||
|
|
|
@ -163,7 +163,7 @@ class CConfigManager {
|
||||||
|
|
||||||
void* const* getConfigValuePtr(const std::string&);
|
void* const* getConfigValuePtr(const std::string&);
|
||||||
Hyprlang::CConfigValue* getHyprlangConfigValuePtr(const std::string& name, const std::string& specialCat = "");
|
Hyprlang::CConfigValue* getHyprlangConfigValuePtr(const std::string& name, const std::string& specialCat = "");
|
||||||
static std::string getMainConfigPath();
|
std::string getMainConfigPath();
|
||||||
std::string getConfigString();
|
std::string getConfigString();
|
||||||
|
|
||||||
SMonitorRule getMonitorRuleFor(const PHLMONITOR);
|
SMonitorRule getMonitorRuleFor(const PHLMONITOR);
|
||||||
|
@ -300,15 +300,15 @@ class CConfigManager {
|
||||||
std::string m_szConfigErrors = "";
|
std::string m_szConfigErrors = "";
|
||||||
|
|
||||||
// internal methods
|
// internal methods
|
||||||
void setAnimForChildren(SAnimationPropertyConfig* const);
|
void setAnimForChildren(SAnimationPropertyConfig* const);
|
||||||
void updateBlurredLS(const std::string&, const bool);
|
void updateBlurredLS(const std::string&, const bool);
|
||||||
void setDefaultAnimationVars();
|
void setDefaultAnimationVars();
|
||||||
std::optional<std::string> resetHLConfig();
|
std::optional<std::string> resetHLConfig();
|
||||||
static std::optional<std::string> generateConfig(std::string configPath);
|
std::optional<std::string> generateConfig(std::string configPath);
|
||||||
static std::optional<std::string> verifyConfigExists();
|
std::optional<std::string> verifyConfigExists();
|
||||||
void postConfigReload(const Hyprlang::CParseResult& result);
|
void postConfigReload(const Hyprlang::CParseResult& result);
|
||||||
void reload();
|
void reload();
|
||||||
SWorkspaceRule mergeWorkspaceRules(const SWorkspaceRule&, const SWorkspaceRule&);
|
SWorkspaceRule mergeWorkspaceRules(const SWorkspaceRule&, const SWorkspaceRule&);
|
||||||
};
|
};
|
||||||
|
|
||||||
inline std::unique_ptr<CConfigManager> g_pConfigManager;
|
inline std::unique_ptr<CConfigManager> g_pConfigManager;
|
||||||
|
|
Loading…
Reference in a new issue