diff options
Diffstat (limited to 'pkgs/desktops/gnome-3/3.22/misc/gnome-tweak-tool')
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"; + }; +} |