summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/default_config.cfg4
-rw-r--r--doc/en/configure.txt7
-rw-r--r--src/core.py3
-rw-r--r--src/plugin_manager.py16
4 files changed, 26 insertions, 4 deletions
diff --git a/data/default_config.cfg b/data/default_config.cfg
index abeab2ac..1efec665 100644
--- a/data/default_config.cfg
+++ b/data/default_config.cfg
@@ -218,6 +218,10 @@ log_dir =
# You can specify an other directory to use. It will be created if it doesn't exist
plugins_dir =
+# If plugins_conf_dir is not set, plugin configs will be loaded from
+# $XDG_CONFIG_HOME/poezio/plugins. You can specify another directory here.
+plugins_conf_dir =
+
# Space separated list of plugins to load on startup
plugins_autoload =
diff --git a/doc/en/configure.txt b/doc/en/configure.txt
index fb8917e2..d17bd2f3 100644
--- a/doc/en/configure.txt
+++ b/doc/en/configure.txt
@@ -255,6 +255,13 @@ section of this documentation.
Space separated list of plugins to load on startup.
+*plugins_conf_dir*:: [empty]
+
+ If plugins_conf_dir is not set, plugin configs will be loaded from
+ $XDG_CONFIG_HOME/poezio/plugins.
+ You can specify another directory to use, it will be created if it
+ does not exist.
+
*plugins_dir*:: [empty]
If plugins_dir is not set, plugins will be loaded from
diff --git a/src/core.py b/src/core.py
index 719d0f56..b2f5a398 100644
--- a/src/core.py
+++ b/src/core.py
@@ -2032,6 +2032,9 @@ class Core(object):
elif option == 'plugins_dir':
path = os.path.expanduser(value)
self.plugin_manager.on_plugins_dir_change(path)
+ elif option == 'plugins_conf_dir':
+ path = os.path.expanduser(value)
+ self.plugin_manager.on_plugins_conf_dir_change(path)
self.call_for_resize()
self.information(info, "Info")
diff --git a/src/plugin_manager.py b/src/plugin_manager.py
index 5f848ec2..a8c651e9 100644
--- a/src/plugin_manager.py
+++ b/src/plugin_manager.py
@@ -25,10 +25,13 @@ plugins_dir = plugins_dir or\
'poezio', 'plugins')
plugins_dir = os.path.expanduser(plugins_dir)
-config_home = os.environ.get("XDG_CONFIG_HOME")
-if not config_home:
- config_home = os.path.join(os.environ.get('HOME'), '.config')
-plugins_conf_dir = os.path.join(config_home, 'poezio', 'plugins')
+plugins_conf_dir = config.get('plugins_conf_dir', '')
+if not plugins_conf_dir:
+ config_home = os.environ.get('XDG_CONFIG_HOME')
+ if not config_home:
+ config_home = os.path.join(os.environ.get('HOME'), '.config')
+ plugins_conf_dir = os.path.join(config_home, 'poezio', 'plugins')
+plugins_conf_dir = os.path.expanduser(plugins_conf_dir)
try:
os.makedirs(plugins_dir)
@@ -39,6 +42,7 @@ try:
os.makedirs(plugins_conf_dir)
except OSError:
pass
+
default_plugin_path = path.join(path.dirname(path.dirname(__file__)), 'plugins')
sys.path.append(default_plugin_path)
@@ -283,3 +287,7 @@ class PluginManager(object):
sys.path.remove(plugins_dir)
sys.path.append(new_value)
plugins_dir = new_value
+
+ def on_plugins_conf_dir_change(self, new_value):
+ global plugins_conf_dir
+ plugins_conf_dir = new_value