unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH 2/2] gnu: Add gnome-tweak-tool.
@ 2016-04-03 11:07 Jan Nieuwenhuizen
  2016-04-03 16:41 ` Jan Nieuwenhuizen
  2016-04-11 23:35 ` Leo Famulari
  0 siblings, 2 replies; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2016-04-03 11:07 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 274 bytes --]

Hi,

Finally gnome-tweak-tool works!  That should make the Gnome desktop a
workable alternative [workspace grid] until we get a nicely hackable
guile-wm up and running.

It needs libnotify to be compiled with gobject-introspection,
attached as [PATCH 1/2].

Greetings,
Jan


[-- Attachment #2: 0001-gnu-libnotify-Add-dependency-on-gobject-introspectio.patch --]
[-- Type: text/x-diff, Size: 1283 bytes --]

From 47bab3dc9216437e948e5c3918063059e7207d05 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 3 Apr 2016 12:56:11 +0200
Subject: [PATCH 1/2] gnu: libnotify: Add dependency on gobject-introspection.

* gnu/packages/gnome.scm (libnotify)[native-inputs]: Add
  gobject-introspection.
---
 gnu/packages/gnome.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 11ed486..32ff5a8 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -681,7 +682,8 @@ database is translated at Transifex.")
        ("libpng" ,libpng)))
     (native-inputs
       `(("pkg-config" ,pkg-config)
-        ("glib" ,glib "bin")))
+        ("glib" ,glib "bin")
+        ("gobject-introspection" ,gobject-introspection)))
     (home-page "https://developer-next.gnome.org/libnotify/")
     (synopsis
      "GNOME desktop notification library")
-- 
2.6.3


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-gnome-tweak-tool.patch --]
[-- Type: text/x-diff, Size: 5331 bytes --]

From c2426b83876dc27308b6678456012efb0c02a2a0 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 3 Apr 2016 12:52:37 +0200
Subject: [PATCH 2/2] gnu: Add gnome-tweak-tool.

* gnu/packages/patches/gnome-tweak-tool-search-paths.patch: New file.
* gnu-system.am: Add it.
* gnu/packages/gnome.scm (gnome-tweak-tool): New variable.
---
 gnu-system.am                                      |  1 +
 gnu/packages/gnome.scm                             | 42 ++++++++++++++++++++++
 .../patches/gnome-tweak-tool-search-paths.patch    | 42 ++++++++++++++++++++++
 3 files changed, 85 insertions(+)
 create mode 100644 gnu/packages/patches/gnome-tweak-tool-search-paths.patch

diff --git a/gnu-system.am b/gnu-system.am
index d883cdc..be286ac 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -500,6 +500,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/glibc-versioned-locpath.patch		\
   gnu/packages/patches/gmp-arm-asm-nothumb.patch		\
   gnu/packages/patches/gmp-faulty-test.patch			\
+  gnu/packages/patches/gnome-tweak-tool-search-paths.patch	\
   gnu/packages/patches/gnucash-price-quotes-perl.patch		\
   gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch \
   gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 32ff5a8..12e03f0 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4959,3 +4959,45 @@ specified duration and save it as a GIF encoded animated image file.")
      "Libzapojit is a GLib-based library for accessing online service APIs of
 Microsoft SkyDrive and Hotmail, using their REST protocols.")
     (license license:lgpl2.1+)))
+
+(define-public gnome-tweak-tool
+  (package
+    (name "gnome-tweak-tool")
+    (version "3.18.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/gnome-tweak-tool/"
+                                  (version-major+minor version) "/"
+                                  "gnome-tweak-tool-" version ".tar.xz"))
+              (patches (list (search-patch "gnome-tweak-tool-search-paths.patch")))
+              (sha256
+               (base32
+                "0c4lw9fhflvpa5l5jsr70aqxcmvhdgh43ab35ly42j3n4c1i2b2w"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (replace 'install
+           (lambda _
+             (zero? (system* "make"
+                             "sysconfdir=/tmp"
+                             "localstatedir=/tmp"
+                             "install")))))))
+    (propagated-inputs
+     `(("gobject-introspection" ,gobject-introspection)
+       ("gnome-shell" ,gnome-shell)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gtk+" ,gtk+)
+       ("libnotify" ,libnotify)
+       ("mutter" ,mutter)
+       ("python2" ,python-2)
+       ("python2-pygobject" ,python2-pygobject)))
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Gnome Tweak Tool")
+    (home-page "https://wiki.gnome.org/action/show/Apps/GnomeTweakTool")
+    (description
+     "GNOME Tweak Tool allows the adjustment of several advanced GNOME
+options that can't be configured in gnome-control-center.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/patches/gnome-tweak-tool-search-paths.patch b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch
new file mode 100644
index 0000000..06d5298
--- /dev/null
+++ b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch
@@ -0,0 +1,42 @@
+--- gnome-tweak-tool-3.18.1.orig/gtweak/gsettings.py	2015-04-08 15:21:32.000000000 +0200
++++ gnome-tweak-tool-3.18.1/gtweak/gsettings.py	2016-04-03 11:26:38.658482704 +0200
+@@ -16,7 +16,8 @@
+ # along with gnome-tweak-tool.  If not, see <http://www.gnu.org/licenses/>.
+ 
+ import logging
+-import os.path
++import os
++import sys
+ import xml.dom.minidom
+ import gettext
+ 
+@@ -31,6 +32,13 @@
+ class GSettingsMissingError(Exception):
+     pass
+ 
++def file_from_path(path, file_name):
++    for dir in path:
++        f = os.path.join(dir, file_name)
++        if os.path.exists(f):
++            return f
++    return None
++
+ class _GSettingsSchema:
+     def __init__(self, schema_name, schema_dir=None, schema_filename=None, **options):
+         if not schema_dir:
+@@ -38,9 +46,14 @@
+         if not schema_filename:
+             schema_filename = schema_name + ".gschema.xml"
+ 
++        schema_prefix = os.path.join('glib-2.0', 'schemas')
+         schema_path = os.path.join(schema_dir, schema_filename)
+         if not os.path.exists(schema_path):
+-            logging.critical("Could not find schema %s" % schema_path)
++            schema_path = file_from_path(os.environ.get ('GSETTINGS_SCHEMA_PATH', '').split(os.path.pathsep), schema_filename)
++        if not (schema_path and os.path.exists(schema_path)):
++            schema_path = file_from_path(os.environ.get ('XDG_DATA_DIRS', '').split(os.path.pathsep), os.path.join(schema_prefix, schema_filename))
++        if not (schema_path and os.path.exists(schema_path)):
++            logging.critical("Could not find schema %s" % schema_filename)
+             assert(False)
+ 
+         self._schema_name = schema_name
-- 
2.6.3


[-- Attachment #4: Type: text/plain, Size: 154 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-03 11:07 [PATCH 2/2] gnu: Add gnome-tweak-tool Jan Nieuwenhuizen
@ 2016-04-03 16:41 ` Jan Nieuwenhuizen
  2016-04-11 23:35 ` Leo Famulari
  1 sibling, 0 replies; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2016-04-03 16:41 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 799 bytes --]

Jan Nieuwenhuizen writes:

> Finally gnome-tweak-tool works!  That should make the Gnome desktop a
> workable alternative [workspace grid] until we get a nicely hackable
> guile-wm up and running.

Workspace grid does work, as does changing clock settings see
screenshot.  Choosing alternative keyboard layouts (dvorak) does
still not seem available.  Possibly I'm just missing some package.

Downloading of extensions from withing gnome-tweak-tool does not work
yet, possibly gnome-tweak-tool is missing some dependency.  You'll have
to download extensions yourself.

Also, I found that schemas need to be compiled and that does not work
automatically, I had to run

    glib-compile-schemas .local/share/gnome-shell/extensions/workspace-grid@mathematical.coffee.gmail.com/schemas

Greetings,
Jan


[-- Attachment #2: Screenshot from 2016-04-03 18-27-16.png --]
[-- Type: image/png, Size: 207443 bytes --]

[-- Attachment #3: Type: text/plain, Size: 154 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-03 11:07 [PATCH 2/2] gnu: Add gnome-tweak-tool Jan Nieuwenhuizen
  2016-04-03 16:41 ` Jan Nieuwenhuizen
@ 2016-04-11 23:35 ` Leo Famulari
  2016-04-13 18:02   ` Jan Nieuwenhuizen
  1 sibling, 1 reply; 17+ messages in thread
From: Leo Famulari @ 2016-04-11 23:35 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel

On Sun, Apr 03, 2016 at 01:07:34PM +0200, Jan Nieuwenhuizen wrote:
> Hi,
> 
> Finally gnome-tweak-tool works!  That should make the Gnome desktop a
> workable alternative [workspace grid] until we get a nicely hackable
> guile-wm up and running.
> 
> It needs libnotify to be compiled with gobject-introspection,
> attached as [PATCH 1/2].

I still don't understand how all the parts of GNOME fit together, so I
can't give a full review of these patches.

But, with these patches, I can successfully prevent my laptop from
sleeping when the lid is closed. Thank you!

> * gnu/packages/gnome.scm (libnotify)[native-inputs]: Add
>   gobject-introspection.

Looks okay, but as I said before, I'm no expert on this stuff.

> * gnu/packages/patches/gnome-tweak-tool-search-paths.patch: New file.

Can you add some comments explaining this patch (and a link to the source, if
applicable)?

> * gnu-system.am: Add it.

Please specify which section of gnu-system.am the file is being added
to. In this case, it's dist_patch_DATA. See the commit log for the exact
format.

> * gnu/packages/gnome.scm (gnome-tweak-tool): New variable.
> +         (replace 'install
> +           (lambda _
> +             (zero? (system* "make"
> +                             "sysconfdir=/tmp"
> +                             "localstatedir=/tmp"
> +                             "install")))))))

How about setting these variables in #:make-flags instead of replacing
the install phase? Would that work?

> +    (propagated-inputs
> +     `(("gobject-introspection" ,gobject-introspection)
> +       ("gnome-shell" ,gnome-shell)
> +       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
> +       ("gtk+" ,gtk+)
> +       ("libnotify" ,libnotify)
> +       ("mutter" ,mutter)
> +       ("python2" ,python-2)
> +       ("python2-pygobject" ,python2-pygobject)))

Oof, do we really have to propagate python-2 (and the others)?

> +    (synopsis "Gnome Tweak Tool")

Can you paraphrase this? I don't think the synopsis should be the same
as the package name. How about something like this: "GNOME advanced
settings control panel"?

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
       [not found] <mailman.877.1460442807.7476.guix-devel@gnu.org>
@ 2016-04-12 13:16 ` rennes
  0 siblings, 0 replies; 17+ messages in thread
From: rennes @ 2016-04-12 13:16 UTC (permalink / raw)
  To: janneke; +Cc: guix-devel

Hi

> On Sun, Apr 03, 2016 at 01:07:34PM +0200, Jan Nieuwenhuizen wrote:
>> Hi,
>> 
>> Finally gnome-tweak-tool works!  That should make the Gnome desktop a
>> workable alternative [workspace grid] until we get a nicely hackable
>> guile-wm up and running.
>> 
>> It needs libnotify to be compiled with gobject-introspection,
>> attached as [PATCH 1/2].
> 
> I still don't understand how all the parts of GNOME fit together, so I
> can't give a full review of these patches.
> 
> But, with these patches, I can successfully prevent my laptop from
> sleeping when the lid is closed. Thank you!
> 
>> * gnu/packages/gnome.scm (libnotify)[native-inputs]: Add
>>   gobject-introspection.
> 
> Looks okay, but as I said before, I'm no expert on this stuff.
> 
>> * gnu/packages/patches/gnome-tweak-tool-search-paths.patch: New file.
> 
> Can you add some comments explaining this patch (and a link to the 
> source, if
> applicable)?
> 
>> * gnu-system.am: Add it.
> 
> Please specify which section of gnu-system.am the file is being added
> to. In this case, it's dist_patch_DATA. See the commit log for the 
> exact
> format.
> 
>> * gnu/packages/gnome.scm (gnome-tweak-tool): New variable.
>> +         (replace 'install
>> +           (lambda _
>> +             (zero? (system* "make"
>> +                             "sysconfdir=/tmp"
>> +                             "localstatedir=/tmp"
>> +                             "install")))))))
> 
> How about setting these variables in #:make-flags instead of replacing
> the install phase? Would that work?
> 
>> +    (propagated-inputs
>> +     `(("gobject-introspection" ,gobject-introspection)
>> +       ("gnome-shell" ,gnome-shell)
>> +       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
>> +       ("gtk+" ,gtk+)
>> +       ("libnotify" ,libnotify)
>> +       ("mutter" ,mutter)
>> +       ("python2" ,python-2)
>> +       ("python2-pygobject" ,python2-pygobject)))
> 
> Oof, do we really have to propagate python-2 (and the others)?
> 
>> +    (synopsis "Gnome Tweak Tool")
> 
> Can you paraphrase this? I don't think the synopsis should be the same
> as the package name. How about something like this: "GNOME advanced
> settings control panel"?
> 

you can take the synopsis and description of the file 
gnome-tweak-tool.doap 
(https://git.gnome.org/browse/gnome-tweak-tool/tree/gnome-tweak-tool.doap).

Thanks

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-11 23:35 ` Leo Famulari
@ 2016-04-13 18:02   ` Jan Nieuwenhuizen
  2016-04-16  1:35     ` Leo Famulari
  0 siblings, 1 reply; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2016-04-13 18:02 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel, rennes

[-- Attachment #1: Type: text/plain, Size: 2243 bytes --]

Leo Famulari writes:

> I still don't understand how all the parts of GNOME fit together, so I
> can't give a full review of these patches.
>
> But, with these patches, I can successfully prevent my laptop from
> sleeping when the lid is closed. Thank you!

:-)

>> * gnu/packages/gnome.scm (libnotify)[native-inputs]: Add
>>   gobject-introspection.
>
> Looks okay, but as I said before, I'm no expert on this stuff.

Ok.  Yes, gnome-tweak-tool needs this.

>> * gnu/packages/patches/gnome-tweak-tool-search-paths.patch: New file.
>
> Can you add some comments explaining this patch (and a link to the source, if
> applicable)?

Ok, done.

>> * gnu-system.am: Add it.
>
> Please specify which section of gnu-system.am the file is being added
> to. In this case, it's dist_patch_DATA. See the commit log for the exact
> format.

Ok.

>> * gnu/packages/gnome.scm (gnome-tweak-tool): New variable.
>> +         (replace 'install
>> +           (lambda _
>> +             (zero? (system* "make"
>> +                             "sysconfdir=/tmp"
>> +                             "localstatedir=/tmp"
>> +                             "install")))))))
>
> How about setting these variables in #:make-flags instead of replacing
> the install phase? Would that work?

Yes, that works.  Done.

>> +    (propagated-inputs
>> +     `(("gobject-introspection" ,gobject-introspection)
>> +       ("gnome-shell" ,gnome-shell)
>> +       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
>> +       ("gtk+" ,gtk+)
>> +       ("libnotify" ,libnotify)
>> +       ("mutter" ,mutter)
>> +       ("python2" ,python-2)
>> +       ("python2-pygobject" ,python2-pygobject)))
>
> Oof, do we really have to propagate python-2 (and the others)?

Yes... I experimented with moving any of these to plain inputs,
gnome-tweak-tool crashes on missing gir features.

>> +    (synopsis "Gnome Tweak Tool")
>
> Can you paraphrase this? I don't think the synopsis should be the same
> as the package name. How about something like this: "GNOME advanced
> settings control panel"?

I modified synopsis and description using

    https://git.gnome.org/browse/gnome-tweak-tool/tree/gnome-tweak-tool.doap

like rennes suggested.

Also, I updated to 3.20.0.

Greetings,
Jan


[-- Attachment #2: 0001-gnu-libnotify-Add-dependency-on-gobject-introspectio.patch --]
[-- Type: text/x-diff, Size: 1283 bytes --]

From 47bab3dc9216437e948e5c3918063059e7207d05 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 3 Apr 2016 12:56:11 +0200
Subject: [PATCH 1/2] gnu: libnotify: Add dependency on gobject-introspection.

* gnu/packages/gnome.scm (libnotify)[native-inputs]: Add
  gobject-introspection.
---
 gnu/packages/gnome.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 11ed486..32ff5a8 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -15,6 +15,7 @@
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -681,7 +682,8 @@ database is translated at Transifex.")
        ("libpng" ,libpng)))
     (native-inputs
       `(("pkg-config" ,pkg-config)
-        ("glib" ,glib "bin")))
+        ("glib" ,glib "bin")
+        ("gobject-introspection" ,gobject-introspection)))
     (home-page "https://developer-next.gnome.org/libnotify/")
     (synopsis
      "GNOME desktop notification library")
-- 
2.1.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-gnome-tweak-tool.patch --]
[-- Type: text/x-diff, Size: 5730 bytes --]

From c23fc3fdf354da07f41fb0ba9abeaf464729ec2f Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 3 Apr 2016 12:52:37 +0200
Subject: [PATCH 2/2] gnu: Add gnome-tweak-tool.

* gnu/packages/patches/gnome-tweak-tool-search-paths.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/gnome.scm (gnome-tweak-tool): New variable.
---
 gnu-system.am                                      |  1 +
 gnu/packages/gnome.scm                             | 39 ++++++++++++++++
 .../patches/gnome-tweak-tool-search-paths.patch    | 52 ++++++++++++++++++++++
 3 files changed, 92 insertions(+)
 create mode 100644 gnu/packages/patches/gnome-tweak-tool-search-paths.patch

diff --git a/gnu-system.am b/gnu-system.am
index d883cdc..be286ac 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -500,6 +500,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/glibc-versioned-locpath.patch		\
   gnu/packages/patches/gmp-arm-asm-nothumb.patch		\
   gnu/packages/patches/gmp-faulty-test.patch			\
+  gnu/packages/patches/gnome-tweak-tool-search-paths.patch	\
   gnu/packages/patches/gnucash-price-quotes-perl.patch		\
   gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch \
   gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 32ff5a8..acca111 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4959,3 +4959,42 @@ specified duration and save it as a GIF encoded animated image file.")
      "Libzapojit is a GLib-based library for accessing online service APIs of
 Microsoft SkyDrive and Hotmail, using their REST protocols.")
     (license license:lgpl2.1+)))
+
+(define-public gnome-tweak-tool
+  (package
+    (name "gnome-tweak-tool")
+    (version "3.20.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/gnome-tweak-tool/"
+                                  (version-major+minor version) "/"
+                                  "gnome-tweak-tool-" version ".tar.xz"))
+              (patches (list
+                        (search-patch "gnome-tweak-tool-search-paths.patch")))
+              (sha256
+               (base32
+                "1nr5m7ziij7jrfkpm4rsk089vgcpwpm90x9lfl7m918zayawrfk0"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--localstatedir=/tmp"
+                           "--sysconfdir=/tmp")))
+    (propagated-inputs
+     `(("gobject-introspection" ,gobject-introspection)
+       ("gnome-shell" ,gnome-shell)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gtk+" ,gtk+)
+       ("libnotify" ,libnotify)
+       ("mutter" ,mutter)
+       ("python2" ,python-2)
+       ("python2-pygobject" ,python2-pygobject)))
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Customize advanced GNOME 3 options")
+    (home-page "https://wiki.gnome.org/action/show/Apps/GnomeTweakTool")
+    (description
+     "GNOME Tweak Tool allows adjusting advanced configuration settings in
+GNOME 3.  This includes things like the fonts used in user interface elements,
+alternative user interface themes, changes in window management behavior,
+GNOME Shell appearance and extension, etc.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/patches/gnome-tweak-tool-search-paths.patch b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch
new file mode 100644
index 0000000..027c61b
--- /dev/null
+++ b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch
@@ -0,0 +1,52 @@
+Gnome-tweak-tool does not look at GSETTINGS_SCHEMA_PATH or XDG_DATA_DIRS, it
+assumes that schemas are installed in one global directory
+(GSETTINGS_SCHEMA_DIR/gsettingsschemadir).
+
+Guix/GuixSD uses a different directory for every gir package and has
+packages pick-up files using XDG_DATA_DIRS.
+
+Upstream ticket: https://bugzilla.gnome.org/show_bug.cgi?id=764537
+janneke@gnu.org
+
+--- gnome-tweak-tool-3.18.1.orig/gtweak/gsettings.py	2015-04-08 15:21:32.000000000 +0200
++++ gnome-tweak-tool-3.18.1/gtweak/gsettings.py	2016-04-03 11:26:38.658482704 +0200
+@@ -16,7 +16,8 @@
+ # along with gnome-tweak-tool.  If not, see <http://www.gnu.org/licenses/>.
+ 
+ import logging
+-import os.path
++import os
++import sys
+ import xml.dom.minidom
+ import gettext
+ 
+@@ -31,6 +32,13 @@
+ class GSettingsMissingError(Exception):
+     pass
+ 
++def file_from_path(path, file_name):
++    for dir in path:
++        f = os.path.join(dir, file_name)
++        if os.path.exists(f):
++            return f
++    return None
++
+ class _GSettingsSchema:
+     def __init__(self, schema_name, schema_dir=None, schema_filename=None, **options):
+         if not schema_dir:
+@@ -38,9 +46,14 @@
+         if not schema_filename:
+             schema_filename = schema_name + ".gschema.xml"
+ 
++        schema_prefix = os.path.join('glib-2.0', 'schemas')
+         schema_path = os.path.join(schema_dir, schema_filename)
+         if not os.path.exists(schema_path):
+-            logging.critical("Could not find schema %s" % schema_path)
++            schema_path = file_from_path(os.environ.get ('GSETTINGS_SCHEMA_PATH', '').split(os.path.pathsep), schema_filename)
++        if not (schema_path and os.path.exists(schema_path)):
++            schema_path = file_from_path(os.environ.get ('XDG_DATA_DIRS', '').split(os.path.pathsep), os.path.join(schema_prefix, schema_filename))
++        if not (schema_path and os.path.exists(schema_path)):
++            logging.critical("Could not find schema %s" % schema_filename)
+             assert(False)
+ 
+         self._schema_name = schema_name
-- 
2.1.4


[-- Attachment #4: Type: text/plain, Size: 154 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-13 18:02   ` Jan Nieuwenhuizen
@ 2016-04-16  1:35     ` Leo Famulari
  2016-04-17 17:22       ` Jan Nieuwenhuizen
  0 siblings, 1 reply; 17+ messages in thread
From: Leo Famulari @ 2016-04-16  1:35 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, rennes, 宋文武

On Wed, Apr 13, 2016 at 08:02:14PM +0200, Jan Nieuwenhuizen wrote:

Thanks for making the ther requested changes.

> Leo Famulari writes:
> >> +    (propagated-inputs
> >> +     `(("gobject-introspection" ,gobject-introspection)
> >> +       ("gnome-shell" ,gnome-shell)
> >> +       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
> >> +       ("gtk+" ,gtk+)
> >> +       ("libnotify" ,libnotify)
> >> +       ("mutter" ,mutter)
> >> +       ("python2" ,python-2)
> >> +       ("python2-pygobject" ,python2-pygobject)))
> >
> > Oof, do we really have to propagate python-2 (and the others)?
> 
> Yes... I experimented with moving any of these to plain inputs,
> gnome-tweak-tool crashes on missing gir features.

I tried building with glib-or-gtk-build-system instead of
gnu-build-system. It still didn't work if python-2 was a mere input, but
I wonder if glib-or-gtk-build-system should be used, regardless?

I wonder if 宋文武 has any thoughts about this issue?

Perhaps it's not a problem to propagate python-2 at the system level
(which is where I think GNOME tools would normally be)?

Maybe we should use a wrapper instead of propagating python-2?

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-16  1:35     ` Leo Famulari
@ 2016-04-17 17:22       ` Jan Nieuwenhuizen
  2016-04-17 18:33         ` rennes
  2016-04-17 18:44         ` Leo Famulari
  0 siblings, 2 replies; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2016-04-17 17:22 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel, rennes, 宋文武

Leo Famulari writes:

> I tried building with glib-or-gtk-build-system instead of
> gnu-build-system. It still didn't work if python-2 was a mere input, but
> I wonder if glib-or-gtk-build-system should be used, regardless?

The glib-or-gtk-build-system lists in two additions to the
gnu-build-system.  I don't see gnome-tweak-tool needing any of those,
do you?

Gnome-tweak-tool is written in python2: it won't run without it.  How
could loosening the python2 dependency be helpful?

Greetings,
Jan

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-17 17:22       ` Jan Nieuwenhuizen
@ 2016-04-17 18:33         ` rennes
  2016-04-17 18:44         ` Leo Famulari
  1 sibling, 0 replies; 17+ messages in thread
From: rennes @ 2016-04-17 18:33 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, 宋文武

On 2016-04-17 12:22, Jan Nieuwenhuizen wrote:
> Leo Famulari writes:
> 
>> I tried building with glib-or-gtk-build-system instead of
>> gnu-build-system. It still didn't work if python-2 was a mere input, 
>> but
>> I wonder if glib-or-gtk-build-system should be used, regardless?
> 
> The glib-or-gtk-build-system lists in two additions to the
> gnu-build-system.  I don't see gnome-tweak-tool needing any of those,
> do you?
> 
> Gnome-tweak-tool is written in python2: it won't run without it.  How
> could loosening the python2 dependency be helpful?
> 
> Greetings,
> Jan

Hi,

I have compiled the patch, i use Python 2.7.10.

but when starting the application displays the following message:

CRITICAL: Could not find schema 
/gnu/store/8rlj4pb4kshh0xvg1n03sw736i0i4if6-gnome-tweak-tool-3.18.1/share/glib-2.0/schemas/org.gnome.shell.gschema.xml
WARNING : Shell not installed or running
CRITICAL: Could not find schema 
/gnu/store/8rlj4pb4kshh0xvg1n03sw736i0i4if6-gnome-tweak-tool-3.18.1/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.xml
.
.

I keep trying.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-17 17:22       ` Jan Nieuwenhuizen
  2016-04-17 18:33         ` rennes
@ 2016-04-17 18:44         ` Leo Famulari
  2016-04-24 11:19           ` Jan Nieuwenhuizen
  1 sibling, 1 reply; 17+ messages in thread
From: Leo Famulari @ 2016-04-17 18:44 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, rennes, 宋文武

On Sun, Apr 17, 2016 at 07:22:27PM +0200, Jan Nieuwenhuizen wrote:
> Leo Famulari writes:
> 
> > I tried building with glib-or-gtk-build-system instead of
> > gnu-build-system. It still didn't work if python-2 was a mere input, but
> > I wonder if glib-or-gtk-build-system should be used, regardless?
> 
> The glib-or-gtk-build-system lists in two additions to the
> gnu-build-system.  I don't see gnome-tweak-tool needing any of those,
> do you?
> 
> Gnome-tweak-tool is written in python2: it won't run without it.  How
> could loosening the python2 dependency be helpful?

Ah, I didn't realize it was a Python program with an Autotools build
system.

I think we need to wrap gnome-tweak-tool's executable, which the
python-build-system normally does automatically. AIUI, that's why all of
the python-build-system packages don't require Python itself to be
propagated.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-17 18:44         ` Leo Famulari
@ 2016-04-24 11:19           ` Jan Nieuwenhuizen
  2016-04-24 18:50             ` Leo Famulari
  0 siblings, 1 reply; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2016-04-24 11:19 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel, rennes, 宋文武

Leo Famulari writes:

>> Gnome-tweak-tool is written in python2: it won't run without it.  How
>> could loosening the python2 dependency be helpful?
>
> Ah, I didn't realize it was a Python program with an Autotools build
> system.
>
> I think we need to wrap gnome-tweak-tool's executable, which the
> python-build-system normally does automatically. AIUI, that's why all of
> the python-build-system packages don't require Python itself to be
> propagated.

Sorry, I still don't understand.  Can you explain why you want to remove
python2 from the propagated inputs?

And also...say we wrap gnome-tweak-tool.  If we remove python2 from the
propagated inputs, AIUI it python2 will not be installed and it even
could just be that python2 is not downloaded at all under /gnu.

How is wrapping gnome-tweak-tool going to help if we fail to make sure
that python2 is present?  Sorry for my ignorance.

Greetings,
Jan

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-24 11:19           ` Jan Nieuwenhuizen
@ 2016-04-24 18:50             ` Leo Famulari
  2016-04-27 19:05               ` Jan Nieuwenhuizen
  0 siblings, 1 reply; 17+ messages in thread
From: Leo Famulari @ 2016-04-24 18:50 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, rennes, 宋文武

On Sun, Apr 24, 2016 at 01:19:35PM +0200, Jan Nieuwenhuizen wrote:
> Leo Famulari writes:
> > I think we need to wrap gnome-tweak-tool's executable, which the
> > python-build-system normally does automatically. AIUI, that's why all of
> > the python-build-system packages don't require Python itself to be
> > propagated.
> 
> Sorry, I still don't understand.  Can you explain why you want to remove
> python2 from the propagated inputs?

Propagated-inputs are silently installed into the user's profile
alongside the package that propagates them. In this case, installing
gnome-tweak-tool would also install python2 into the user's profile.

Propagation becomes attractive when the software provided by a package
does not have a good mechanism for finding its dependencies. For
example, some software may *only* be able to find a dependency by
looking on PATH. Gnome-tweak-tool, as far as we know, has this
limitation for python2.

The problem with propagating inputs is that only one version of a given
package may be installed into a user's profile. This is in contrast to
"regular" inputs, which are not installed into a user's profile. Indeed,
every package that you install into your profile could refer to a
different version of, say, libfoo, by linking directly to the various
libfoos' directories in the store.

So, letting gnome-tweak-tool propagate python2 would prevent a Python
programmer from choosing which version of python2 they want in their
profile; they'd be forced to choose between gnome-tweak-tool or their
desired python2.

Does that make sense?

> And also...say we wrap gnome-tweak-tool.  If we remove python2 from the
> propagated inputs, AIUI it python2 will not be installed and it even
> could just be that python2 is not downloaded at all under /gnu.
> 
> How is wrapping gnome-tweak-tool going to help if we fail to make sure
> that python2 is present?  Sorry for my ignorance.
 
An alternative to propagated-inputs is to use a wrapper. Actually, all
of our packages using the python-build-system are wrapped automatically
[0]. The wrapper makes the dependent packages available in the run-time
environment without polluting the user's profile, while introducing a
reference to the dependencies into the store directory, which makes sure
that the garbage collector works correctly.

Does that make sense?

Hopefully, I've got that all right — I'll be happy if somebody clarifies
or corrects me!

[0] If gnome-tweak-tool did not break convention by using the Autotools
to build Python software, this discussion would not be happening ;)

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-24 18:50             ` Leo Famulari
@ 2016-04-27 19:05               ` Jan Nieuwenhuizen
  2016-05-01 21:36                 ` rennes
  2016-05-02 22:04                 ` Leo Famulari
  0 siblings, 2 replies; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2016-04-27 19:05 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel, rennes, 宋文武

[-- Attachment #1: Type: text/plain, Size: 2291 bytes --]

Leo Famulari writes:

Hi!

Find attached a new version of gnome-tweak-tool.

>> Sorry, I still don't understand.  Can you explain why you want to remove
>> python2 from the propagated inputs?
>
> Propagated-inputs are silently installed into the user's profile
> alongside the package that propagates them. In this case, installing
> gnome-tweak-tool would also install python2 into the user's profile.
>
> Propagation becomes attractive when the software provided by a package
> does not have a good mechanism for finding its dependencies. For
> example, some software may *only* be able to find a dependency by
> looking on PATH. Gnome-tweak-tool, as far as we know, has this
> limitation for python2.
>
> The problem with propagating inputs is that only one version of a given
> package may be installed into a user's profile. This is in contrast to
> "regular" inputs, which are not installed into a user's profile. Indeed,
> every package that you install into your profile could refer to a
> different version of, say, libfoo, by linking directly to the various
> libfoos' directories in the store.
>
> So, letting gnome-tweak-tool propagate python2 would prevent a Python
> programmer from choosing which version of python2 they want in their
> profile; they'd be forced to choose between gnome-tweak-tool or their
> desired python2.
>
> Does that make sense?

That makes sense.  Thanks for your explanation!  Is this documented
somewhere?  I think it should be.

> An alternative to propagated-inputs is to use a wrapper. Actually, all
> of our packages using the python-build-system are wrapped automatically
> [0]. The wrapper makes the dependent packages available in the run-time
> environment without polluting the user's profile, while introducing a
> reference to the dependencies into the store directory, which makes sure
> that the garbage collector works correctly.
>
> Does that make sense?

Yes.  Moved python to inputs, added python wrapper.

> Hopefully, I've got that all right — I'll be happy if somebody clarifies
> or corrects me!
>
> [0] If gnome-tweak-tool did not break convention by using the Autotools
> to build Python software, this discussion would not be happening ;)

Hah! ;-)

Greetings,
Jan


[-- Attachment #2: 0001-gnu-libnotify-Add-dependency-on-gobject-introspectio.patch --]
[-- Type: text/x-diff, Size: 1278 bytes --]

From b803f66a828aa490079bffb3ee1be4fbbb847eb4 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 3 Apr 2016 12:56:11 +0200
Subject: [PATCH 1/2] gnu: libnotify: Add dependency on gobject-introspection.

* gnu/packages/gnome.scm (libnotify)[native-inputs]: Add
gobject-introspection.
---
 gnu/packages/gnome.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 0fd1d5b..5ecae92 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org>
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -683,7 +684,8 @@ database is translated at Transifex.")
        ("libpng" ,libpng)))
     (native-inputs
       `(("pkg-config" ,pkg-config)
-        ("glib" ,glib "bin")))
+        ("glib" ,glib "bin")
+        ("gobject-introspection" ,gobject-introspection)))
     (home-page "https://developer-next.gnome.org/libnotify/")
     (synopsis
      "GNOME desktop notification library")
-- 
2.7.3


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-gnome-tweak-tool.patch --]
[-- Type: text/x-diff, Size: 6014 bytes --]

From e1f882247503d2f9547da6ef0eedee561341cfb8 Mon Sep 17 00:00:00 2001
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 3 Apr 2016 12:52:37 +0200
Subject: [PATCH 2/2] gnu: Add gnome-tweak-tool.

* gnu/packages/patches/gnome-tweak-tool-search-paths.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/gnome.scm (gnome-tweak-tool): New variable.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/gnome.scm                             | 44 ++++++++++++++++++
 .../patches/gnome-tweak-tool-search-paths.patch    | 52 ++++++++++++++++++++++
 3 files changed, 97 insertions(+)
 create mode 100644 gnu/packages/patches/gnome-tweak-tool-search-paths.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 3cdf5e4..0ee30ca 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -504,6 +504,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/glibc-versioned-locpath.patch		\
   gnu/packages/patches/gmp-arm-asm-nothumb.patch		\
   gnu/packages/patches/gmp-faulty-test.patch			\
+  gnu/packages/patches/gnome-tweak-tool-search-paths.patch	\
   gnu/packages/patches/gnucash-price-quotes-perl.patch		\
   gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch \
   gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 5ecae92..b47eb12 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4997,3 +4997,47 @@ specified duration and save it as a GIF encoded animated image file.")
      "Libzapojit is a GLib-based library for accessing online service APIs of
 Microsoft SkyDrive and Hotmail, using their REST protocols.")
     (license license:lgpl2.1+)))
+
+(define-public gnome-tweak-tool
+  (package
+    (name "gnome-tweak-tool")
+    (version "3.20.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/gnome-tweak-tool/"
+                                  (version-major+minor version) "/"
+                                  "gnome-tweak-tool-" version ".tar.xz"))
+              (patches (list
+                        (search-patch "gnome-tweak-tool-search-paths.patch")))
+              (sha256
+               (base32
+                "1nr5m7ziij7jrfkpm4rsk089vgcpwpm90x9lfl7m918zayawrfk0"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--localstatedir=/tmp"
+                           "--sysconfdir=/tmp")
+       #:imported-modules ((guix build python-build-system)
+                           ,@%gnu-build-system-modules)
+       #:phases (modify-phases %standard-phases
+                  (add-after 'install 'wrap
+                    (@@ (guix build python-build-system) wrap)))))
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs `(("python" ,python-2)))
+    (propagated-inputs
+     `(("gobject-introspection" ,gobject-introspection)
+       ("gnome-shell" ,gnome-shell)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gtk+" ,gtk+)
+       ("libnotify" ,libnotify)
+       ("mutter" ,mutter)
+       ("python2-pygobject" ,python2-pygobject)))
+    (synopsis "Customize advanced GNOME 3 options")
+    (home-page "https://wiki.gnome.org/action/show/Apps/GnomeTweakTool")
+    (description
+     "GNOME Tweak Tool allows adjusting advanced configuration settings in
+GNOME 3.  This includes things like the fonts used in user interface elements,
+alternative user interface themes, changes in window management behavior,
+GNOME Shell appearance and extension, etc.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/patches/gnome-tweak-tool-search-paths.patch b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch
new file mode 100644
index 0000000..027c61b
--- /dev/null
+++ b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch
@@ -0,0 +1,52 @@
+Gnome-tweak-tool does not look at GSETTINGS_SCHEMA_PATH or XDG_DATA_DIRS, it
+assumes that schemas are installed in one global directory
+(GSETTINGS_SCHEMA_DIR/gsettingsschemadir).
+
+Guix/GuixSD uses a different directory for every gir package and has
+packages pick-up files using XDG_DATA_DIRS.
+
+Upstream ticket: https://bugzilla.gnome.org/show_bug.cgi?id=764537
+janneke@gnu.org
+
+--- gnome-tweak-tool-3.18.1.orig/gtweak/gsettings.py	2015-04-08 15:21:32.000000000 +0200
++++ gnome-tweak-tool-3.18.1/gtweak/gsettings.py	2016-04-03 11:26:38.658482704 +0200
+@@ -16,7 +16,8 @@
+ # along with gnome-tweak-tool.  If not, see <http://www.gnu.org/licenses/>.
+ 
+ import logging
+-import os.path
++import os
++import sys
+ import xml.dom.minidom
+ import gettext
+ 
+@@ -31,6 +32,13 @@
+ class GSettingsMissingError(Exception):
+     pass
+ 
++def file_from_path(path, file_name):
++    for dir in path:
++        f = os.path.join(dir, file_name)
++        if os.path.exists(f):
++            return f
++    return None
++
+ class _GSettingsSchema:
+     def __init__(self, schema_name, schema_dir=None, schema_filename=None, **options):
+         if not schema_dir:
+@@ -38,9 +46,14 @@
+         if not schema_filename:
+             schema_filename = schema_name + ".gschema.xml"
+ 
++        schema_prefix = os.path.join('glib-2.0', 'schemas')
+         schema_path = os.path.join(schema_dir, schema_filename)
+         if not os.path.exists(schema_path):
+-            logging.critical("Could not find schema %s" % schema_path)
++            schema_path = file_from_path(os.environ.get ('GSETTINGS_SCHEMA_PATH', '').split(os.path.pathsep), schema_filename)
++        if not (schema_path and os.path.exists(schema_path)):
++            schema_path = file_from_path(os.environ.get ('XDG_DATA_DIRS', '').split(os.path.pathsep), os.path.join(schema_prefix, schema_filename))
++        if not (schema_path and os.path.exists(schema_path)):
++            logging.critical("Could not find schema %s" % schema_filename)
+             assert(False)
+ 
+         self._schema_name = schema_name
-- 
2.7.3


[-- Attachment #4: Type: text/plain, Size: 154 bytes --]


-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-27 19:05               ` Jan Nieuwenhuizen
@ 2016-05-01 21:36                 ` rennes
  2016-05-02 22:04                 ` Leo Famulari
  1 sibling, 0 replies; 17+ messages in thread
From: rennes @ 2016-05-01 21:36 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, 宋文武

On 2016-04-27 14:05, Jan Nieuwenhuizen wrote:
> Leo Famulari writes:
> 
> Hi!
> 
> Find attached a new version of gnome-tweak-tool.
> 
>>> Sorry, I still don't understand.  Can you explain why you want to 
>>> remove
>>> python2 from the propagated inputs?
>> 
>> Propagated-inputs are silently installed into the user's profile
>> alongside the package that propagates them. In this case, installing
>> gnome-tweak-tool would also install python2 into the user's profile.
>> 
>> Propagation becomes attractive when the software provided by a package
>> does not have a good mechanism for finding its dependencies. For
>> example, some software may *only* be able to find a dependency by
>> looking on PATH. Gnome-tweak-tool, as far as we know, has this
>> limitation for python2.
>> 
>> The problem with propagating inputs is that only one version of a 
>> given
>> package may be installed into a user's profile. This is in contrast to
>> "regular" inputs, which are not installed into a user's profile. 
>> Indeed,
>> every package that you install into your profile could refer to a
>> different version of, say, libfoo, by linking directly to the various
>> libfoos' directories in the store.
>> 
>> So, letting gnome-tweak-tool propagate python2 would prevent a Python
>> programmer from choosing which version of python2 they want in their
>> profile; they'd be forced to choose between gnome-tweak-tool or their
>> desired python2.
>> 
>> Does that make sense?
> 
> That makes sense.  Thanks for your explanation!  Is this documented
> somewhere?  I think it should be.
> 
>> An alternative to propagated-inputs is to use a wrapper. Actually, all
>> of our packages using the python-build-system are wrapped 
>> automatically
>> [0]. The wrapper makes the dependent packages available in the 
>> run-time
>> environment without polluting the user's profile, while introducing a
>> reference to the dependencies into the store directory, which makes 
>> sure
>> that the garbage collector works correctly.
>> 
>> Does that make sense?
> 
> Yes.  Moved python to inputs, added python wrapper.
> 
>> Hopefully, I've got that all right — I'll be happy if somebody 
>> clarifies
>> or corrects me!
>> 
>> [0] If gnome-tweak-tool did not break convention by using the 
>> Autotools
>> to build Python software, this discussion would not be happening ;)
> 
> Hah! ;-)
> 
> Greetings,
> Jan

