gtk2: search for themes in XDG_DATA_DIRS
This patch was adapted from GUIX. At the moment we still have to rely on GTK_DATA_PREFIX, which can only point to one profile at the time and is also not set in all desktop environments. This patch makes it possible to use installed themes, no matter if system-wide or by in a user profile.
This commit is contained in:
parent
afec912d81
commit
1810b3f64b
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = [ setupHook perl pkgconfig gettext ];
|
||||
|
||||
patches = [ ./2.0-immodules.cache.patch ];
|
||||
patches = [ ./2.0-immodules.cache.patch ./gtk2-theme-paths.patch ];
|
||||
|
||||
propagatedBuildInputs = with xorg;
|
||||
[ glib cairo pango gdk_pixbuf atk ]
|
||||
|
40
pkgs/development/libraries/gtk+/gtk2-theme-paths.patch
Normal file
40
pkgs/development/libraries/gtk+/gtk2-theme-paths.patch
Normal file
@ -0,0 +1,40 @@
|
||||
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);
|
Loading…
Reference in New Issue
Block a user