#include "dropshell.hpp" #include "init_user_directory.hpp" #include #include #include #include #include #include "config.hpp" namespace fs = boost::filesystem; namespace pt = boost::property_tree; namespace dropshell { // Default user directory static bool config_loaded = false; bool is_config_loaded() { return config_loaded; } bool get_config_path(std::string &path) { // Try ~/.config/dropshell/dropshell.conf const char* home = std::getenv("HOME"); if (home) { fs::path user_path = fs::path(home) / ".config" / "dropshell" / "dropshell.conf"; path = user_path.string(); return fs::exists(path); } std::cerr << "Warning: Couldn't determine user directory" << std::endl; path = ""; return false; } bool load_config() { std::string config_path; if (!get_config_path(config_path)) return false; try { pt::ptree tree; pt::read_ini(config_path, tree); bool config_okay = false; // Try to read user directory from config try { std::string user_dir; user_dir = tree.get("user.directory"); // Update user directory through the new interface set_user_directory(user_dir); config_okay = true; } catch (const pt::ptree_error&) { std::cerr << "Warning: User directory not set in config" << std::endl; } // config loaded okay. config_loaded = config_okay; return true; } catch (const std::exception& e) { std::cerr << "Warning: Error reading config file: " << e.what() << std::endl; return true; // Not a critical error } } } // namespace dropshell