Hi,

Now this patch works well for me. Thank you

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-04-27 19:05               ` Jan Nieuwenhuizen
  2016-05-01 21:36                 ` rennes
@ 2016-05-02 22:04                 ` Leo Famulari
  2016-05-02 22:38                   ` Jan Nieuwenhuizen
  1 sibling, 1 reply; 17+ messages in thread
From: Leo Famulari @ 2016-05-02 22:04 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, rennes, 宋文武

On Wed, Apr 27, 2016 at 09:05:26PM +0200, Jan Nieuwenhuizen wrote:
> Yes.  Moved python to inputs, added python wrapper.

Cool!

Based on that, I moved python2-gobject into (inputs). I also tried
removing mutter entirely, since I believe mutter is provided by
gnome-shell.

It seems to work for me. Can you see if it works for you?

(native-inputs
 `(("intltool" ,intltool)
   ("pkg-config" ,pkg-config)))
(inputs `(("python" ,python-2)
          ("python2-pygobject" ,python2-pygobject)))
(propagated-inputs
 `(("libnotify" ,libnotify)
   ("gobject-introspection" ,gobject-introspection)
   ("gnome-shell" ,gnome-shell)
   ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
   ("gtk+" ,gtk+)))

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-05-02 22:04                 ` Leo Famulari
@ 2016-05-02 22:38                   ` Jan Nieuwenhuizen
  2016-05-03  2:19                     ` Leo Famulari
  0 siblings, 1 reply; 17+ messages in thread
From: Jan Nieuwenhuizen @ 2016-05-02 22:38 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel, rennes, 宋文武

Leo Famulari writes:

> On Wed, Apr 27, 2016 at 09:05:26PM +0200, Jan Nieuwenhuizen wrote:
>> Yes.  Moved python to inputs, added python wrapper.
>
> Cool!

:-)  Thanks

