Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added support for XDG_CONFIG_HOME #62

Merged
merged 2 commits into from
Jul 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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";
}
edyounis marked this conversation as resolved.
Show resolved Hide resolved

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