Skip to content

Commit

Permalink
Added support for XDG_CONFIG_HOME (#62)
Browse files Browse the repository at this point in the history
* Added support for XDG_CONFIG_HOME

* Style fixes and null check
  • Loading branch information
edyounis committed Jul 16, 2023
1 parent a1d9ab7 commit ac5f7b0
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 15 deletions.
34 changes: 19 additions & 15 deletions src/config/ConfigManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,13 @@ CConfigManager::CConfigManager() {
// Read file from default location
// or from an explicit location given by user

std::string configPath;
if (g_pHyprpaper->m_szExplicitConfigPath.empty()) {
const char* const ENVHOME = getenv("HOME");
configPath = ENVHOME + std::string("/.config/hypr/hyprpaper.conf");
} else {
configPath = g_pHyprpaper->m_szExplicitConfigPath;
}
std::string configPath = getMainConfigPath();

std::ifstream ifs;
ifs.open(configPath);

if (!ifs.good()) {
if (g_pHyprpaper->m_szExplicitConfigPath.empty()) {
Debug::log(CRIT, "No config file provided. Default config file `~/.config/hypr/hyprpaper.conf` couldn't be opened.");
} else {
Debug::log(CRIT, "No config file provided. Specified file `%s` couldn't be opened.", configPath.c_str());
}
Debug::log(CRIT, "Config file `%s` couldn't be opened.", configPath.c_str());
exit(1);
}

Expand Down Expand Up @@ -58,6 +48,20 @@ CConfigManager::CConfigManager() {
}
}

std::string CConfigManager::getMainConfigPath() {
if (!g_pHyprpaper->m_szExplicitConfigPath.empty())
return g_pHyprpaper->m_szExplicitConfigPath;

static const char* xdgConfigHome = getenv("XDG_CONFIG_HOME");
std::string configPath;
if (!xdgConfigHome)
configPath = getenv("HOME") + std::string("/.config");
else
configPath = xdgConfigHome;

return configPath + "/hypr/hyprpaper.conf";
}

std::string CConfigManager::removeBeginEndSpacesTabs(std::string str) {
while (str[0] == ' ' || str[0] == '\t') {
str = str.substr(1);
Expand Down Expand Up @@ -184,10 +188,10 @@ void CConfigManager::handleUnload(const std::string& COMMAND, const std::string&
void CConfigManager::handleUnloadAll(const std::string& COMMAND, const std::string& VALUE) {
std::vector<std::string> toUnload;

for (auto&[name, target] : g_pHyprpaper->m_mWallpaperTargets) {
for (auto& [name, target] : g_pHyprpaper->m_mWallpaperTargets) {

bool exists = false;
for (auto&[mon, target2] : g_pHyprpaper->m_mMonitorActiveWallpaperTargets) {
for (auto& [mon, target2] : g_pHyprpaper->m_mMonitorActiveWallpaperTargets) {
if (&target == target2) {
exists = true;
break;
Expand All @@ -206,7 +210,7 @@ void CConfigManager::handleUnloadAll(const std::string& COMMAND, const std::stri

// trim from both ends
std::string CConfigManager::trimPath(std::string path) {
//trims whitespaces, tabs and new line feeds
// trims whitespaces, tabs and new line feeds
size_t pathStartIndex = path.find_first_not_of(" \t\r\n");
size_t pathEndIndex = path.find_last_not_of(" \t\r\n");
return path.substr(pathStartIndex, pathEndIndex - pathStartIndex + 1);
Expand Down
1 change: 1 addition & 0 deletions src/config/ConfigManager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class CConfigManager {
CConfigManager();

std::deque<std::string> m_dRequestedPreloads;
std::string getMainConfigPath();

private:
std::string parseError;
Expand Down

0 comments on commit ac5f7b0

Please sign in to comment.