gnu: ccid: Update to 1.4.32.
[jackhill/guix/guix.git] / gnu / packages / image-viewers.scm
index eef2866..bcc44c2 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
@@ -7,11 +7,14 @@
 ;;; Copyright © 2017 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
-;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2020 Peng Mei Yu <pengmeiyu@riseup.net>
+;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
+;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,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)
   #: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)
   #: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.3")
+    (version "3.4")
     (home-page "https://feh.finalrewind.org/")
     (source (origin
               (method url-fetch)
@@ -73,7 +82,7 @@
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "04c8cgwzkax481sz7lbzy23mk79bqmjy3qpvr7vxa4c14mc9k5gk"))))
+                "0r83zincbfnk8g13xwm2qaccml9srnwlsmpc1f0nhwjkqyjmqm0q"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases (delete 'configure))
@@ -149,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"
@@ -198,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")
@@ -210,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
@@ -219,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 <ft2build.h> (without ‘freetype2/’).  The sxiv
-             ;; Makefile works around this by hard-coding /usr/include instead.
+             ;; Xft.h #includes <ft2build.h> without ‘freetype2/’.  The Makefile
+             ;; works around this by hard-coding /usr/include & $PREFIX.
              (string-append "CPPFLAGS=-I"
                             (assoc-ref %build-inputs "freetype")
                             "/include/freetype2")
@@ -376,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)
@@ -413,58 +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)))
-              (file-name (git-file-name name 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
@@ -503,14 +562,14 @@ preloading.")
 (define-public chafa
   (package
     (name "chafa")
-    (version "1.2.1")
+    (version "1.2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hpjansson.org/chafa/releases/chafa-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "1hj4vdyczby8h52ff23qxl8ng18p5jy549idngpiddwszf5s4drz"))))
+                "0aa7119514rhsak5i0kgvwllb9z74lnfzfn7dzfhs27fc8cvx1dg"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -524,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)))