unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#54525: [patchs] Let thunar support plugin search patchs and add some thunar plugins.
@ 2022-03-22 20:32 Feng Shu
  2022-03-22 20:49 ` bug#54525: [PATCH 1/5] gnu: Add thunar-archive-plugin tumashu
  0 siblings, 1 reply; 6+ messages in thread
From: Feng Shu @ 2022-03-22 20:32 UTC (permalink / raw)
  To: 54525


-- 





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#54525: [PATCH 1/5] gnu: Add thunar-archive-plugin.
  2022-03-22 20:32 bug#54525: [patchs] Let thunar support plugin search patchs and add some thunar plugins Feng Shu
@ 2022-03-22 20:49 ` tumashu
  2022-03-22 20:49   ` bug#54525: [PATCH 2/5] gnu: Add thunar-shares-plugin tumashu
                     ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: tumashu @ 2022-03-22 20:49 UTC (permalink / raw)
  To: 54525; +Cc: Feng Shu

From: Feng Shu <tumashu@163.com>

* gnu/packages/xfce.scm (thunar-archive-plugin): New variable.
---
 gnu/packages/xfce.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index b58a517257..9de3db3cc4 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -792,6 +792,27 @@ (define-public thunar-volman
 and import the new pictures from your camera.")
     (license gpl2+)))
 
+(define-public thunar-archive-plugin
+  (package
+    (name "thunar-archive-plugin")
+    (version "0.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://archive.xfce.org/src/thunar-plugins/"
+                           name "/" (version-major+minor version)
+                           "/" name "-" version ".tar.bz2"))
+       (sha256
+        (base32 "059ikda4hig1iqk0g5kqc4p95chj0z1ljhl5qjrlw4l8lf3gm0mz"))))
+    (build-system gnu-build-system)
+    (native-inputs (list pkg-config intltool))
+    (inputs (list exo thunar gtk+))
+    (home-page "https://www.xfce.org/")
+    (synopsis "Archive plugin for Thunar file manager")
+    (description "The Thunar Archive Plugin allows you to create and extract
+archive files using the file context menus in the Thunar file manager.")
+    (license gpl2+)))
+
 (define-public xfwm4
   (package
     (name "xfwm4")
-- 
2.34.0





^ permalink raw reply related	[flat|nested] 6+ messages in thread

* bug#54525: [PATCH 2/5] gnu: Add thunar-shares-plugin.
  2022-03-22 20:49 ` bug#54525: [PATCH 1/5] gnu: Add thunar-archive-plugin tumashu
@ 2022-03-22 20:49   ` tumashu
  2022-03-22 20:49   ` bug#54525: [PATCH 3/5] gnu: Add thunar-media-tags-plugin tumashu
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: tumashu @ 2022-03-22 20:49 UTC (permalink / raw)
  To: 54525; +Cc: Feng Shu

From: Feng Shu <tumashu@163.com>

* gnu/packages/xfce.scm (thunar-shares-plugin): New variable.
---
 gnu/packages/xfce.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 9de3db3cc4..ba4e51a2f3 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -813,6 +813,28 @@ (define-public thunar-archive-plugin
 archive files using the file context menus in the Thunar file manager.")
     (license gpl2+)))
 
