From ff3df0ae05757f26320f155c911d9fbec5208fb7 Mon Sep 17 00:00:00 2001 From: Flisk Date: Tue, 5 Jun 2018 17:52:27 +0200 Subject: [PATCH] Default to XDG_CONFIG_HOME on non-'nt' platforms The default config path on Linux becomes `~/.config/syncplay.ini`, provided the user hasn't changed her $XDG_CONFIG_HOME. Existing installations continue to read their config from `~/.syncplay`, should that file exist. --- syncplay/constants.py | 3 +-- syncplay/ui/ConfigurationGetter.py | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/syncplay/constants.py b/syncplay/constants.py index 122b491..f999ed0 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -8,8 +8,7 @@ MPC_OSD_POSITION = 1 #Right corner, 1 for left MPLAYER_OSD_LEVEL = 1 UI_TIME_FORMAT = "[%X] " CONFIG_NAMES = [".syncplay", "syncplay.ini"] #Syncplay searches first to last -DEFAULT_CONFIG_NAME_WINDOWS = "syncplay.ini" -DEFAULT_CONFIG_NAME_LINUX = ".syncplay" +DEFAULT_CONFIG_NAME = "syncplay.ini" RECENT_CLIENT_THRESHOLD = "1.5.3" #This and higher considered 'recent' clients (no warnings) WARN_OLD_CLIENTS = True #Use MOTD to inform old clients to upgrade LIST_RELATIVE_CONFIGS = True # Print list of relative configs loaded diff --git a/syncplay/ui/ConfigurationGetter.py b/syncplay/ui/ConfigurationGetter.py index 1e06360..068d321 100755 --- a/syncplay/ui/ConfigurationGetter.py +++ b/syncplay/ui/ConfigurationGetter.py @@ -325,19 +325,26 @@ class ConfigurationGetter(object): if configFile: return configFile for name in constants.CONFIG_NAMES: - configFile = self._expandConfigPath(name) + configFile = self._expandConfigPath(name, xdg = False) if os.path.isfile(configFile): return configFile return self._expandConfigPath() - def _expandConfigPath(self, name = None): + def _expandConfigPath(self, name = None, xdg = True): if os.name != 'nt': - prefix = os.getenv('HOME', '.') - default_name = constants.DEFAULT_CONFIG_NAME_LINUX + if xdg: + prefix = self._getXdgConfigHome() + else: + prefix = os.getenv('HOME', '.') else: prefix = os.getenv('APPDATA', '.') - default_name = constants.DEFAULT_CONFIG_NAME_WINDOWS - return os.path.join(prefix, name or default_name) + return os.path.join(prefix, name or constants.DEFAULT_CONFIG_NAME) + + def _getXdgConfigHome(self): + path = os.getenv('XDG_CONFIG_HOME', os.path.expanduser('~/.config')) + if not os.path.isdir(path): + os.mkdir(path, 0o755) + return path def _parseConfigFile(self, iniPath, createConfig=True): parser = SafeConfigParserUnicode()