summary refs log tree commit diff
path: root/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool')
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch120
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch100
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch29
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/default.nix44
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/find_gsettings.patch22
-rw-r--r--pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/src.nix10
6 files changed, 325 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch
new file mode 100644
index 00000000000..7a16d2c24e5
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0001-Search-for-themes-and-icons-in-system-data-dirs.patch
@@ -0,0 +1,120 @@
+From bdbbe312e6520ce70e91319162e85367a69ce044 Mon Sep 17 00:00:00 2001
+From: Jascha Geerds <jascha@jgeerds.name>
+Date: Sat, 1 Aug 2015 21:01:11 +0200
+Subject: [PATCH 1/3] Search for themes and icons in system data dirs
+
+---
+ gtweak/tweaks/tweak_group_interface.py | 17 ++++-------------
+ gtweak/tweaks/tweak_group_keymouse.py  |  7 ++-----
+ gtweak/utils.py                        | 17 +++++++++++++++++
+ 3 files changed, 23 insertions(+), 18 deletions(-)
+
+Index: gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_interface.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/tweaks/tweak_group_interface.py
++++ gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_interface.py
+@@ -26,7 +26,7 @@ from gi.repository import Gtk
+ from gi.repository import GLib
+ 
+ import gtweak
+-from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file
++from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs
+ from gtweak.tweakmodel import Tweak, TWEAK_GROUP_APPEARANCE
+ from gtweak.gshellwrapper import GnomeShellFactory
+ from gtweak.gsettings import GSettingsSetting
+@@ -50,10 +50,7 @@ class GtkThemeSwitcher(GSettingsComboTwe
+         if gtk_ver % 2: # Want even number
+             gtk_ver += 1
+ 
+-        dirs = ( os.path.join(gtweak.DATA_DIR, "themes"),
+-                 os.path.join(GLib.get_user_data_dir(), "themes"),
+-                 os.path.join(os.path.expanduser("~"), ".themes"))
+-        valid = walk_directories(dirs, lambda d:
++        valid = walk_directories(get_resource_dirs("themes"), lambda d:
+                     os.path.exists(os.path.join(d, "gtk-2.0")) and \
+                         (os.path.exists(os.path.join(d, "gtk-3.0")) or \
+                          os.path.exists(os.path.join(d, "gtk-3.{}".format(gtk_ver)))))
+@@ -69,10 +66,7 @@ class IconThemeSwitcher(GSettingsComboTw
+             **options)
+ 
+     def _get_valid_icon_themes(self):
+-        dirs = ( os.path.join(gtweak.DATA_DIR, "icons"),
+-                 os.path.join(GLib.get_user_data_dir(), "icons"),
+-                 os.path.join(os.path.expanduser("~"), ".icons"))
+-        valid = walk_directories(dirs, lambda d:
++        valid = walk_directories(get_resource_dirs("icons"), lambda d:
+                     os.path.isdir(d) and \
+ 			os.path.exists(os.path.join(d, "index.theme")))
+         return valid
+@@ -87,10 +81,7 @@ class CursorThemeSwitcher(GSettingsCombo
+             **options)
+ 
+     def _get_valid_cursor_themes(self):
+-        dirs = ( os.path.join(gtweak.DATA_DIR, "icons"),
+-                 os.path.join(GLib.get_user_data_dir(), "icons"),
+-                 os.path.join(os.path.expanduser("~"), ".icons"))
+-        valid = walk_directories(dirs, lambda d:
++        valid = walk_directories(get_resource_dirs("icons"), lambda d:
+                     os.path.isdir(d) and \
+                         os.path.exists(os.path.join(d, "cursors")))
+         return valid
+Index: gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_keymouse.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/tweaks/tweak_group_keymouse.py
++++ gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_keymouse.py
+@@ -20,7 +20,7 @@ import os.path
+ from gi.repository import GLib
+ 
+ import gtweak
+-from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default
++from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs
+ from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, GetterSetterSwitchTweak, Title, GSettingsComboEnumTweak
+ 
+ class PrimaryPasteTweak(GetterSetterSwitchTweak):
+@@ -48,10 +48,7 @@ class KeyThemeSwitcher(GSettingsComboTwe
+             **options)
+ 
+     def _get_valid_key_themes(self):
+-        dirs = ( os.path.join(gtweak.DATA_DIR, "themes"),
+-                 os.path.join(GLib.get_user_data_dir(), "themes"),
+-                 os.path.join(os.path.expanduser("~"), ".themes"))
+-        valid = walk_directories(dirs, lambda d:
++        valid = walk_directories(get_resource_dirs("themes"), lambda d:
+                     os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")) and \
+                     os.path.isfile(os.path.join(d, "gtk-2.0-key", "gtkrc")))
+         return valid
+Index: gnome-tweak-tool-3.20.1/gtweak/utils.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/utils.py
++++ gnome-tweak-tool-3.20.1/gtweak/utils.py
+@@ -21,6 +21,7 @@ import tempfile
+ import shutil
+ import subprocess
+ import glob
++import itertools
+ 
+ import gtweak
+ from gtweak.gsettings import GSettingsSetting
+@@ -116,6 +117,22 @@ def execute_subprocess(cmd_then_args, bl
+         stdout, stderr = p.communicate()
+         return stdout, stderr, p.returncode
+ 
++def get_resource_dirs(resource):
++    """Returns a list of all known resource dirs for a given resource.
++
++    :param str resource:
++        Name of the resource (e.g. "themes")
++    :return:
++        A list of resource dirs
++    """
++    dirs = [os.path.join(dir, resource)
++            for dir in itertools.chain(GLib.get_system_data_dirs(),
++                                       (gtweak.DATA_DIR,
++                                        GLib.get_user_data_dir()))]
++    dirs += [os.path.join(os.path.expanduser("~"), ".{}".format(resource))]
++
++    return [dir for dir in dirs if os.path.isdir(dir)]
++
+ @singleton
+ class AutostartManager:
+ 
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch
new file mode 100644
index 00000000000..5ddc13949cb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0002-Don-t-show-multiple-entries-for-a-single-theme.patch
@@ -0,0 +1,100 @@
+From 22b948c39b32fb45066c4f5a9f99082094fea3d1 Mon Sep 17 00:00:00 2001
+From: Jascha Geerds <jascha@jgeerds.name>
+Date: Sat, 1 Aug 2015 21:26:57 +0200
+Subject: [PATCH 2/3] Don't show multiple entries for a single theme
+
+---
+ gtweak/tweaks/tweak_group_interface.py |  8 ++++----
+ gtweak/tweaks/tweak_group_keymouse.py  |  4 ++--
+ gtweak/utils.py                        | 16 ++++++++++++++++
+ 3 files changed, 22 insertions(+), 6 deletions(-)
+
+Index: gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_interface.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/tweaks/tweak_group_interface.py
++++ gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_interface.py
+@@ -26,7 +26,7 @@ from gi.repository import Gtk
+ from gi.repository import GLib
+ 
+ import gtweak
+-from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs
++from gtweak.utils import walk_directories, make_combo_list_with_default, extract_zip_file, get_resource_dirs, get_unique_resources
+ from gtweak.tweakmodel import Tweak, TWEAK_GROUP_APPEARANCE
+ from gtweak.gshellwrapper import GnomeShellFactory
+ from gtweak.gsettings import GSettingsSetting
+@@ -54,7 +54,7 @@ class GtkThemeSwitcher(GSettingsComboTwe
+                     os.path.exists(os.path.join(d, "gtk-2.0")) and \
+                         (os.path.exists(os.path.join(d, "gtk-3.0")) or \
+                          os.path.exists(os.path.join(d, "gtk-3.{}".format(gtk_ver)))))
+-        return valid
++        return get_unique_resources(valid)
+ 
+ class IconThemeSwitcher(GSettingsComboTweak):
+     def __init__(self, **options):
+@@ -69,7 +69,7 @@ class IconThemeSwitcher(GSettingsComboTw
+         valid = walk_directories(get_resource_dirs("icons"), lambda d:
+                     os.path.isdir(d) and \
+ 			os.path.exists(os.path.join(d, "index.theme")))
+-        return valid
++        return get_unique_resources(valid)
+ 
+ class CursorThemeSwitcher(GSettingsComboTweak):
+     def __init__(self, **options):
+@@ -84,7 +84,7 @@ class CursorThemeSwitcher(GSettingsCombo
+         valid = walk_directories(get_resource_dirs("icons"), lambda d:
+                     os.path.isdir(d) and \
+                         os.path.exists(os.path.join(d, "cursors")))
+-        return valid
++        return get_unique_resources(valid)
+ 
+ class ShellThemeTweak(Gtk.Box, Tweak):
+ 
+Index: gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_keymouse.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/tweaks/tweak_group_keymouse.py
++++ gnome-tweak-tool-3.20.1/gtweak/tweaks/tweak_group_keymouse.py
+@@ -20,7 +20,7 @@ import os.path
+ from gi.repository import GLib
+ 
+ import gtweak
+-from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs
++from gtweak.utils import XSettingsOverrides, walk_directories, make_combo_list_with_default, get_resource_dirs, get_unique_resources
+ from gtweak.widgets import ListBoxTweakGroup, GSettingsComboTweak, GSettingsSwitchTweak, GetterSetterSwitchTweak, Title, GSettingsComboEnumTweak
+ 
+ class PrimaryPasteTweak(GetterSetterSwitchTweak):
+@@ -51,7 +51,7 @@ class KeyThemeSwitcher(GSettingsComboTwe
+         valid = walk_directories(get_resource_dirs("themes"), lambda d:
+                     os.path.isfile(os.path.join(d, "gtk-3.0", "gtk-keys.css")) and \
+                     os.path.isfile(os.path.join(d, "gtk-2.0-key", "gtkrc")))
+-        return valid
++        return get_unique_resources(valid)
+ 
+ TWEAK_GROUPS = [
+     ListBoxTweakGroup(_("Keyboard and Mouse"),
+Index: gnome-tweak-tool-3.20.1/gtweak/utils.py
+===================================================================
+--- gnome-tweak-tool-3.20.1.orig/gtweak/utils.py
++++ gnome-tweak-tool-3.20.1/gtweak/utils.py
+@@ -133,6 +133,22 @@ def get_resource_dirs(resource):
+ 
+     return [dir for dir in dirs if os.path.isdir(dir)]
+ 
++def get_unique_resources(dirs):
++    """Filter out duplicated resources.
++
++    :param list dirs:
++        List of resource dirs (e.g. /usr/share/themes/Adwaita)
++    :return:
++        List of dirs without duplicated resources
++    """
++    unique_dirs = {}
++    for dir in dirs:
++        basename = os.path.basename(dir)
++        if basename not in unique_dirs:
++            unique_dirs[basename] = dir
++
++    return unique_dirs
++
+ @singleton
+ class AutostartManager:
+ 
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch
new file mode 100644
index 00000000000..b25b2d6dc4a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/0003-Create-config-dir-if-it-doesn-t-exist.patch
@@ -0,0 +1,29 @@
+From cdafa01dc90da486d0114b423e3e467f7b083d1b Mon Sep 17 00:00:00 2001
+From: Jascha Geerds <jascha@jgeerds.name>
+Date: Sun, 2 Aug 2015 12:01:20 +0200
+Subject: [PATCH 3/3] Create config dir if it doesn't exist
+
+Otherwise gnome-tweak-tool can't enable the dark theme and fails
+without a clear error message.
+---
+ gtweak/gtksettings.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/gtweak/gtksettings.py b/gtweak/gtksettings.py
+index bcec9f1..f39991b 100644
+--- a/gtweak/gtksettings.py
++++ b/gtweak/gtksettings.py
+@@ -35,6 +35,10 @@ class GtkSettingsManager:
+     def _get_keyfile(self):
+         keyfile = None
+         try:
++            config_dir = os.path.dirname(self._path)
++            if not os.path.isdir(config_dir):
++                os.makedirs(config_dir)
++
+             keyfile = GLib.KeyFile()
+             keyfile.load_from_file(self._path, 0)
+         except MemoryError:
+-- 
+2.7.0
+
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/default.nix b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/default.nix
new file mode 100644
index 00000000000..e6c4b8c8202
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, intltool, fetchurl, atk
+, pkgconfig, gtk3, glib, libsoup
+, bash, makeWrapper, itstool, libxml2, python2Packages
+, gnome3, librsvg, gdk_pixbuf, file, libnotify, gobjectIntrospection, wrapGAppsHook }:
+
+let
+  python = python2Packages.python.withPackages ( ps: with ps; [ pygobject3 ] );
+in stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  doCheck = true;
+
+  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+
+  makeFlags = [ "DESTDIR=/" ];
+
+  buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2
+                  gnome3.gsettings_desktop_schemas makeWrapper file
+                  gdk_pixbuf gnome3.defaultIconTheme librsvg
+                  libnotify gnome3.gnome_shell
+                  libsoup gnome3.gnome_settings_daemon gnome3.nautilus
+                  gnome3.gnome_desktop wrapGAppsHook ];
+
+  propagatedBuildInputs = [ python gobjectIntrospection ];
+
+  PYTHONPATH = "$out/${python.python.sitePackages}";
+
+  wrapPrefixVariables = [ "PYTHONPATH" ];
+
+  patches = [
+    ./find_gsettings.patch
+    ./0001-Search-for-themes-and-icons-in-system-data-dirs.patch
+    ./0002-Don-t-show-multiple-entries-for-a-single-theme.patch
+    ./0003-Create-config-dir-if-it-doesn-t-exist.patch
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/action/show/Apps/GnomeTweakTool;
+    description = "A tool to customize advanced GNOME 3 options";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/find_gsettings.patch b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/find_gsettings.patch
new file mode 100644
index 00000000000..3e68c04cb3a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/find_gsettings.patch
@@ -0,0 +1,22 @@
+diff --git a/gtweak/gsettings.py b/gtweak/gsettings.py
+index a00fe19..dce74b2 100644
+--- a/gtweak/gsettings.py
++++ b/gtweak/gsettings.py
+@@ -33,10 +33,15 @@ class GSettingsMissingError(Exception):
+ 
+ class _GSettingsSchema:
+     def __init__(self, schema_name, schema_dir=None, schema_filename=None, **options):
+-        if not schema_dir:
+-            schema_dir = gtweak.GSETTINGS_SCHEMA_DIR
+         if not schema_filename:
+             schema_filename = schema_name + ".gschema.xml"
++        if not schema_dir:
++            schema_dir = gtweak.GSETTINGS_SCHEMA_DIR
++            for xdg_dir in GLib.get_system_data_dirs():
++                dir = os.path.join(xdg_dir, "glib-2.0", "schemas")
++                if os.path.exists(os.path.join(dir, schema_filename)):
++                    schema_dir = dir
++                    break
+ 
+         schema_path = os.path.join(schema_dir, schema_filename)
+         if not os.path.exists(schema_path):
diff --git a/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/src.nix b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/src.nix
new file mode 100644
index 00000000000..88f3b3069f1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-tweak-tool-3.22.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-tweak-tool/3.22/gnome-tweak-tool-3.22.0.tar.xz;
+    sha256 = "3d6ae11e13f6169ee543e573135e1e5697cf92ab8d86570c6f952021ae093abb";
+  };
+}