+(define-public thunar-shares-plugin
+  (package
+    (name "thunar-shares-plugin")
+    (version "0.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://archive.xfce.org/src/thunar-plugins/"
+                           name "/" (version-major+minor version)
+                           "/" name "-" version ".tar.bz2"))
+       (sha256
+        (base32 "182j8jl91735004hbl0i2xxga4r6fk03srfl6g87czkjm9y8q7fw"))))
+    (build-system gnu-build-system)
+    (native-inputs (list pkg-config intltool))
+    (inputs (list thunar gtk+))
+    (home-page "https://www.xfce.org/")
+    (synopsis "Folder share plugin for Thunar file manager")
+    (description
+     "The Thunar Shares Plugin allows you to quickly share a folder using
+Samba from Thunar (the Xfce file manager) without requiring root access.")
+    (license gpl2+)))
+
 (define-public xfwm4
   (package
     (name "xfwm4")
-- 
2.34.0





^ permalink raw reply related	[flat|nested] 6+ messages in thread

* bug#54525: [PATCH 3/5] gnu: Add thunar-media-tags-plugin.
  2022-03-22 20:49 ` bug#54525: [PATCH 1/5] gnu: Add thunar-archive-plugin tumashu
  2022-03-22 20:49   ` bug#54525: [PATCH 2/5] gnu: Add thunar-shares-plugin tumashu
@ 2022-03-22 20:49   ` tumashu
  2022-03-22 20:49   ` bug#54525: [PATCH 4/5] gnu: Add thunar-vcs-plugin tumashu
  2022-03-22 20:49   ` bug#54525: [PATCH 5/5] gnu: thunar: Add search path for "THUNARX_DIRS" tumashu
  3 siblings, 0 replies; 6+ messages in thread
From: tumashu @ 2022-03-22 20:49 UTC (permalink / raw)
  To: 54525; +Cc: Feng Shu

From: Feng Shu <tumashu@163.com>

* gnu/packages/xfce.scm (thunar-media-tags-plugin): New variable.
---
 gnu/packages/xfce.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index ba4e51a2f3..083e890cc7 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -52,6 +52,7 @@ (define-module (gnu packages xfce)
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mate)
+  #:use-module (gnu packages mp3)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pdf)
   #:use-module (gnu packages photo)
@@ -835,6 +836,28 @@ (define-public thunar-shares-plugin
 Samba from Thunar (the Xfce file manager) without requiring root access.")
     (license gpl2+)))
 
+(define-public thunar-media-tags-plugin
+  (package
+    (name "thunar-media-tags-plugin")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://archive.xfce.org/src/thunar-plugins/"
+                           name "/" (version-major+minor version)
+                           "/" name "-" version ".tar.bz2"))
+       (sha256
+        (base32 "06sr7b4p9f585gian8vpx7j0pkzg0vvwcrjmrhvh7i5sb90w8rg2"))))
+    (build-system gnu-build-system)
+    (native-inputs (list pkg-config intltool))
+    (inputs (list exo gtk+ thunar taglib))
+    (home-page "https://www.xfce.org/")
+    (synopsis "Media tags plugin for Thunar file manager")
+    (description
+     "Media tags plugin allows tags editing from Thunar file manager and
+tags-based file renaming from inside Thunar Bulk Renamer.")
+    (license gpl2+)))
+
 (define-public xfwm4
   (package
     (name "xfwm4")
-- 
2.34.0





^ permalink raw reply related	[flat|nested] 6+ messages in thread

* bug#54525: [PATCH 4/5] gnu: Add thunar-vcs-plugin.
  2022-03-22 20:49 ` bug#54525: [PATCH 1/5] gnu: Add thunar-archive-plugin tumashu
  2022-03-22 20:49   ` bug#54525: [PATCH 2/5] gnu: Add thunar-shares-plugin tumashu
  2022-03-22 20:49   ` bug#54525: [PATCH 3/5] gnu: Add thunar-media-tags-plugin tumashu
@ 2022-03-22 20:49   ` tumashu
  2022-03-22 20:49   ` bug#54525: [PATCH 5/5] gnu: thunar: Add search path for "THUNARX_DIRS" tumashu
  3 siblings, 0 replies; 6+ messages in thread
From: tumashu @ 2022-03-22 20:49 UTC (permalink / raw)
  To: 54525; +Cc: Feng Shu

From: Feng Shu <tumashu@163.com>

* gnu/packages/xfce.scm (thunar-vcs-plugin): New variable.
---
 gnu/packages/xfce.scm | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index 083e890cc7..d3a414ec15 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -35,6 +35,7 @@
 (define-module (gnu packages xfce)
   #:use-module (gnu artwork)
   #:use-module (gnu packages)
+  #:use-module (gnu packages apr)
   #:use-module (gnu packages base)
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages cdrom)
@@ -63,6 +64,8 @@ (define-module (gnu packages xfce)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages search)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages web)
   #:use-module (gnu packages wm)
   #:use-module (gnu packages xml)
@@ -858,6 +861,40 @@ (define-public thunar-media-tags-plugin
 tags-based file renaming from inside Thunar Bulk Renamer.")
     (license gpl2+)))
 