> Based on that, I moved python2-gobject into (inputs). I also tried
> removing mutter entirely, since I believe mutter is provided by
> gnome-shell.

Gee, I was sure I tried removing every individual package there...

> It seems to work for me. Can you see if it works for you?

Works for me.  This is great.  Thanks!

Greetings,
Jan

-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar®  http://AvatarAcademy.nl  

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-05-02 22:38                   ` Jan Nieuwenhuizen
@ 2016-05-03  2:19                     ` Leo Famulari
  2016-05-15 17:31                       ` Leo Famulari
  0 siblings, 1 reply; 17+ messages in thread
From: Leo Famulari @ 2016-05-03  2:19 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, rennes, 宋文武

[-- Attachment #1: Type: text/plain, Size: 718 bytes --]

On Tue, May 03, 2016 at 12:38:44AM +0200, Jan Nieuwenhuizen wrote:
> Leo Famulari writes:
> > On Wed, Apr 27, 2016 at 09:05:26PM +0200, Jan Nieuwenhuizen wrote:
> >> Yes.  Moved python to inputs, added python wrapper.
> >
> > Cool!
> 
> :-)  Thanks
> 
> > Based on that, I moved python2-gobject into (inputs). I also tried
> > removing mutter entirely, since I believe mutter is provided by
> > gnome-shell.
> 
> Gee, I was sure I tried removing every individual package there...
> 
> > It seems to work for me. Can you see if it works for you?
> 
> Works for me.  This is great.  Thanks!

Great! I've attached what I have in my tree.

宋文武, what do you think? Is it ready to get applied to a branch on
Savannah?

[-- Attachment #2: 0001-gnu-libnotify-Add-dependency-on-gobject-introspectio.patch --]
[-- Type: text/x-diff, Size: 1375 bytes --]

From 5d6e309cb76990bdf28993c147da499a7711bcc2 Mon Sep 17 00:00:00 2001
Message-Id: <5d6e309cb76990bdf28993c147da499a7711bcc2.1462241736.git.leo@famulari.name>
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 3 Apr 2016 12:56:11 +0200
Subject: [PATCH 1/2] gnu: libnotify: Add dependency on gobject-introspection.

* gnu/packages/gnome.scm (libnotify)[native-inputs]: Add
gobject-introspection.

Signed-off-by: Leo Famulari <leo@famulari.name>
---
 gnu/packages/gnome.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 0fd1d5b..5ecae92 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -16,6 +16,7 @@
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
 ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
 ;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org>
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -683,7 +684,8 @@ database is translated at Transifex.")
        ("libpng" ,libpng)))
     (native-inputs
       `(("pkg-config" ,pkg-config)
-        ("glib" ,glib "bin")))
+        ("glib" ,glib "bin")
+        ("gobject-introspection" ,gobject-introspection)))
     (home-page "https://developer-next.gnome.org/libnotify/")
     (synopsis
      "GNOME desktop notification library")
