X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/9b7f721db9da21a858a98316ce52c8becdc6df12..174f5076bf8cefe00185d6f84c1a28b47f76489c:/gnu/packages/image-viewers.scm diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm index d33a9857c9..bcc44c2d5d 100644 --- a/gnu/packages/image-viewers.scm +++ b/gnu/packages/image-viewers.scm @@ -1,16 +1,20 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2017, 2018 Ludovic Courtès +;;; Copyright © 2013, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2014 Ian Denhardt ;;; Copyright © 2015, 2016 Alex Kost -;;; Copyright © 2016, 2017, 2018 Efraim Flashner +;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner ;;; Copyright © 2017 Alex Griffin ;;; Copyright © 2017 ng0 ;;; Copyright © 2017 Mathieu Othacehe ;;; Copyright © 2017 nee -;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice +;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2018, 2019 Ricardo Wurmus ;;; Copyright © 2019 Nicolas Goaziou ;;; Copyright © 2019 Guy Fleury Iteriteka +;;; Copyright © 2019 Pierre Langlois +;;; Copyright © 2020 Peng Mei Yu +;;; Copyright © 2020 R Veera Kumar +;;; Copyright © 2020 Pierre Neidhardt ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,6 +36,7 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (guix build-system meson) @@ -39,11 +44,15 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages algebra) #:use-module (gnu packages boost) + #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages curl) + #:use-module (gnu packages documentation) #:use-module (gnu packages fontutils) + #:use-module (gnu packages freedesktop) #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) @@ -58,13 +67,14 @@ #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) + #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg) #:use-module (gnu packages)) (define-public feh (package (name "feh") - (version "3.2.1") + (version "3.4") (home-page "https://feh.finalrewind.org/") (source (origin (method url-fetch) @@ -72,7 +82,7 @@ name "-" version ".tar.bz2")) (sha256 (base32 - "070axq8jpibcabmjfv4fmjmpk3k349vzvh4qhsi4n62bkcwl35wg")))) + "0r83zincbfnk8g13xwm2qaccml9srnwlsmpc1f0nhwjkqyjmqm0q")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'configure)) @@ -131,6 +141,11 @@ actions.") `( ;; Enable support for a "map" pane using GPS data. #:configure-flags '("--enable-map") + ;; Parallel builds fail with something like: + ;; image-load.c:143:9: error: ‘gq_marshal_VOID__INT_INT_INT_INT’ undeclared + ;; due to unexpressed makefile dependencies. + #:parallel-build? #f + #:phases (modify-phases %standard-phases (add-before 'bootstrap 'pre-bootstrap @@ -143,7 +158,6 @@ actions.") write-dummy-changelog) (call-with-output-file "ChangeLog.html" write-dummy-changelog) - (setenv "NOCONFIGURE" "true") ;; Don't try to run 'git' for the version number. (substitute* "configure.ac" @@ -192,7 +206,7 @@ collection. Geeqie was initially based on GQview.") "0hi9v0rdx47nys0wvm9xasdrafa34r5kq6crb074a0ipwmc60iiq")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+-2) - ("libjpeg" ,libjpeg))) + ("libjpeg" ,libjpeg-turbo))) (native-inputs `(("intltool" ,intltool) ("pkg-config" ,pkg-config))) (synopsis "Simple and fast image viewer for X") @@ -204,7 +218,7 @@ It is the default image viewer on LXDE desktop environment.") (define-public sxiv (package (name "sxiv") - (version "25") + (version "26") (source (origin (method git-fetch) (uri (git-reference @@ -213,15 +227,15 @@ It is the default image viewer on LXDE desktop environment.") (file-name (git-file-name name version)) (sha256 (base32 - "13s1lfar142hq1j7xld0ri616p4bqs57b17yr4d0b9a9w7liz4hp")))) + "0xaawlfdy7b277m38mgg4423kd7p1ffn0dq4hciqs6ivbb3q9c4f")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no check target #:make-flags (list (string-append "PREFIX=" %output) "CC=gcc" - ;; Xft.h #includes (without ‘freetype2/’). The sxiv - ;; Makefile works around this by hard-coding /usr/include instead. + ;; Xft.h #includes without ‘freetype2/’. The Makefile + ;; works around this by hard-coding /usr/include & $PREFIX. (string-append "CPPFLAGS=-I" (assoc-ref %build-inputs "freetype") "/include/freetype2") @@ -301,7 +315,7 @@ your images. Among its features are: (define-public catimg (package (name "catimg") - (version "2.5.0") + (version "2.6.0") (source (origin (method git-fetch) @@ -310,7 +324,7 @@ your images. Among its features are: (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0n74iczzgxrcq3zpa7ndycb9rinm829yvf81c747q4ngv5q6pzcm")))) + (base32 "0g9ywbgy162wiam9hc3yqpq5q4gyxa8fj4jskr3fdz8z8jjaabzz")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; no tests @@ -370,7 +384,7 @@ It supports JPEG, PNG and GIF formats.") ("zlib" ,zlib) ("exiv2" ,exiv2) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("lcms" ,lcms) ("openexr" ,openexr) ("fftw" ,fftwf) @@ -407,57 +421,109 @@ imaging. It supports several HDR and LDR image formats, and it can: (license license:gpl2+))) ;; CBR and RAR are currently unsupported, due to non-free dependencies. -;; For optional PDF support, you can install the mupdf package. (define-public mcomix - (package - (name "mcomix") - (version "1.2.1") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/mcomix/MComix-" version - "/mcomix-" version ".tar.bz2")) - (sha256 - (base32 - "0fzsf9pklhfs1rzwzj64c0v30b74nk94p93h371rpg45qnfiahvy")))) - (build-system python-build-system) - (inputs - `(("p7zip" ,p7zip) - ("python2-pillow" ,python2-pillow) - ("python2-pygtk" ,python2-pygtk))) - (arguments - ;; Python 2.5 or newer (Python 3 and up is not supported) - `(#:python ,python-2 - #:tests? #f ; there are no tests - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'configure - (lambda* (#:key inputs #:allow-other-keys) - (let ((p7zip (assoc-ref inputs "p7zip"))) - ;; insert absolute path to 7z executable - (substitute* "mcomix/archive/sevenzip_external.py" - (("_7z_executable = -1") - (string-append "_7z_executable = u'" p7zip "/bin/7z'")))) - #t))))) - (home-page "https://sourceforge.net/p/mcomix/wiki/Home/") - (synopsis "Image viewer for comics") - (description "MComix is a customizable image viewer that specializes as + ;; Official mcomix hasn't been updated since 2016, it's broken with + ;; python-pillow 6+ and only supports Python 2. We use fork instead. + (let ((commit "fea55a7a9369569eefed72209eed830409c4af98")) + (package + (name "mcomix") + (version (git-version "1.2.1" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/multiSnow/mcomix3") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "05zl0dkjwbdcm2zlk4nz9w33amlqj8pbf32a8ymshc2356fqhhi5")))) + (build-system python-build-system) + (inputs + `(("p7zip" ,p7zip) + ("python-pillow" ,python-pillow) + ("python-pygobject" ,python-pygobject) + ("python-pycairo" ,python-pycairo))) + (arguments + `(#:tests? #f ; FIXME: How do we run tests? + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'configure + (lambda* (#:key inputs #:allow-other-keys) + (let ((p7zip (assoc-ref inputs "p7zip"))) + ;; insert absolute path to 7z executable + (substitute* "mcomix/mcomix/archive/sevenzip_external.py" + (("_7z_executable = -1") + (string-append "_7z_executable = u'" p7zip "/bin/7z'")))) + #t)) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (pyver ,(version-major+minor (package-version python))) + (lib (string-append out "/lib/python" pyver))) + (invoke (which "python") "installer.py" "--srcdir=mcomix" + (string-append "--target=" lib)) + (rename-file (string-append lib "/mcomix") + (string-append lib "/site-packages")) + #t))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share")) + (bin (string-append out "/bin")) + (pyver ,(version-major+minor (package-version python))) + (lib (string-append out "/lib/python" pyver "/site-packages"))) + (mkdir-p bin) + (rename-file (string-append lib "/mcomixstarter.py") + (string-append bin "/mcomix")) + (rename-file (string-append lib "/comicthumb.py") + (string-append bin "/comicthumb")) + (install-file "mime/mcomix.desktop" + (string-append share "/applications")) + (install-file "mime/mcomix.appdata.xml" + (string-append share "/metainfo")) + (install-file "mime/mcomix.xml" + (string-append share "/mime/packages")) + (install-file "mime/comicthumb.thumbnailer" + (string-append share "/thumbnailers")) + (install-file "man/mcomix.1" (string-append share "/man/man1")) + (install-file "man/comicthumb.1" (string-append share "/man/man1")) + (for-each + (lambda (size) + (install-file + (format #f "mcomix/mcomix/images/~sx~s/mcomix.png" size size) + (format #f "~a/icons/hicolor/~sx~s/apps/" share size size)) + (for-each + (lambda (ext) + (install-file + (format #f "mime/icons/~sx~s/application-x-~a.png" size size ext) + (format #f "~a/icons/hicolor/~sx~s/mimetypes/" + share size size))) + '("cb7" "cbr" "cbt" "cbz"))) + '(16 22 24 32 48)) + #t)))))) + (home-page "https://sourceforge.net/p/mcomix/wiki/Home/") + (synopsis "Image viewer for comics") + (description "MComix is a customizable image viewer that specializes as a comic and manga reader. It supports a variety of container formats -including CBZ, CB7, CBT, LHA.") - (license license:gpl2+))) +including CBZ, CB7, CBT, LHA. + +For PDF support, install the @emph{mupdf} package.") + (license license:gpl2+)))) (define-public qview (package (name "qview") - (version "2.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/jurplel/qView.git") - (commit version))) - (sha256 - (base32 - "1s29hz44rb5dwzq8d4i4bfg77dr0v3ywpvidpa6xzg7hnnv3mhi5")))) + (version "3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jurplel/qView.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "15a91bs3wcqhgf76wzigbn10hayg628j84pq4j2vaxar94ak0vk7")))) (build-system gnu-build-system) (arguments `(#:phases @@ -496,14 +562,14 @@ preloading.") (define-public chafa (package (name "chafa") - (version "1.0.1") + (version "1.2.2") (source (origin (method url-fetch) (uri (string-append "https://hpjansson.org/chafa/releases/chafa-" version ".tar.xz")) (sha256 (base32 - "00cf2z52az0z6bzc3hfm4l8infipy5ck410wqmbaybd2csjr3m29")))) + "0aa7119514rhsak5i0kgvwllb9z74lnfzfn7dzfhs27fc8cvx1dg")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -517,3 +583,126 @@ including animated GIFs, into ANSI/Unicode character output that can be displayed in a terminal.") (home-page "https://hpjansson.org/chafa/") (license license:lgpl3+))) + +(define-public imv + (package + (name "imv") + (version "4.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/eXeC64/imv") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0gk8g178i961nn3bls75a8qpv6wvfvav6hd9lxca1skaikd33zdx")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'install 'record-absolute-file-names + (lambda* (#:key outputs #:allow-other-keys) + ;; 'imv' is a script that execs 'imv-x11' or 'imv-wayland'. + ;; Record their absolute file name. + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (substitute* (string-append bin "/imv") + (("imv-") + (string-append bin "/imv-"))) + #t)))) + #:make-flags + (list "CC=gcc" + (string-append "PREFIX=" (assoc-ref %outputs "out")) + (string-append "CONFIGPREFIX=" + (assoc-ref %outputs "out") "/etc")))) + (inputs + `(("asciidoc" ,asciidoc) + ("freeimage" ,freeimage) + ("glu" ,glu) + ("librsvg" ,librsvg) + ("libxkbcommon" ,libxkbcommon) + ("pango" ,pango) + ("wayland" ,wayland))) + (native-inputs + `(("cmocka" ,cmocka) + ("pkg-config" ,pkg-config))) + (synopsis "Image viewer for tiling window managers") + (description "@code{imv} is a command line image viewer intended for use +with tiling window managers. Features include: + +@itemize +@item Native Wayland and X11 support. +@item Support for dozens of image formats including: +@itemize +@item PNG +@item JPEG +@item Animated GIFs +@item SVG +@item TIFF +@item Various RAW formats +@item Photoshop PSD files +@end itemize +@item Configurable key bindings and behavior. +@item Highly scriptable with IPC via imv-msg. +@end itemize\n") + (home-page "https://github.com/eXeC64/imv") + (license license:expat))) + +(define-public qiv + (package + (name "qiv") + (version "2.3.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://spiegl.de/qiv/download/qiv-" + version ".tgz")) + (sha256 + (base32 "1rlf5h67vhj7n1y7jqkm9k115nfnzpwngj3kzqsi2lg676srclv7")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ;; That is required for testing. + ("xorg-server" ,xorg-server-for-tests))) + (inputs + `(("imlib2" ,imlib2) + ("glib" ,glib) + ("gtk+" ,gtk+-2) + ("lcms" ,lcms) + ("libjpeg" ,libjpeg-turbo) + ("libtiff" ,libtiff) + ("libexif" ,libexif) + ("libx11" ,libx11) + ("libxext" ,libxext))) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure script + (add-before 'install 'patch-file-start-xserver + (lambda* (#:key inputs #:allow-other-keys) + ;; patch the file so that qiv runs and exits by itself + (substitute* "Makefile" + (("./qiv -f ./intro.jpg") "./qiv -f -C -s ./intro.jpg") + ;; Fail the build when test fails. + (("echo \"-- Test Failed --\"") + "(echo \"-- Test Failed --\" ; false)")) + ;; There must be a running X server and make install doesn't start one. + ;; Therefore we must do it. + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1") + #t))) + #:tests? #f ; there is no check target + #:make-flags + (list + (string-append "PREFIX=" (assoc-ref %outputs "out"))))) + (home-page "http://spiegl.de/qiv/") + (synopsis "Graphical image viewer for X") + (description + "Quick Image Viewer is a small and fast GDK/Imlib2 image viewer. +Features include zoom, maxpect, scale down, fullscreen, slideshow, delete, +brightness/contrast/gamma correction, pan with keyboard and mouse, flip, +rotate left/right, jump/forward/backward images, filename filter and use it +to set X desktop background.") + (license license:gpl2)))