~ruther/guix-local

dbc3860cebfd52137809e543b08245e878fb636a — Jookia 10 years ago 2f52438
gnu: gtk+-2: Look in system data dirs for themes.

* gnu/packages/patches/gtk2-theme-paths.patch: New patch.
* gnu/packages/gtk.scm (gtk+-2)[source]: Use it.
* gnu-system.am (dist_patch_DATA): Add it.

Signed-off-by: 宋文武 <iyzsong@gmail.com>
3 files changed, 44 insertions(+), 1 deletions(-)

M gnu-system.am
M gnu/packages/gtk.scm
A gnu/packages/patches/gtk2-theme-paths.patch
M gnu-system.am => gnu-system.am +1 -0
@@ 513,6 513,7 @@ dist_patch_DATA =						\
  gnu/packages/patches/guile-relocatable.patch			\
  gnu/packages/patches/guile-rsvg-pkgconfig.patch		\
  gnu/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch	\
  gnu/packages/patches/gtk2-theme-paths.patch			\
  gnu/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
  gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
  gnu/packages/patches/hop-bigloo-4.0b.patch			\

M gnu/packages/gtk.scm => gnu/packages/gtk.scm +2 -1
@@ 557,7 557,8 @@ is part of the GNOME accessibility project.")
            (sha256
             (base32
              "0l6aqk86aw5w132ygy6hv6nlxvd1h6xg7c85qbm60p6mnv1ww58d"))
            (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"))))
            (patches (search-patches "gtk2-respect-GUIX_GTK2_PATH.patch"
                                     "gtk2-theme-paths.patch"))))
   (build-system gnu-build-system)
   (outputs '("out" "doc"))
   (propagated-inputs

A gnu/packages/patches/gtk2-theme-paths.patch => gnu/packages/patches/gtk2-theme-paths.patch +41 -0
@@ 0,0 1,41 @@
From: Jookia <166291@gmail.com>
Subject: [PATCHv2] gtk: Patch GTK+ to look for themes in profiles.
To: guix-devel@gnu.org
Date: Sun, 13 Mar 2016 15:17:37 +1100
Url: https://lists.gnu.org/archive/html/guix-devel/2016-03/msg00492.html

diff -Naur gtk+-2.24.28.new/gtk/gtkrc.c gtk+-2.24.28/gtk/gtkrc.c
--- gtk+-2.24.28.new/gtk/gtkrc.c	2016-03-13 10:31:14.413644362 +1100
+++ gtk+-2.24.28/gtk/gtkrc.c	2016-03-13 12:51:34.723398423 +1100
@@ -808,6 +808,8 @@
   gchar *path = NULL;
   const gchar *home_dir;
   gchar *subpath;
+  const gchar * const *xdg_data_dirs;
+  gint i;
 
   if (type)
     subpath = g_strconcat ("gtk-2.0-", type,
@@ -830,6 +832,22 @@
     }
 
   if (!path)
+    {
+      xdg_data_dirs = g_get_system_data_dirs ();
+      for (i = 0; xdg_data_dirs[i]; i++)
+        {
+          path = g_build_filename (xdg_data_dirs[i], "themes", name, subpath, NULL);
+          if (g_file_test (path, G_FILE_TEST_EXISTS))
+            break;
+          else
+            {
+              g_free (path);
+              path = NULL;
+            }
+        }
+    }
+
+  if (!path)
     {
       gchar *theme_dir = gtk_rc_get_theme_dir ();
       path = g_build_filename (theme_dir, name, subpath, NULL);