-- 
2.7.4


[-- Attachment #3: 0002-gnu-Add-gnome-tweak-tool.patch --]
[-- Type: text/x-diff, Size: 6270 bytes --]

From c80a6fc7ec81ab6e5436685fa3da587e512bfb43 Mon Sep 17 00:00:00 2001
Message-Id: <c80a6fc7ec81ab6e5436685fa3da587e512bfb43.1462241736.git.leo@famulari.name>
In-Reply-To: <5d6e309cb76990bdf28993c147da499a7711bcc2.1462241736.git.leo@famulari.name>
References: <5d6e309cb76990bdf28993c147da499a7711bcc2.1462241736.git.leo@famulari.name>
From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 3 Apr 2016 12:52:37 +0200
Subject: [PATCH 2/2] gnu: Add gnome-tweak-tool.

* gnu/packages/patches/gnome-tweak-tool-search-paths.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/gnome.scm (gnome-tweak-tool): New variable.

Signed-off-by: Leo Famulari <leo@famulari.name>
---
 gnu/local.mk                                       |  1 +
 gnu/packages/gnome.scm                             | 43 ++++++++++++++++++
 .../patches/gnome-tweak-tool-search-paths.patch    | 52 ++++++++++++++++++++++
 3 files changed, 96 insertions(+)
 create mode 100644 gnu/packages/patches/gnome-tweak-tool-search-paths.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 4a36bb5..24b7028 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -506,6 +506,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/glibc-versioned-locpath.patch		\
   gnu/packages/patches/gmp-arm-asm-nothumb.patch		\
   gnu/packages/patches/gmp-faulty-test.patch			\
+  gnu/packages/patches/gnome-tweak-tool-search-paths.patch	\
   gnu/packages/patches/gnucash-price-quotes-perl.patch		\
   gnu/packages/patches/gnupg-simple-query-ignore-status-messages.patch \
   gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 5ecae92..6c6c73e 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -4997,3 +4997,46 @@ specified duration and save it as a GIF encoded animated image file.")
      "Libzapojit is a GLib-based library for accessing online service APIs of
 Microsoft SkyDrive and Hotmail, using their REST protocols.")
     (license license:lgpl2.1+)))
