diff options
Diffstat (limited to 'gnu/packages/image-viewers.scm')
-rw-r--r-- | gnu/packages/image-viewers.scm | 344 |
1 files changed, 226 insertions, 118 deletions
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm index 80987a174c..b61a79370d 100644 --- a/gnu/packages/image-viewers.scm +++ b/gnu/packages/image-viewers.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2017, 2018, 2019, 2020, 2021 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, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> @@ -10,7 +10,7 @@ ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr> -;;; Copyright © 2019, 2020 Guy Fleury Iteriteka <gfleury@disroot.org> +;;; Copyright © 2019, 2020, 2022 Guy Fleury Iteriteka <gfleury@disroot.org> ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2020 Peng Mei Yu <pengmeiyu@riseup.net> ;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in> @@ -20,7 +20,9 @@ ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name> ;;; Copyright © 2021 jgart <jgart@dismail.de> +;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2021 dissent <disseminatedissent@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -49,6 +51,7 @@ #:use-module (guix build-system python) #:use-module (gnu packages autotools) #:use-module (gnu packages algebra) + #:use-module (gnu packages backup) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages boost) @@ -72,6 +75,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages maths) #:use-module (gnu packages ncurses) + #:use-module (gnu packages pdf) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) #:use-module (gnu packages photo) @@ -225,24 +229,24 @@ "report at: https://issues.guix.gnu.org")))) (delete 'configure)))) ;no configure script (inputs - `(("bash" ,bash) - ("catimg" ,catimg) - ("chafa" ,chafa) - ("coreutils" ,coreutils) - ("curl" ,curl) - ("dmenu" ,dmenu) - ("fzf" ,fzf) - ("gawk" ,gawk) - ("grep" ,grep) - ("jp2a" ,jp2a) - ("jq" ,jq) - ("libnotify" ,libnotify) - ("mpv" ,mpv) - ("ncurses" ,ncurses) - ("python-ueberzug" ,python-ueberzug) - ("sed" ,sed) - ("util-linux" ,util-linux) - ("youtube-dl" ,youtube-dl))) + (list bash + catimg + chafa + coreutils + curl + dmenu + fzf + gawk + grep + jp2a + jq + libnotify + mpv + ncurses + python-ueberzug + sed + util-linux + youtube-dl)) (synopsis "Watch PeerTube or YouTube videos from the terminal") (description "@code{ytfzf} is a POSIX script that helps you find PeerTube or YouTube videos without requiring API and opens/downloads them using mpv/ytdl.") @@ -251,7 +255,7 @@ YouTube videos without requiring API and opens/downloads them using mpv/ytdl.") (define-public feh (package (name "feh") - (version "3.7.1") + (version "3.7.2") (home-page "https://feh.finalrewind.org/") (source (origin (method url-fetch) @@ -259,7 +263,7 @@ YouTube videos without requiring API and opens/downloads them using mpv/ytdl.") name "-" version ".tar.bz2")) (sha256 (base32 - "1djqjagp7k9rris1p8wgz0q8albgsd8gasc0hyanbjap3yk1rasp")))) + "0n42kj18ldlcmrmk5qir9gs9irdl1vz9913n8p941x8cfb98ywc4")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases (delete 'configure)) @@ -270,15 +274,14 @@ YouTube videos without requiring API and opens/downloads them using mpv/ytdl.") "exif=1" "inotify=1"))) (native-inputs - `(("perl" ,perl) - ("perl-test-command" ,perl-test-command))) - (inputs `(("imlib2" ,imlib2) - ("curl" ,curl) - ("libexif" ,libexif) - ("libpng" ,libpng) - ("libxt" ,libxt) - ("libx11" ,libx11) - ("libxinerama" ,libxinerama))) + (list perl perl-test-command)) + (inputs (list imlib2 + curl + libexif + libpng + libxt + libx11 + libxinerama)) (native-search-paths ;; Feh allows overriding the libcurl builtin CA path (unset in Guix) ;; with the same variable as the `curl` command line HTTP tool. @@ -301,7 +304,7 @@ actions.") (define-public geeqie (package (name "geeqie") - (version "1.5") + (version "1.6") (source (origin (method git-fetch) (uri (git-reference @@ -309,26 +312,43 @@ actions.") (commit (string-append "v" version)))) (sha256 (base32 - "0nf45sh3pwsv98sppcrqj81b6mdi31n1sbc7gn88m8mhpfp1qq6k")) - (file-name (git-file-name name version)))) + "1i9yd8lddp6b9s9vjjjzbpqj4bvwidxc6kiba6vdrk7dda5akyky")) + (file-name (git-file-name name version)) + (patches (search-patches "geeqie-clutter.patch")))) (build-system gnu-build-system) (arguments - `( ;; Enable support for a "map" pane using GPS data. - #:configure-flags '("--enable-map" - "--enable-gtk3"))) + ;; Enable support for a "map" pane using GPS data. + `(#:configure-flags '("CFLAGS=-O2 -g -fcommon" + "--enable-map" + "--enable-gtk3") + #:phases (modify-phases %standard-phases + (add-after 'unpack 'correctly-locate-aux-scripts + ;; The git checkout has symlinks under the auxdir + ;; directory pointing to /usr/share/automake-1.16/depcomp + ;; and /usr/share/automake-1.16/install-sh, which causes + ;; the configure phase to fail (see: + ;; https://github.com/BestImageViewer/geeqie/issues/936). + (lambda* (#:key inputs #:allow-other-keys) + (let ((automake (assoc-ref inputs "automake"))) + (delete-file "auxdir/depcomp") + (symlink (car (find-files automake "depcomp")) + "auxdir/depcomp") + (delete-file "auxdir/install-sh") + (symlink (car (find-files automake "install-sh")) + "auxdir/install-sh"))))))) (inputs - `(("clutter" ,clutter) - ("libchamplain" ,libchamplain) - ("lcms" ,lcms) - ("exiv2" ,exiv2) - ("libpng" ,libpng) - ("gtk+" ,gtk+))) + (list clutter + libchamplain + lcms + exiv2 + libpng + gtk+)) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("glib" ,glib "bin") ; glib-gettextize - ("intltool" ,intltool) - ("pkg-config" ,pkg-config))) + (list autoconf + automake + `(,glib "bin") ; glib-gettextize + intltool + pkg-config)) (home-page "http://www.geeqie.org/") (synopsis "Lightweight GTK+ based image viewer") (description @@ -353,10 +373,8 @@ collection. Geeqie was initially based on GQview.") (base32 "0hi9v0rdx47nys0wvm9xasdrafa34r5kq6crb074a0ipwmc60iiq")))) (build-system gnu-build-system) - (inputs `(("gtk+" ,gtk+-2) - ("libjpeg" ,libjpeg-turbo))) - (native-inputs `(("intltool" ,intltool) - ("pkg-config" ,pkg-config))) + (inputs (list gtk+-2 libjpeg-turbo)) + (native-inputs (list intltool pkg-config)) (synopsis "Simple and fast image viewer for X") (description "gpicview is a lightweight GTK+ 2.x based image viewer. It is the default image viewer on LXDE desktop environment.") @@ -401,12 +419,12 @@ It is the default image viewer on LXDE desktop environment.") (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "-C" "icon" "install" make-flags)))))) (inputs - `(("freetype" ,freetype) - ("giflib" ,giflib) - ("imlib2" ,imlib2) - ("libexif" ,libexif) - ("libx11" ,libx11) - ("libxft" ,libxft))) + (list freetype + giflib + imlib2 + libexif + libx11 + libxft)) (home-page "https://github.com/muennich/sxiv") (synopsis "Simple X Image Viewer") (description @@ -417,10 +435,67 @@ base should be kept small and clean to make it easy for you to dig into it and customize it for your needs.") (license license:gpl2+))) +(define-public nsxiv + (package + (name "nsxiv") + (version "27.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nsxiv/nsxiv") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1na7f0hpc9g04nm7991gzaqr5gkj08n2azx833hgxcm2w1pnn1bk")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no check target + #:make-flags + (list (string-append "PREFIX=" %output) + (string-append "CC=" ,(cc-for-target))) + #:phases + (modify-phases %standard-phases + (delete 'configure) ;no configure script + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + ;; Xft.h #includes <ft2build.h> without ‘freetype2/’. The + ;; Makefile works around this by hard-coding /usr/include & + ;; $PREFIX. + (let ((freetype (string-append (assoc-ref inputs "freetype") + "/include/freetype2"))) + (substitute* "Makefile" + (("-I/usr/include/freetype2 -I\\$\\(PREFIX\\)/include/freetype2") + (string-append "-I" freetype)))))) + (add-after 'install 'install-desktop-file + (lambda* (#:key outputs #:allow-other-keys) + (install-file "nsxiv.desktop" + (string-append (assoc-ref outputs "out") + "/share/applications")))) + (add-after 'install 'install-icons + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "-C" "icon" "install" make-flags)))))) + (inputs + (list freetype + giflib + imlib2 + libexif + libx11 + libxft)) + (home-page "https://github.com/nsxiv/nsxiv") + (synopsis "Neo Simple X Image Viewer") + (description + "nsxiv is a fork of sxiv. Its primary goal is to provide the most basic +features required for fast image viewing. It has vi key bindings and works +nicely with tiling window managers. Its code base should be kept small and +clean to make it easy for you to dig into it and customize it for your +needs.") + (license license:gpl2+))) + (define-public viewnior (package (name "viewnior") - (version "1.7") + (version "1.8") (source (origin (method git-fetch) @@ -429,8 +504,7 @@ it and customize it for your needs.") (commit (string-append name "-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "0y4hk3vq8psba5k615w18qj0kbdfp5w0lm98nv5apy6hmcpwfyig")))) + (base32 "14qvx1wajncd5ab0207274cwk32f4ipfnlaci6phmah0cwra2did")))) (build-system meson-build-system) (arguments '(#:phases @@ -451,7 +525,7 @@ it and customize it for your needs.") `(("exiv2" ,exiv2) ("gdk-pixbuf" ,gdk-pixbuf) ("gtk+-2" ,gtk+-2))) - (home-page "http://siyanpanayotov.com/project/viewnior") + (home-page "https://siyanpanayotov.com/project/viewnior") (synopsis "Simple, fast and elegant image viewer") (description "Viewnior is an image viewer program. Created to be simple, fast and elegant. Its minimalistic interface provides more screenspace for @@ -506,7 +580,7 @@ your images. Among its features are: "/bin/catimg.sh")) #t))))) (inputs - `(("imagemagick" ,imagemagick))) ; for the bash script version + (list imagemagick)) ; for the bash script version (home-page "https://github.com/posva/catimg") (synopsis "Render images in the terminal") (description @@ -528,8 +602,7 @@ It supports JPEG, PNG and GIF formats.") "188q0l63nfasqfvwbq4mwx2vh7wsfi2bq9n5nksddspl1qz01lnp")))) (build-system cmake-build-system) (native-inputs - `(("pkg-config" ,pkg-config) - ("qttools" ,qttools))) + (list pkg-config qttools)) (inputs `(("qtbase" ,qtbase-5) ("qtdeclarative" ,qtdeclarative) @@ -544,7 +617,7 @@ It supports JPEG, PNG and GIF formats.") ("libpng" ,libpng) ("libjpeg" ,libjpeg-turbo) ("lcms" ,lcms) - ("openexr" ,openexr) + ("openexr" ,openexr-2) ("fftw" ,fftwf) ("gsl" ,gsl) ("libtiff" ,libtiff))) @@ -558,10 +631,9 @@ It supports JPEG, PNG and GIF formats.") ;; not use 'OpenEXR.pc'. Thus, we need to add ;; "$ilmbase/include/OpenEXR/" to the CPATH. (setenv "CPATH" - (string-append (assoc-ref inputs "ilmbase") - "/include/OpenEXR" - ":" (or (getenv "CPATH") ""))) - #t))))) + (string-append + (search-input-directory inputs "include/OpenEXR") + ":" (or (getenv "CPATH") "")))))))) (home-page "http://qtpfsgui.sourceforge.net") (synopsis "High dynamic range (HDR) imaging application") (description @@ -599,10 +671,7 @@ imaging. It supports several HDR and LDR image formats, and it can: "05zl0dkjwbdcm2zlk4nz9w33amlqj8pbf32a8ymshc2356fqhhi5")))) (build-system python-build-system) (inputs - `(("p7zip" ,p7zip) - ("python-pillow" ,python-pillow) - ("python-pygobject" ,python-pygobject) - ("python-pycairo" ,python-pycairo))) + (list p7zip python-pillow python-pygobject python-pycairo)) (arguments `(#:tests? #f ; FIXME: How do we run tests? #:phases @@ -700,9 +769,7 @@ For PDF support, install the @emph{mupdf} package.") (("updateText\\(\\);") "")) #t))))) (inputs - `(("qtbase" ,qtbase-5) - ("qtsvg" ,qtsvg) - ("qtimageformats" ,qtimageformats))) + (list qtbase-5 qtsvg qtimageformats)) (home-page "https://interversehq.com/qview/") (synopsis "Convenient and minimal image viewer") (description "qView is a Qt image viewer designed with visually @@ -714,22 +781,19 @@ preloading.") (define-public chafa (package (name "chafa") - (version "1.4.1") + (version "1.8.0") (source (origin (method url-fetch) (uri (string-append "https://hpjansson.org/chafa/releases/chafa-" version ".tar.xz")) (sha256 (base32 - "18rb82bfqj1sj2g4irazx4lwq9q4b4k7my1r0q714vf9yhs41ls6")))) + "0sr86bnrqcf6wxigrgsglv4fc79g5djmki20ih4hg8kbhcnnbzr1")))) (build-system gnu-build-system) (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (inputs - `(("freetype" ,freetype) - ("libjpeg" ,libjpeg-turbo) - ("glib" ,glib) - ("imagemagick" ,imagemagick))) + (list freetype libjpeg-turbo glib imagemagick)) (synopsis "Convert images to ANSI/Unicode characters") (description "Chafa is a command-line utility that converts all kinds of images, @@ -741,15 +805,15 @@ displayed in a terminal.") (define-public imv (package (name "imv") - (version "4.3.0") + (version "4.3.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/eXeC64/imv") + (url "https://git.sr.ht/~exec64/imv") (commit (string-append "v" version)))) (sha256 (base32 - "12xcayyzmfknbff04z8jdlxsnnimgisqiah0bw07cyxx8ksmdzqw")) + "01x6qg7nhikqh68gnzrdvq0rxma5v9z19il89y8bvdrcr7r1vh40")) (file-name (git-file-name name version)))) (build-system meson-build-system) (arguments @@ -763,26 +827,22 @@ displayed in a terminal.") (bin (string-append out "/bin"))) (substitute* (string-append bin "/imv") (("imv-") - (string-append bin "/imv-"))) - #t)))))) - (inputs - `(("freeimage" ,freeimage) - ("glu" ,glu) - ("libheif" ,libheif) - ("libjpeg-turbo" ,libjpeg-turbo) - ("libinih" ,libinih) - ("libnsgif" ,libnsgif) - ("librsvg" ,librsvg-next) - ("libtiff" ,libtiff) - ("libxkbcommon" ,libxkbcommon) - ("pango" ,pango) - ("wayland" ,wayland))) + (string-append bin "/imv-"))))))))) (native-inputs - `(("asciidoc" ,asciidoc) - ("cmocka" ,cmocka) - ;; why build need it? - ("git" ,git-minimal) - ("pkg-config" ,pkg-config))) + (list asciidoc + pkg-config)) + (inputs + (list freeimage + glu + libheif + libjpeg-turbo + libinih + libnsgif + librsvg + libtiff + libxkbcommon + pango + wayland)) (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: @@ -802,25 +862,32 @@ with tiling window managers. Features include: @item Configurable key bindings and behavior. @item Highly scriptable with IPC via imv-msg. @end itemize\n") - (home-page "https://github.com/eXeC64/imv") + (home-page "https://git.sr.ht/~exec64/imv/") (license license:expat))) (define-public qiv (package (name "qiv") - (version "2.3.1") + (version "2.3.2") (source (origin (method url-fetch) (uri (string-append "http://spiegl.de/qiv/download/qiv-" version ".tgz")) (sha256 - (base32 "1rlf5h67vhj7n1y7jqkm9k115nfnzpwngj3kzqsi2lg676srclv7")))) + (base32 "1mc0f2nnas4q0d7zc9r6g4z93i32xlx0p9hl4fn5zkyml24a1q28")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Fix a typo. This can probably be removed on the next update. + (substitute* "Makefile" + (("\\$\\(PREFIX\\)/man") + "$(PREFIX)/share/man")))))) (build-system gnu-build-system) (native-inputs - `(("pkg-config" ,pkg-config) - ;; That is required for testing. - ("xorg-server" ,xorg-server-for-tests))) + (list pkg-config + ;; That is required for testing. + xorg-server-for-tests)) (inputs `(("imlib2" ,imlib2) ("glib" ,glib) @@ -846,8 +913,7 @@ with tiling window managers. Features include: ;; 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))) + (setenv "DISPLAY" ":1")))) #:tests? #f ; there is no check target #:make-flags (list @@ -862,6 +928,49 @@ rotate left/right, jump/forward/backward images, filename filter and use it to set X desktop background.") (license license:gpl2))) +(define-public pqiv + (package + (name "pqiv") + (version "2.12") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/phillipberndt/pqiv") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "18nvrqmlifh4m8nfs0d19sb9d1l3a95xc89qxqdr881jcxdsgflw")))) + (build-system gnu-build-system) + (native-inputs + (list pkg-config)) + (inputs + (list ffmpeg + gtk+ + imagemagick + libarchive + libspectre + libwebp + poppler)) + (arguments + `(#:tests? #f ;no tests + #:phases + (modify-phases %standard-phases + (delete 'configure)) ;no configure script + #:make-flags + (list + (string-append "PREFIX=" (assoc-ref %outputs "out")) + (string-append "CC=" ,(cc-for-target)) + (string-append "PKG_CONFIG=" ,(pkg-config-for-target))))) + (home-page "https://www.pberndt.com/Programme/Linux/pqiv") + (synopsis "Powerful image viewer with minimal UI") + (description + "pqiv is a GTK-3 based command-line image viewer with a minimal UI. +It is highly customizable, can be fully controlled from scripts, and has +support for various file formats including PDF, Postscript, video files and +archives.") + (license license:gpl3+))) + (define-public nomacs (package (name "nomacs") @@ -906,7 +1015,7 @@ to set X desktop background.") ("libtiff" ,libtiff) ("opencv" ,opencv) ("python" ,python-wrapper) - ("quazip" ,quazip) + ("quazip" ,quazip-0) ("qtbase" ,qtbase-5) ("qtsvg" ,qtsvg))) (native-inputs @@ -952,10 +1061,9 @@ synchronization of multiple instances.") (install-file "src/xzgv" bin))))) ; just install the executable #:tests? #f)) ; no rule for target 'test' (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (inputs - `(("gtk+" ,gtk+-2) - ("libexif" ,libexif))) + (list gtk+-2 libexif)) (home-page "https://sourceforge.net/projects/xzgv/") (synopsis "Picture viewer for X with a thumbnail-based selector") (description |