X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/7411c2efceadb6c64fa62d7e8caa2ebfb768113b..e35383a76f0a1d1ba01f4b355d8df4ac341216b3:/gnu/packages/gtk.scm diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 95812d2d85..138fa7c314 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -1,21 +1,21 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès -;;; Copyright © 2014, 2015, 2017, 2018, 2019 Mark H Weaver +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès +;;; Copyright © 2014, 2015, 2017, 2018, 2019, 2021 Mark H Weaver ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2015 Federico Beffa ;;; Copyright © 2015 Paul van der Walt ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015 Andy Wingo ;;; Copyright © 2015 David Hashe -;;; Coypright © 2015, 2016, 2017, 2018 Ricardo Wurmus -;;; Copyright © 2016, 2017, 2020 Efraim Flashner +;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021 Ricardo Wurmus +;;; Copyright © 2016, 2017, 2020, 2021 Efraim Flashner ;;; Copyright © 2016 Fabian Harfert ;;; Copyright © 2016 Kei Kebreau ;;; Copyright © 2016 Patrick Hetu ;;; Copyright © 2016 Nikita ;;; Copyright © 2017 Roel Janssen -;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice +;;; Copyright © 2017–2021 Tobias Geerinckx-Rice ;;; Copyright © 2017, 2019, 2020 Marius Bakke ;;; Copyright © 2018 Alex Vong ;;; Copyright © 2018, 2020 Arun Isaac @@ -25,6 +25,8 @@ ;;; Copyright © 2020 Brendan Tildesley ;;; Copyright © 2020 Guillaume Le Vaillant ;;; Copyright © 2020 Maxim Cournoyer +;;; Copyright © 2021 Leo Famulari +;;; Copyright © 2021 Simon Streit ;;; ;;; This file is part of GNU Guix. ;;; @@ -47,6 +49,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module ((guix build utils) #:select (alist-replace)) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system meson) @@ -88,6 +91,7 @@ #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (gnu packages xdisorg) + #:use-module (gnu packages pulseaudio) #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:use-module (ice-9 match)) @@ -127,6 +131,8 @@ tools have full access to view and control running applications.") (method url-fetch) (uri (string-append "https://cairographics.org/releases/cairo-" version ".tar.xz")) + (patches (search-patches "cairo-CVE-2018-19876.patch" + "cairo-CVE-2020-35492.patch")) (sha256 (base32 "0c930mk5xr2bshbdljv005j3j8zr47gqmkry3q6qgvqky6rjjysy")))) @@ -180,8 +186,7 @@ affine transformation (scale, rotation, shear, etc.).") (properties `((hidden? . #t))))) (define-public cairo-xcb - (package - (inherit cairo) + (package/inherit cairo (name "cairo-xcb") (inputs `(("mesa" ,mesa) @@ -235,7 +240,7 @@ affine transformation (scale, rotation, shear, etc.).") (define-public libdatrie (package (name "libdatrie") - (version "0.2.12") + (version "0.2.13") (source (origin (method url-fetch) @@ -243,7 +248,7 @@ affine transformation (scale, rotation, shear, etc.).") (string-append "https://linux.thai.net/pub/ThaiLinux/software/" "libthai/libdatrie-" version ".tar.xz")) (sha256 - (base32 "0jdi01pcxv0b24zbjy7zahawsqqqw4mv94f2yy01zh4n796wqba5")))) + (base32 "1gplcx9ddglpxmqm10qn38kjmvdh4hnhj14rzgqag095psr1n8qj")))) (build-system gnu-build-system) (outputs '("out" "doc")) (arguments @@ -561,6 +566,7 @@ highlighting and other features typical of a source code editor.") (uri (string-append "mirror://gnome/sources/" name "/" (version-major+minor version) "/" name "-" version ".tar.xz")) + (patches (search-patches "gdk-pixbuf-CVE-2020-29385.patch")) (sha256 (base32 "1rnlx9yfw970maxi2x6niaxmih5la11q1ilr7gzshz2kk585k0hm")))) @@ -616,7 +622,7 @@ in the GNOME project.") ;; on gdk-pixbuf, so this new varibale. Also, librsvg adds 90MiB to the ;; closure size. (define-public gdk-pixbuf+svg - (package (inherit gdk-pixbuf) + (package/inherit gdk-pixbuf (name "gdk-pixbuf+svg") (inputs `(("librsvg" ,librsvg) @@ -702,7 +708,7 @@ in the GNOME project.") (native-inputs `(("gettext" ,gettext-minimal) ("gobject-introspection" ,gobject-introspection) - ("gtk-doc" ,gtk-doc) + ("gtk-doc" ,gtk-doc/stable) ("glib" ,glib "bin") ("pkg-config" ,pkg-config))) (synopsis "Assistive Technology Service Provider Interface, core components") @@ -933,14 +939,14 @@ application suites.") (define-public guile-cairo (package (name "guile-cairo") - (version "1.11.1") + (version "1.11.2") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/guile-cairo/guile-cairo-" version ".tar.gz")) (sha256 (base32 - "1gc642r9ndsjhhmh9bl5cbd3dwvy4dpxwhr0zpsw43y9nmz37xpl")) + "0yx0844p61ljd4d3d63qrawiygiw6ks02fwv2cqx7nav5kfd8ck2")) (modules '((guix build utils))) (snippet (begin @@ -951,19 +957,40 @@ application suites.") (string-append name "dir = " prefix "/guile/site/@GUILE_EFFECTIVE_VERSION@" suffix))) - - ;; Guile 2.x used to pull in and - ;; other headers but this is no longer the case in 3.0. - (substitute* (find-files "." "\\.[ch]$") - (("^ *# *include.*libguile\\.h.*$") - "#include \n#include \n")) #t))))) (build-system gnu-build-system) (arguments ;; Uses of 'scm_t_uint8' & co. are deprecated; don't stop the build ;; because of them. - '(#:configure-flags '("--disable-Werror") - #:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings + `(#:configure-flags '("--disable-Werror") + #:make-flags '("GUILE_AUTO_COMPILE=0") ; to prevent guild warnings + #:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 rdelim) + (ice-9 popen)) + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-go-files + (lambda* (#:key outputs inputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (effective (read-line + (open-pipe* OPEN_READ + "guile" "-c" + "(display (effective-version))"))) + (module-dir (string-append out "/share/guile/site/" + effective)) + (object-dir (string-append out "/lib/guile/" effective + "/site-ccache")) + (prefix (string-length module-dir))) + ;; compile to the destination + (for-each (lambda (file) + (let* ((base (string-drop (string-drop-right file 4) + prefix)) + (go (string-append object-dir base ".go"))) + (invoke "guild" "compile" "-L" module-dir + file "-o" go))) + (find-files module-dir "\\.scm$")) + #t)))))) (inputs `(("guile-lib" ,guile-lib) ("expat" ,expat) @@ -1024,10 +1051,36 @@ exceptions, macros, and a dynamic programming environment.") (file-name (string-append name "-" version ".tar.gz")))) (build-system gnu-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (replace 'bootstrap - (lambda _ - (invoke "autoreconf" "-vfi")))))) + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 rdelim) + (ice-9 popen)) + #:phases + (modify-phases %standard-phases + (replace 'bootstrap + (lambda _ + (invoke "autoreconf" "-vfi"))) + (add-after 'install 'install-go-files + (lambda* (#:key outputs inputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (effective (read-line + (open-pipe* OPEN_READ + "guile" "-c" + "(display (effective-version))"))) + (module-dir (string-append out "/share/guile/site/" + effective)) + (object-dir (string-append out "/lib/guile/" effective + "/site-ccache")) + (prefix (string-length module-dir))) + ;; compile to the destination + (for-each (lambda (file) + (let* ((base (string-drop (string-drop-right file 4) + prefix)) + (go (string-append object-dir base ".go"))) + (invoke "guild" "compile" "-L" module-dir + file "-o" go))) + (find-files module-dir "\\.scm$")) + #t)))))) (native-inputs `(("pkg-config" ,pkg-config) ("autoconf" ,autoconf) ("automake" ,automake) @@ -1520,7 +1573,7 @@ write GNOME applications.") (define-public perl-cairo (package (name "perl-cairo") - (version "1.108") + (version "1.109") (source (origin (method url-fetch) (uri (string-append @@ -1528,7 +1581,7 @@ write GNOME applications.") version ".tar.gz")) (sha256 (base32 - "1nh5iya63q6j2w0cdi24x2ygpi8k8wwccnbh8cisnx8nqmywnhk0")))) + "0zq78dv22arg35ma6kah9cwfd1zx8gg7amsibzd128qw81p766c2")))) (build-system perl-build-system) (native-inputs `(("perl-extutils-depends" ,perl-extutils-depends) @@ -1762,6 +1815,17 @@ typically used to document the public API of GTK+ and GNOME libraries, but it can also be used to document application code.") (license license:gpl2+))) +;; This is a variant of the 'gtk-doc' package that is not updated often. It +;; is intended to be used as a native-input at build-time only. This allows +;; the main 'gtk-doc', 'dblatex' and 'imagemagick' packages to be freely +;; updated on the 'master' branch without triggering an excessive number of +;; rebuilds. +(define-public gtk-doc/stable + (hidden-package + (package/inherit gtk-doc + (inputs (alist-replace "dblatex" `(,dblatex/stable) + (package-inputs gtk-doc)))))) + (define-public gtk-engines (package (name "gtk-engines") @@ -2015,6 +2079,53 @@ shell scripts. Example of how to use @code{yad} can be consulted at @url{https://sourceforge.net/p/yad-dialog/wiki/browse_pages/}.") (license license:gpl3+))) +(define-public dragon-drop + (package + (name "dragon-drop") + (version "1.1.1") + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/mwh/dragon") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0fgzz39007fdjwq72scp0qygp2v3zc5f1xkm0sxaa8zxm25g1bra")))) + (build-system gnu-build-system) + (inputs `(("gtk+" ,gtk+))) + (native-inputs `(("pkg-config" ,pkg-config))) + (arguments + `(#:tests? #f ; no check + #:make-flags + (list (string-append "CC=" ,(cc-for-target)) + ;; makefile uses PREFIX for the binary location + (string-append "PREFIX=" (assoc-ref %outputs "out") + "/bin")) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) ; no configure script + (synopsis "Drag and drop source/target for X") + (description + "Dragon is a lightweight drag-and-drop source for X where you can run: + +@example +dragon file.tar.gz +@end example + +to get a window with just that file in it, ready to be dragged where you need it. +What if you need to drag into something? Using: + +@example +dragon --target +@end example + +you get a window you can drag files and text into. Dropped items are +printed to standard output.") + (home-page "https://github.com/mwh/dragon") + (license license:gpl3+))) + (define-public libdbusmenu (package (name "libdbusmenu") @@ -2078,16 +2189,18 @@ displayed on the other side of the bus.") (define-public gtk-layer-shell (package (name "gtk-layer-shell") - (version "0.1.0") + (version "0.6.0") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/wmww/gtk-layer-shell/releases/download/v" - version "/gtk-layer-shell-" version ".tar.xz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/wmww/gtk-layer-shell") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "0ncklk3z0fzlz6p76jdcrr1ykyp1f4ykjjch4x2hfp9bwsnl4a3m")))) + (base32 "1kcp4p3s7sdh9lwniybjdarfy8z69j2j23hfrw98amhwhq39gdcc")))) (build-system meson-build-system) + (arguments `(#:configure-flags (list "-Dtests=true"))) (native-inputs `(("pkg-config" ,pkg-config) ("gobject-introspection" ,gobject-introspection))) (inputs `(("wayland" ,wayland) @@ -2119,7 +2232,7 @@ popovers.") `(("gettext" ,gettext-minimal) ("glib-bin" ,glib "bin") ("gobject-introspection" ,gobject-introspection) - ("gtk-doc" ,gtk-doc) + ("gtk-doc" ,gtk-doc/stable) ("pkg-config" ,pkg-config) ("python" ,python))) (inputs @@ -2151,7 +2264,7 @@ library for drawing.") (define-public gtksheet (package (name "gtksheet") - (version "4.3.4") + (version "4.3.5") (source (origin (method git-fetch) @@ -2161,7 +2274,7 @@ library for drawing.") (file-name (git-file-name name version)) (sha256 (base32 - "10qzmdkjkkvkcadxn019cbyhwaahxcfv1apv54lc711bqvh63v8r")))) + "13jwr1vly4ga3f09dajwky1cdrz5bmggwga3vnnd6j6zzia7dpyr")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list "--enable-glade" @@ -2175,6 +2288,11 @@ library for drawing.") (lambda _ (delete-file "configure") #t)) + (add-after 'unpack 'rename-type + (lambda _ + (substitute* "glade/glade-gtksheet-editor.c" + (("GladeEditableIface") "GladeEditableInterface")) + #t)) ;; Fix glade install directories. (add-before 'bootstrap 'configure-glade-directories (lambda* (#:key outputs #:allow-other-keys) @@ -2185,15 +2303,6 @@ library for drawing.") (string-append (assoc-ref outputs "out") "/lib/glade/modules")) (("`\\$PKG_CONFIG --variable=pixmapdir gladeui-2.0`") (string-append (assoc-ref outputs "out") "/share/pixmaps"))) - #t)) - ;; Fix incorrect typelib version. This is a known upstream bug. See - ;; https://github.com/fpaquet/gtksheet/issues/23 - (add-after 'install 'fix-typelib-version - (lambda* (#:key outputs #:allow-other-keys) - (with-directory-excursion (string-append (assoc-ref outputs "out") - "/lib/girepository-1.0") - (rename-file "GtkSheet-4.0.typelib" - (string-append "GtkSheet-" ,version ".typelib"))) #t))))) (inputs `(("glade" ,glade3) @@ -2223,3 +2332,74 @@ foreground and background colors, text justification and more.") (variable "GLADE_MODULE_SEARCH_PATH") (files '("lib/glade/modules"))))) (license license:lgpl2.0+))) + +(define-public gtkdatabox + (package + (name "gtkdatabox") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/gtkdatabox/gtkdatabox-1/" + "gtkdatabox-" version ".tar.gz")) + (sha256 + (base32 "1qykm551bx8j8pfgxs60l2vhpi8lv4r8va69zvn2594lchh71vlb")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("gtk+" ,gtk+))) + (synopsis "Display widget for dynamic data") + (description "GtkDatabox is a widget for live display of large amounts of +fluctuating numerical data. It enables data presentation (for example, on +linear or logarithmic scales, as dots or lines, with markers/labels) as well as +user interaction (e.g. measuring distances).") + (home-page "https://sourceforge.net/projects/gtkdatabox/") + (license license:lgpl2.1+))) + +(define-public volctl + (package + (name "volctl") + (version "0.8.2") + (source (origin + (method git-fetch) + (uri (git-reference (url "https://github.com/buzz/volctl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1cx27j83pz2qffnzb85fbl1x6pp3irv1kbw7g1hri7kaw6ky4xiz")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-path + (lambda* (#:key inputs #:allow-other-keys) + (let ((pulse (assoc-ref inputs "pulseaudio")) + (xfixes (assoc-ref inputs "libxfixes"))) + (substitute* "volctl/lib/xwrappers.py" + (("libXfixes.so") + (string-append xfixes "/lib/libXfixes.so"))) + (substitute* "volctl/lib/pulseaudio.py" + (("libpulse.so.0") + (string-append pulse "/lib/libpulse.so.0"))) + #t)))))) + (inputs + `(("gtk+" ,gtk+) + ("libxfixes" ,libxfixes) + ("pulseaudio" ,pulseaudio))) + (propagated-inputs + `(("python-click" ,python-click) + ("python-pycairo" ,python-pycairo) + ("python-pygobject" ,python-pygobject) + ("python-pyyaml" ,python-pyyaml))) + (home-page "https://buzz.github.io/volctl/") + (synopsis "Per-application volume control and on-screen display (OSD) for graphical desktops") + (description "Volctl is a PulseAudio-enabled tray icon volume control and +OSD applet for graphical desktops. It's not meant to be an replacement for a +full-featured mixer application. If you're looking for that check out the +excellent pavucontrol.") + + ;; XXX: 'setup.py' says "GPLv2" but nothing says "version 2 only". Is + ;; GPLv2+ intended? + (license license:gpl2)))