nixpkgs/pkgs/desktops/xfce/core/thunarx_plugins_directory.patch
Raymond Gauthier e9f2dc8830 thunar: plugin improvements (close #9908)
Improve thunar/thunarx so that thunar's plugin directory
could be overriden using a `THUNARX_MODULE_DIR`
environment variable so that plugins not built along
with the `thunar` package could be installed as well.

This could allow one to wrap `thunar` in a `thunar-with-plugins`
package where plugins are declared instead of being found (a
bit in the same fashion as gstreamer plugins).
2015-09-23 18:57:50 +02:00

49 lines
1.7 KiB
Diff

diff --git a/thunarx/thunarx-provider-factory.c b/thunarx/thunarx-provider-factory.c
index 31b8835..a3e7f4e 100644
--- a/thunarx/thunarx-provider-factory.c
+++ b/thunarx/thunarx-provider-factory.c
@@ -141,12 +141,19 @@ static GList*
thunarx_provider_factory_load_modules (ThunarxProviderFactory *factory)
{
ThunarxProviderModule *module;
+ const gchar *thunar_dir;
const gchar *name;
GList *modules = NULL;
GList *lp;
GDir *dp;
- dp = g_dir_open (THUNARX_DIRECTORY, 0, NULL);
+ thunar_dir = g_getenv("THUNARX_MODULE_DIR");
+ if (NULL == thunar_dir)
+ {
+ thunar_dir = THUNARX_DIRECTORY;
+ }
+
+ dp = g_dir_open (thunar_dir, 0, NULL);
if (G_LIKELY (dp != NULL))
{
/* determine the types for all existing plugins */
diff --git a/thunarx/thunarx-provider-module.c b/thunarx/thunarx-provider-module.c
index 023ad2a..6c21997 100644
--- a/thunarx/thunarx-provider-module.c
+++ b/thunarx/thunarx-provider-module.c
@@ -174,10 +174,17 @@ static gboolean
thunarx_provider_module_load (GTypeModule *type_module)
{
ThunarxProviderModule *module = THUNARX_PROVIDER_MODULE (type_module);
+ const gchar *thunar_dir;
gchar *path;
+
+ thunar_dir = g_getenv("THUNARX_MODULE_DIR");
+ if (NULL == thunar_dir)
+ {
+ thunar_dir = THUNARX_DIRECTORY;
+ }
/* load the module using the runtime link editor */
- path = g_build_filename (THUNARX_DIRECTORY, type_module->name, NULL);
+ path = g_build_filename (thunar_dir, type_module->name, NULL);
module->library = g_module_open (path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
g_free (path);