+(define-public thunar-vcs-plugin
+  (package
+    (name "thunar-vcs-plugin")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://archive.xfce.org/src/thunar-plugins/"
+                           name "/" (version-major+minor version)
+                           "/" name "-" version ".tar.bz2"))
+       (sha256
+        (base32 "1f2d1dwfyi6xv3qkd8l8xh0vhz8wh0601cyigjzn426lqga1d29n"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list (string-append "CPPFLAGS=-I" #$apr-util "/include/apr-1"))))
+    (native-inputs (list pkg-config intltool utf8proc))
+    (inputs
+     (list exo
+           gtk+
+           thunar
+           libxfce4util
+           apr
+           apr-util
+           subversion
+           git))
+    (home-page "https://www.xfce.org/")
+    (synopsis "VCS plugin for Thunar file manager")
+    (description
+     "Thunar VCS Plugin (formerly known as Thunar SVN Plugin) gives SVN and
+GIT integration to Thunar, it adds Subversion and GIT actions to the context
+menu.")
+    (license gpl2+)))
+
 (define-public xfwm4
   (package
     (name "xfwm4")
-- 
2.34.0





^ permalink raw reply related	[flat|nested] 6+ messages in thread

* bug#54525: [PATCH 5/5] gnu: thunar: Add search path for "THUNARX_DIRS".
  2022-03-22 20:49 ` bug#54525: [PATCH 1/5] gnu: Add thunar-archive-plugin tumashu
                     ` (2 preceding siblings ...)
  2022-03-22 20:49   ` bug#54525: [PATCH 4/5] gnu: Add thunar-vcs-plugin tumashu
@ 2022-03-22 20:49   ` tumashu
  3 siblings, 0 replies; 6+ messages in thread
From: tumashu @ 2022-03-22 20:49 UTC (permalink / raw)
  To: 54525; +Cc: Feng Shu

From: Feng Shu <tumashu@163.com>

* gnu/packages/xfce.scm (thunar)[native-search-paths]: new field.
[source]: Add thunar-search-paths.patch.
---
 .../patches/thunar-search-paths.patch         | 211 ++++++++++++++++++
 gnu/packages/xfce.scm                         |  12 +-
 2 files changed, 222 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/thunar-search-paths.patch

diff --git a/gnu/packages/patches/thunar-search-paths.patch b/gnu/packages/patches/thunar-search-paths.patch
new file mode 100644
index 0000000000..fcf55ba14f
--- /dev/null
+++ b/gnu/packages/patches/thunar-search-paths.patch
@@ -0,0 +1,211 @@
+From 848f1dfb2d2f404efa5371817285236d33b32a5c Mon Sep 17 00:00:00 2001
+From: tumashu <tumashu@163.com>
+Date: Tue, 22 Mar 2022 20:16:19 +0000
+Subject: [PATCH] Look for thunar plugins at $THUNARX_DIRS (Issue #748)
+
+THUNARX_DIRS is a list of directories where thunar plugins are looked
+for. It is needed for distributions like NixOS/GuixOS that do not
+install all plugins in the same directory. In NixOS/GuixOS each
+package is installed in a self contained directory.
+
+MR !197
+---
+ thunarx/thunarx-provider-factory.c | 86 +++++++++++++++++-------------
+ thunarx/thunarx-provider-module.c  | 68 ++++++++++++++---------
+ 2 files changed, 91 insertions(+), 63 deletions(-)
+
+diff --git a/thunarx/thunarx-provider-factory.c b/thunarx/thunarx-provider-factory.c
+index 94b11545..386c3417 100644
+--- a/thunarx/thunarx-provider-factory.c
++++ b/thunarx/thunarx-provider-factory.c
+@@ -154,54 +154,66 @@ thunarx_provider_factory_load_modules (ThunarxProviderFactory *factory)
+   GList                 *modules = NULL;
+   GList                 *lp;
+   GDir                  *dp;
++  gchar                 *dirs_string;
++  gchar                **dirs;
+ 
+-  dp = g_dir_open (THUNARX_DIRECTORY, 0, NULL);
+-  if (G_LIKELY (dp != NULL))
++  dirs_string = (gchar *) g_getenv ("THUNARX_DIRS");
++  if (!dirs_string)
++    dirs_string = THUNARX_DIRECTORY;
++  dirs = g_strsplit (dirs_string, G_SEARCHPATH_SEPARATOR_S, 0);
++
++  for (int i = 0; dirs[i] != NULL; i++)
+     {
+-      /* determine the types for all existing plugins */
+-      for (;;)
+-        {
+-          /* read the next entry from the directory */
+-          name = g_dir_read_name (dp);
+-          if (G_UNLIKELY (name == NULL))
+-            break;
+ 
+-          /* check if this is a valid plugin file */
+-          if (g_str_has_suffix (name, "." G_MODULE_SUFFIX))
+-            {
+-              /* check if we already have that module */
+-              for (lp = thunarx_provider_modules; lp != NULL; lp = lp->next)
+-                if (g_str_equal (G_TYPE_MODULE (lp->data)->name, name))
+-                  break;
++      dp = g_dir_open (dirs[i], 0, NULL);
+ 
+-              /* use or allocate a new module for the file */
+-              if (G_UNLIKELY (lp != NULL))
+-                {
+-                  /* just use the existing module */
+-                  module = THUNARX_PROVIDER_MODULE (lp->data);
+-                }
+-              else
+-                {
+-                  /* allocate the new module and add it to our list */
+-                  module = thunarx_provider_module_new (name);
+-                  thunarx_provider_modules = g_list_prepend (thunarx_provider_modules, module);
+-                }
++      if (G_LIKELY (dp != NULL))
++        {
++          /* determine the types for all existing plugins */
++          for (;;)
++            {
++              /* read the next entry from the directory */
++              name = g_dir_read_name (dp);
++              if (G_UNLIKELY (name == NULL))
++                break;
+ 
+-              /* try to load the module */
+-              if (g_type_module_use (G_TYPE_MODULE (module)))
++              /* check if this is a valid plugin file */
++              if (g_str_has_suffix (name, "." G_MODULE_SUFFIX))
+                 {
+-                  /* add the types provided by the module */
+-                  thunarx_provider_factory_add (factory, module);
+-
+-                  /* add the module to our list */
+-                  modules = g_list_prepend (modules, module);
++                  /* check if we already have that module */
++                  for (lp = thunarx_provider_modules; lp != NULL; lp = lp->next)
++                    if (g_str_equal (G_TYPE_MODULE (lp->data)->name, name))
++                      break;
++
++                  /* use or allocate a new module for the file */
++                  if (G_UNLIKELY (lp != NULL))
++                    {
++                      continue;
++                    }
++                  else
++                    {
++                      /* allocate the new module and add it to our list */
++                      module = thunarx_provider_module_new (name);
++                      thunarx_provider_modules = g_list_prepend (thunarx_provider_modules, module);
++                    }
++
++                  /* try to load the module */
++                  if (g_type_module_use (G_TYPE_MODULE (module)))
++                    {
++                      /* add the types provided by the module */
++                      thunarx_provider_factory_add (factory, module);
++
++                      /* add the module to our list */
++                      modules = g_list_prepend (modules, module);
++                    }
+                 }
+             }
+-        }
+ 
+-      g_dir_close (dp);
++          g_dir_close (dp);
++        }
+     }
+ 
++  g_strfreev (dirs);
+   return modules;
+ }
+ 
+diff --git a/thunarx/thunarx-provider-module.c b/thunarx/thunarx-provider-module.c
+index 023ad2ae..5ddf38b2 100644
+--- a/thunarx/thunarx-provider-module.c
++++ b/thunarx/thunarx-provider-module.c
+@@ -175,37 +175,53 @@ thunarx_provider_module_load (GTypeModule *type_module)
+ {
+   ThunarxProviderModule *module = THUNARX_PROVIDER_MODULE (type_module);
+   gchar                 *path;
++  gchar                 *dirs_string;
++  gchar                **dirs;
++  gboolean               found;
+ 
+-  /* load the module using the runtime link editor */
+-  path = g_build_filename (THUNARX_DIRECTORY, type_module->name, NULL);
+-  module->library = g_module_open (path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+-  g_free (path);
++  dirs_string = (gchar *) g_getenv ("THUNARX_DIRS");
++  if (!dirs_string)
++    dirs_string = THUNARX_DIRECTORY;
++  dirs = g_strsplit (dirs_string, G_SEARCHPATH_SEPARATOR_S, 0);
+ 
+-  /* check if the load operation was successfull */
+-  if (G_UNLIKELY (module->library == NULL))
+-    {
+-      g_printerr ("Thunar :Failed to load plugin `%s': %s\n", type_module->name, g_module_error ());
+-      return FALSE;
+-    }
++  found = FALSE;
+ 
+-  /* verify that all required public symbols are present in the plugin's symbol table */
+-  if (!g_module_symbol (module->library, "thunar_extension_shutdown", (gpointer) &module->shutdown)
+-      || !g_module_symbol (module->library, "thunar_extension_initialize", (gpointer) &module->initialize)
+-      || !g_module_symbol (module->library, "thunar_extension_list_types", (gpointer) &module->list_types))
++  for (int i = 0; !found && dirs[i] != NULL; i++)
+     {
+-      g_printerr ("Thunar :Plugin `%s' lacks required symbols.\n", type_module->name);
+-      g_module_close (module->library);
+-      return FALSE;
++      /* load the module using the runtime link editor */
++      path = g_build_filename (dirs[i], type_module->name, NULL);
++
++      module->library = g_module_open (path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
++      g_free (path);
++
++      /* check if the load operation was successfull */
++      if (G_UNLIKELY (module->library == NULL))
++        {
++          g_printerr ("Thunar :Failed to load plugin `%s' from `%s': %s\n", type_module->name, path, g_module_error ());
++          continue;
++        }
++
++      /* verify that all required public symbols are present in the plugin's symbol table */
++      if (!g_module_symbol (module->library, "thunar_extension_shutdown", (gpointer) &module->shutdown)
++          || !g_module_symbol (module->library, "thunar_extension_initialize", (gpointer) &module->initialize)
++          || !g_module_symbol (module->library, "thunar_extension_list_types", (gpointer) &module->list_types))
++        {
++          g_printerr ("Thunar :Plugin `%s' in `%s' lacks required symbols.\n", type_module->name, path);
++          g_module_close (module->library);
++          continue;
++        }
++
++      /* initialize the plugin */
++      (*module->initialize) (module);
++
++      /* ensure that the module will never be unloaded if it requests to be kept in memory */
++      if (G_UNLIKELY (module->resident))
++        g_module_make_resident (module->library);
++
++      found = TRUE;
+     }
+-
+-  /* initialize the plugin */
+-  (*module->initialize) (module);
+-
+-  /* ensure that the module will never be unloaded if it requests to be kept in memory */
+-  if (G_UNLIKELY (module->resident))
+-    g_module_make_resident (module->library);
+-
+-  return TRUE;
++  g_strfreev (dirs);
++  return found;
+ }
+ 
+ 
+-- 
+2.34.0
+
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index d3a414ec15..bdeb1e9583 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2021 André A. Gomes <andremegafone@gmail.com>
+;;; Copyright © 2022 Feng Shu <tumashu@163.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -747,7 +748,12 @@ (define-public thunar
                                   "thunar-" version ".tar.bz2"))
               (sha256
                (base32
-                "14lwi4ax0wj77980kkfhdf18b97339b17y8qc8gl2365mgswh1gi"))))
+                "14lwi4ax0wj77980kkfhdf18b97339b17y8qc8gl2365mgswh1gi"))
+              (patches
+               (search-patches
+                ;; NOTE: This patch is backported from thunar.git, it should
+                ;; be removed when update to thunar-4.18.
+                "thunar-search-paths.patch"))))
     (build-system gnu-build-system)
     (native-inputs
      (list pkg-config intltool))
@@ -762,6 +768,10 @@ (define-public thunar
            pcre
            xfce4-panel
            startup-notification))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "THUNARX_DIRS")
+            (files (list "lib/thunarx-3")))))
     (home-page "https://www.xfce.org/")
     (synopsis "Xfce file manager")
     (description
-- 
2.34.0





^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-03-22 21:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-22 20:32 bug#54525: [patchs] Let thunar support plugin search patchs and add some thunar plugins Feng Shu
2022-03-22 20:49 ` bug#54525: [PATCH 1/5] gnu: Add thunar-archive-plugin tumashu
2022-03-22 20:49   ` bug#54525: [PATCH 2/5] gnu: Add thunar-shares-plugin tumashu
2022-03-22 20:49   ` bug#54525: [PATCH 3/5] gnu: Add thunar-media-tags-plugin tumashu
2022-03-22 20:49   ` bug#54525: [PATCH 4/5] gnu: Add thunar-vcs-plugin tumashu
2022-03-22 20:49   ` bug#54525: [PATCH 5/5] gnu: thunar: Add search path for "THUNARX_DIRS" tumashu

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).