import yaml import os from platformdirs import user_config_dir import argparse APP_NAME = "makku_bar" XDG_CONFIG_HOME = user_config_dir(appname=APP_NAME) XDG_CONFIG_FILE = os.path.join(XDG_CONFIG_HOME, "config.yaml") def load_config(config_path=XDG_CONFIG_FILE): """Loads configuration from a YAML file.""" if config_path is None: print("No configuration file path provided or found.") return None try: with open(config_path, "r") as f: config = yaml.safe_load(f) return config except FileNotFoundError: print(f"Error: Configuration file not found at {config_path}") return None except yaml.YAMLError as e: print(f"Error parsing YAML file '{config_path}': {e}") return None except Exception as e: print(f"An unexpected error occurred loading config file '{config_path}': {e}") return None def load_args(): parser = argparse.ArgumentParser(description="makku_bar") parser.add_argument( "-c", "--config", help="Path to a custom configuration file.", type=str, ) args = parser.parse_args() return args.config app_config = load_config() if not load_args() else load_config(load_args()) if app_config is None: raise Exception("Config file missing") VINYL = app_config.get("vinyl", {"enable": False}) BATTERY = app_config.get("battery", {"enable": False}) WINDOW_TITLE = app_config.get("window_title", {"enable": True}) STYLIX = app_config.get("stylix", {"enable": False}) CALENDAR = app_config.get("calendar", {"enable": True, "khal_path": "khal"}) NOTMUCH = app_config.get("notmuch", {"enable": True, "notmuch_path": "notmuch", "emacsclient_command": "emacsclient"}) BAR_HEIGHT = app_config.get("height", 40) LOG_LEVEL = app_config.get("logLevel", "WARNING") DEV = app_config.get("dev", False)