+
+(define-public gnome-tweak-tool
+  (package
+    (name "gnome-tweak-tool")
+    (version "3.20.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/gnome-tweak-tool/"
+                                  (version-major+minor version) "/"
+                                  "gnome-tweak-tool-" version ".tar.xz"))
+              (patches (list
+                        (search-patch "gnome-tweak-tool-search-paths.patch")))
+              (sha256
+               (base32
+                "1nr5m7ziij7jrfkpm4rsk089vgcpwpm90x9lfl7m918zayawrfk0"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags '("--localstatedir=/tmp"
+                           "--sysconfdir=/tmp")
+       #:imported-modules ((guix build python-build-system)
+                           ,@%gnu-build-system-modules)
+       #:phases (modify-phases %standard-phases
+                  (add-after 'install 'wrap
+                    (@@ (guix build python-build-system) wrap)))))
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("python" ,python-2)
+       ("python2-pygobject" ,python2-pygobject)))
+    (propagated-inputs
+     `(("libnotify" ,libnotify)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
+       ("gtk+" ,gtk+)))
+    (synopsis "Customize advanced GNOME 3 options")
+    (home-page "https://wiki.gnome.org/action/show/Apps/GnomeTweakTool")
+    (description
+     "GNOME Tweak Tool allows adjusting advanced configuration settings in
+GNOME 3.  This includes things like the fonts used in user interface elements,
+alternative user interface themes, changes in window management behavior,
+GNOME Shell appearance and extension, etc.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/patches/gnome-tweak-tool-search-paths.patch b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch
new file mode 100644
index 0000000..027c61b
--- /dev/null
+++ b/gnu/packages/patches/gnome-tweak-tool-search-paths.patch
@@ -0,0 +1,52 @@
+Gnome-tweak-tool does not look at GSETTINGS_SCHEMA_PATH or XDG_DATA_DIRS, it
+assumes that schemas are installed in one global directory
+(GSETTINGS_SCHEMA_DIR/gsettingsschemadir).
+
+Guix/GuixSD uses a different directory for every gir package and has
+packages pick-up files using XDG_DATA_DIRS.
+
+Upstream ticket: https://bugzilla.gnome.org/show_bug.cgi?id=764537
+janneke@gnu.org
+
+--- gnome-tweak-tool-3.18.1.orig/gtweak/gsettings.py	2015-04-08 15:21:32.000000000 +0200
++++ gnome-tweak-tool-3.18.1/gtweak/gsettings.py	2016-04-03 11:26:38.658482704 +0200
+@@ -16,7 +16,8 @@
+ # along with gnome-tweak-tool.  If not, see <http://www.gnu.org/licenses/>.
+ 
+ import logging
+-import os.path
++import os
++import sys
+ import xml.dom.minidom
+ import gettext
+ 
+@@ -31,6 +32,13 @@
+ class GSettingsMissingError(Exception):
+     pass
+ 
++def file_from_path(path, file_name):
++    for dir in path:
++        f = os.path.join(dir, file_name)
++        if os.path.exists(f):
++            return f
++    return None
++
+ class _GSettingsSchema:
+     def __init__(self, schema_name, schema_dir=None, schema_filename=None, **options):
+         if not schema_dir:
+@@ -38,9 +46,14 @@
+         if not schema_filename:
+             schema_filename = schema_name + ".gschema.xml"
+ 
++        schema_prefix = os.path.join('glib-2.0', 'schemas')
+         schema_path = os.path.join(schema_dir, schema_filename)
+         if not os.path.exists(schema_path):
+-            logging.critical("Could not find schema %s" % schema_path)
++            schema_path = file_from_path(os.environ.get ('GSETTINGS_SCHEMA_PATH', '').split(os.path.pathsep), schema_filename)
++        if not (schema_path and os.path.exists(schema_path)):
++            schema_path = file_from_path(os.environ.get ('XDG_DATA_DIRS', '').split(os.path.pathsep), os.path.join(schema_prefix, schema_filename))
++        if not (schema_path and os.path.exists(schema_path)):
++            logging.critical("Could not find schema %s" % schema_filename)
+             assert(False)
+ 
+         self._schema_name = schema_name
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 2/2] gnu: Add gnome-tweak-tool.
  2016-05-03  2:19                     ` Leo Famulari
@ 2016-05-15 17:31                       ` Leo Famulari
  0 siblings, 0 replies; 17+ messages in thread
From: Leo Famulari @ 2016-05-15 17:31 UTC (permalink / raw)
  To: Jan Nieuwenhuizen; +Cc: guix-devel, rennes, 宋文武

On Mon, May 02, 2016 at 10:19:16PM -0400, Leo Famulari wrote:
> On Tue, May 03, 2016 at 12:38:44AM +0200, Jan Nieuwenhuizen wrote:
> > Leo Famulari writes:
> > > On Wed, Apr 27, 2016 at 09:05:26PM +0200, Jan Nieuwenhuizen wrote:
> > >> Yes.  Moved python to inputs, added python wrapper.
> > >
> > > Cool!
> > 
> > :-)  Thanks
> > 
> > > Based on that, I moved python2-gobject into (inputs). I also tried
> > > removing mutter entirely, since I believe mutter is provided by
> > > gnome-shell.
> > 
> > Gee, I was sure I tried removing every individual package there...
> > 
> > > It seems to work for me. Can you see if it works for you?
> > 
> > Works for me.  This is great.  Thanks!
> 
> Great! I've attached what I have in my tree.

I updated it to 3.20.1, adjusted the commit message to use gnu/local.mk
instead of gnu-system.am, and applied as 9365ee1c464. Thanks Jan!

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2016-05-15 17:31 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-03 11:07 [PATCH 2/2] gnu: Add gnome-tweak-tool Jan Nieuwenhuizen
2016-04-03 16:41 ` Jan Nieuwenhuizen
2016-04-11 23:35 ` Leo Famulari
2016-04-13 18:02   ` Jan Nieuwenhuizen
2016-04-16  1:35     ` Leo Famulari
2016-04-17 17:22       ` Jan Nieuwenhuizen
2016-04-17 18:33         ` rennes
2016-04-17 18:44         ` Leo Famulari
2016-04-24 11:19           ` Jan Nieuwenhuizen
2016-04-24 18:50             ` Leo Famulari
2016-04-27 19:05               ` Jan Nieuwenhuizen
2016-05-01 21:36                 ` rennes
2016-05-02 22:04                 ` Leo Famulari
2016-05-02 22:38                   ` Jan Nieuwenhuizen
2016-05-03  2:19                     ` Leo Famulari
2016-05-15 17:31                       ` Leo Famulari
     [not found] <mailman.877.1460442807.7476.guix-devel@gnu.org>
2016-04-12 13:16 ` rennes

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).