[Nix-dev] Easier GTK theming
Jookia
166291 at gmail.com
Sun Apr 23 22:48:56 CEST 2017
On Sun, Apr 23, 2017 at 07:09:43AM -0700, William Casarin wrote:
> ...
>
> Thoughts? Has there been progress down these lines before?
Well I got a patch in to GTK3 to read themes from XDG_DATA_PATH (or something
like that) so installed themes should just work. GTK2 has a patch, but it's not
upstream. Here it is:
-------------- next part --------------
commit 0df8a7c7ba26f368f01ada4233dedc4193cdbebf
Author: Jookia <166291 at gmail.com>
Date: Sat Apr 8 20:16:54 2017 +1000
gtk2: Patch theme paths
diff --git a/pkgs/development/libraries/gtk+/2.x.nix b/pkgs/development/libraries/gtk+/2.x.nix
index 306e2db..f6e718d 100644
--- a/pkgs/development/libraries/gtk+/2.x.nix
+++ b/pkgs/development/libraries/gtk+/2.x.nix
@@ -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 ]
diff --git a/pkgs/development/libraries/gtk+/gtk2-theme-paths.patch b/pkgs/development/libraries/gtk+/gtk2-theme-paths.patch
new file mode 100644
index 0000000..397cc97
--- /dev/null
+++ b/pkgs/development/libraries/gtk+/gtk2-theme-paths.patch
@@ -0,0 +1,35 @@
+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);
More information about the nix-dev
mailing list