X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/44fb8cf84107bf2baa207216fda0ee5476bafb74..3fdb2d679259f5d1541240dd4e9cedda17040bf2:/gnu/packages/image-viewers.scm diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm index 8f3f61c4b1..ccbbb3bc2d 100644 --- a/gnu/packages/image-viewers.scm +++ b/gnu/packages/image-viewers.scm @@ -2,17 +2,24 @@ ;;; Copyright © 2013, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2014 Ian Denhardt ;;; Copyright © 2015, 2016 Alex Kost -;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner +;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner ;;; Copyright © 2017 Alex Griffin -;;; Copyright © 2017 ng0 +;;; Copyright © 2017 Nikita ;;; Copyright © 2017 Mathieu Othacehe ;;; Copyright © 2017 nee -;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice +;;; Copyright © 2018–2021 Tobias Geerinckx-Rice ;;; Copyright © 2018, 2019 Ricardo Wurmus ;;; Copyright © 2019 Nicolas Goaziou -;;; Copyright © 2019 Guy Fleury Iteriteka +;;; Copyright © 2019, 2020 Guy Fleury Iteriteka ;;; Copyright © 2019 Pierre Langlois ;;; Copyright © 2020 Peng Mei Yu +;;; Copyright © 2020 R Veera Kumar +;;; Copyright © 2020 Pierre Neidhardt +;;; Copyright © 2021 Rovanion Luckey +;;; Copyright © 2021 Xinglu Chen +;;; Copyright © 2021 Stefan Reichör +;;; Copyright © 2021 Raghav Gururajan +;;; Copyright © 2021 jgart ;;; ;;; This file is part of GNU Guix. ;;; @@ -34,12 +41,14 @@ #: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 (guix build-system python) #:use-module (gnu packages autotools) #:use-module (gnu packages algebra) + #:use-module (gnu packages base) #:use-module (gnu packages boost) #:use-module (gnu packages check) #:use-module (gnu packages compression) @@ -55,8 +64,10 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages graphics) #:use-module (gnu packages image) + #:use-module (gnu packages image-processing) #:use-module (gnu packages imagemagick) #:use-module (gnu packages maths) + #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) #:use-module (gnu packages photo) @@ -64,14 +75,112 @@ #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) + #:use-module (gnu packages suckless) + #:use-module (gnu packages terminals) + #:use-module (gnu packages video) + #:use-module (gnu packages web) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xorg) #:use-module (gnu packages)) +(define-public ytfzf + (package + (name "ytfzf") + (version "1.2.0") + (home-page "https://github.com/pystardust/ytfzf") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "00d416qb4109pm77ikhnmds8qng90ni2jan9kdnxz7b6sh5f61nz")) + (patches + (search-patches + ;; Prerequisite for 'patch phase. + "ytfzf-programs.patch" + ;; Disables self-update. + "ytfzf-updates.patch")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no test suite + #:modules + ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-26)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Use correct $PREFIX path. + (substitute* "Makefile" + (("/usr/bin") + (format #f "~a/bin" + (assoc-ref outputs "out")))) + ;; Use absolute path to referenced programs. + (substitute* "ytfzf" + (("guix-catimg") + (format #f "~a/bin/catimg" + (assoc-ref inputs "catimg"))) + (("guix-chafa") + (format #f "~a/bin/chafa" + (assoc-ref inputs "chafa"))) + (("guix-curl") + (format #f "~a/bin/curl" + (assoc-ref inputs "curl"))) + (("guix-dmenu") + (format #f "~a/bin/dmenu" + (assoc-ref inputs "dmenu"))) + (("guix-fzf") + (format #f "~a/bin/fzf" + (assoc-ref inputs "fzf"))) + (("guix-jp2a") + (format #f "~a/bin/jp2a" + (assoc-ref inputs "jp2a"))) + (("guix-jq") + (format #f "~a/bin/jq" + (assoc-ref inputs "jq"))) + (("guix-mpv") + (format #f "~a/bin/mpv" + (assoc-ref inputs "mpv"))) + (("guix-notify-send") + (format #f "~a/bin/notify-send" + (assoc-ref inputs "libnotify"))) + (("guix-tput") + (format #f "~a/bin/tput" + (assoc-ref inputs "ncurses"))) + (("guix-ueberzug") + (format #f "~a/bin/ueberzug" + (assoc-ref inputs "python-ueberzug"))) + (("guix-youtube-dl") + (format #f "~a/bin/youtube-dl" + (assoc-ref inputs "youtube-dl")))))) + (delete 'configure)))) ;no configure script + (inputs + `(("catimg" ,catimg) + ("chafa" ,chafa) + ("curl" ,curl) + ("dmenu" ,dmenu) + ("fzf" ,fzf) + ("jp2a" ,jp2a) + ("jq" ,jq) + ("libnotify" ,libnotify) + ("mpv" ,mpv) + ("ncurses" ,ncurses) + ("python-ueberzug" ,python-ueberzug) + ("youtube-dl" ,youtube-dl))) + (synopsis "Find and 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.") + (license license:gpl3+))) + (define-public feh (package (name "feh") - (version "3.3") + (version "3.6.3") (home-page "https://feh.finalrewind.org/") (source (origin (method url-fetch) @@ -79,14 +188,16 @@ name "-" version ".tar.bz2")) (sha256 (base32 - "04c8cgwzkax481sz7lbzy23mk79bqmjy3qpvr7vxa4c14mc9k5gk")))) + "1d13x8hmvpdc5f5rj4l29ha7iz7wvqxjlvh6il04wq8igzrj0x23")))) (build-system gnu-build-system) (arguments - '(#:phases (modify-phases %standard-phases (delete 'configure)) + `(#:phases (modify-phases %standard-phases (delete 'configure)) #:test-target "test" #:make-flags - (list "CC=gcc" (string-append "PREFIX=" (assoc-ref %outputs "out")) - "exif=1"))) + (list ,(string-append "CC=" (cc-for-target)) + (string-append "PREFIX=" (assoc-ref %outputs "out")) + "exif=1" + "inotify=1"))) (native-inputs `(("perl" ,perl) ("perl-test-command" ,perl-test-command))) @@ -117,78 +228,46 @@ actions.") "See 'COPYING' in the distribution.")))) (define-public geeqie - ;; The latest release, 1.4, fails to build with Exiv2 0.27.1. The upstream - ;; repo has several fixes for that, so take a snapshot. - (let ((commit "c220ddefb1b6b11b54f7598f0d44dd0723325ed4") - (revision "1")) - (package - (name "geeqie") - (version (git-version "1.4" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/BestImageViewer/geeqie") - (commit commit))) - (sha256 - (base32 - "07424nzrnwbksgalgg1a6ig2snd986w79kca1cfnv1q9kc7x2h3x")) - (file-name (git-file-name name version)))) - (build-system gnu-build-system) - (arguments - `( ;; 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 - (lambda _ - (define (write-dummy-changelog port) - (display "See Git history for a change log.\n" port)) - ;; Create ChangeLog{,.html} to placate the makefile, which would - ;; otherwise require access to the Git repo. - (call-with-output-file "ChangeLog" - 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" - (("m4_esyscmd_s\\([^)]+\\)") - (string-append "[" ,version "]"))) - - ;; Remove references to non-existent files. - (substitute* "po/POTFILES.in" - (("^plugins/import/.*") "")) - #t))))) - (inputs - `(("clutter" ,clutter) - ("libchamplain" ,libchamplain) - ("lcms" ,lcms) - ("exiv2" ,exiv2) - ("libpng" ,libpng) - ("gtk+" ,gtk+))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("glib" ,glib "bin") ; glib-gettextize - ("intltool" ,intltool) - ("pkg-config" ,pkg-config))) - (home-page "http://www.geeqie.org/") - (synopsis "Lightweight GTK+ based image viewer") - (description - "Geeqie is a lightweight GTK+ based image viewer for Unix like operating + (package + (name "geeqie") + (version "1.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/BestImageViewer/geeqie") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0nf45sh3pwsv98sppcrqj81b6mdi31n1sbc7gn88m8mhpfp1qq6k")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + (arguments + `( ;; Enable support for a "map" pane using GPS data. + #:configure-flags '("--enable-map" + "--enable-gtk3"))) + (inputs + `(("clutter" ,clutter) + ("libchamplain" ,libchamplain) + ("lcms" ,lcms) + ("exiv2" ,exiv2) + ("libpng" ,libpng) + ("gtk+" ,gtk+))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("glib" ,glib "bin") ; glib-gettextize + ("intltool" ,intltool) + ("pkg-config" ,pkg-config))) + (home-page "http://www.geeqie.org/") + (synopsis "Lightweight GTK+ based image viewer") + (description + "Geeqie is a lightweight GTK+ based image viewer for Unix like operating systems. It features: EXIF, IPTC and XMP metadata browsing and editing interoperability; easy integration with other software; geeqie works on files and directories, there is no need to import images; fast preview for many raw image formats; tools for image comparison, sorting and managing photo collection. Geeqie was initially based on GQview.") - (license license:gpl2+)))) + (license license:gpl2+))) (define-public gpicview (package @@ -204,7 +283,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") @@ -220,7 +299,7 @@ It is the default image viewer on LXDE desktop environment.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/muennich/sxiv.git") + (url "https://github.com/muennich/sxiv") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -231,7 +310,7 @@ It is the default image viewer on LXDE desktop environment.") `(#:tests? #f ; no check target #:make-flags (list (string-append "PREFIX=" %output) - "CC=gcc" + (string-append "CC=" ,(cc-for-target)) ;; Xft.h #includes without ‘freetype2/’. The Makefile ;; works around this by hard-coding /usr/include & $PREFIX. (string-append "CPPFLAGS=-I" @@ -240,7 +319,16 @@ It is the default image viewer on LXDE desktop environment.") "V=1") #:phases (modify-phases %standard-phases - (delete 'configure)))) ; no configure script + (delete 'configure) ; no configure script + (add-after 'install 'install-desktop-file + (lambda* (#:key outputs #:allow-other-keys) + (install-file "sxiv.desktop" + (string-append (assoc-ref outputs "out") + "/share/applications")) + #t)) + (add-after 'install 'install-icons + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "-C" "icon" "install" make-flags)))))) (inputs `(("freetype" ,freetype) ("giflib" ,giflib) @@ -266,7 +354,7 @@ it and customize it for your needs.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/hellosiyan/Viewnior.git") + (url "https://github.com/hellosiyan/Viewnior") (commit (string-append name "-" version)))) (file-name (git-file-name name version)) (sha256 @@ -313,16 +401,16 @@ your images. Among its features are: (define-public catimg (package (name "catimg") - (version "2.6.0") + (version "2.7.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/posva/catimg.git") + (url "https://github.com/posva/catimg") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0g9ywbgy162wiam9hc3yqpq5q4gyxa8fj4jskr3fdz8z8jjaabzz")))) + (base32 "0a2dswbv4xddb2l2d55hc43lzvjwrjs5z9am7v6i0p0mi2fmc89s")))) (build-system cmake-build-system) (arguments `(#:tests? #f ; no tests @@ -358,7 +446,7 @@ It supports JPEG, PNG and GIF formats.") (define-public luminance-hdr (package (name "luminance-hdr") - (version "2.4.0") + (version "2.6.0") (source (origin (method url-fetch) (uri (string-append @@ -366,30 +454,32 @@ It supports JPEG, PNG and GIF formats.") version "/luminance-hdr-" version ".tar.bz2")) (sha256 (base32 - "00fldbcizrx8jcnjgq74n3zmbm27dxzl96fxa7q49689mfnlw08l")) - (patches (search-patches "luminance-hdr-qt-printer.patch")))) + "188q0l63nfasqfvwbq4mwx2vh7wsfi2bq9n5nksddspl1qz01lnp")))) (build-system cmake-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("qttools" ,qttools))) (inputs - `(("qtbase" ,qtbase) + `(("qtbase" ,qtbase-5) ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg) ("qtwebkit" ,qtwebkit) ("boost" ,boost) + ("eigen" ,eigen) ;; ("gtest" ,gtest) ("libraw" ,libraw) ("zlib" ,zlib) ("exiv2" ,exiv2) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("lcms" ,lcms) ("openexr" ,openexr) ("fftw" ,fftwf) ("gsl" ,gsl) ("libtiff" ,libtiff))) (arguments - '(#:phases + '(#:tests? #f ;XXX: some tests fail to compile + #:phases (modify-phases %standard-phases (add-after 'set-paths 'add-ilmbase-include-path (lambda* (#:key inputs #:allow-other-keys) @@ -419,83 +509,127 @@ 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 "3.0") + (version "4.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/jurplel/qView.git") + (url "https://github.com/jurplel/qView") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "15a91bs3wcqhgf76wzigbn10hayg628j84pq4j2vaxar94ak0vk7")))) + (base32 "15n9cq7w3ckinnx38hvncxrbkv4qm4k51sal41q4y0pkvhmafhnr")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'configure - (lambda _ - (invoke "qmake"))) - ;; Installation process hard-codes "/usr/bin", possibly - ;; prefixed. - (add-after 'configure 'fix-install-directory (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) - (substitute* "Makefile" - (("\\$\\(INSTALL_ROOT\\)/usr") out)) - #t))) - ;; Don't phone home or show "Checking for updates..." in the - ;; About menu. + (invoke "qmake" (string-append "PREFIX=" out))))) + ;; Don't phone home or show "Checking for updates..." in the About + ;; menu. (add-before 'build 'disable-auto-update (lambda _ (substitute* "src/qvaboutdialog.cpp" - (("ui->updateLabel->setText\\(updateText\\);") "") - (("requestUpdates\\(\\);") "")) + (("qvApp->checkUpdates\\(\\);") "") + (("updateText\\(\\);") "")) #t))))) (inputs - `(("qtbase" ,qtbase) + `(("qtbase" ,qtbase-5) ("qtsvg" ,qtsvg) ("qtimageformats" ,qtimageformats))) (home-page "https://interversehq.com/qview/") @@ -509,19 +643,21 @@ preloading.") (define-public chafa (package (name "chafa") - (version "1.2.2") + (version "1.4.1") (source (origin (method url-fetch) (uri (string-append "https://hpjansson.org/chafa/releases/chafa-" version ".tar.xz")) (sha256 (base32 - "0aa7119514rhsak5i0kgvwllb9z74lnfzfn7dzfhs27fc8cvx1dg")))) + "18rb82bfqj1sj2g4irazx4lwq9q4b4k7my1r0q714vf9yhs41ls6")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("glib" ,glib) + `(("freetype" ,freetype) + ("libjpeg" ,libjpeg-turbo) + ("glib" ,glib) ("imagemagick" ,imagemagick))) (synopsis "Convert images to ANSI/Unicode characters") (description @@ -546,7 +682,7 @@ displayed in a terminal.") (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments - '(#:phases + `(#:phases (modify-phases %standard-phases (delete 'configure) (add-after 'install 'record-absolute-file-names @@ -560,7 +696,7 @@ displayed in a terminal.") (string-append bin "/imv-"))) #t)))) #:make-flags - (list "CC=gcc" + (list ,(string-append "CC=" (cc-for-target)) (string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "CONFIGPREFIX=" (assoc-ref %outputs "out") "/etc")))) @@ -596,3 +732,160 @@ with tiling window managers. Features include: @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))) + +(define-public nomacs + (package + (name "nomacs") + (version "3.16.224") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nomacs/nomacs") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "05d4hqg0gl3g9s2xf1hr7mc7g4cqarcap4nzxxa51fsphw2b8x16")))) + (build-system cmake-build-system) + (arguments + `(#:build-type "Release" ; fails to build with debug info + #:configure-flags (list "-DENABLE_TRANSLATIONS=true" + "-DUSE_SYSTEM_QUAZIP=true" + "-DENABLE_OPENCV=true") + #:tests? #f ; no rule for target 'test' + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'copy-plugins + (lambda* (#:key inputs #:allow-other-keys) + (copy-recursively (assoc-ref inputs "plugins") + "ImageLounge/plugins"))) + (add-after 'copy-plugins 'cd-to-source-dir + (lambda _ (chdir "ImageLounge") #t))))) + (inputs + `(("plugins" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nomacs/nomacs-plugins") + (commit "3.16"))) + (sha256 + (base32 + "1cpdwhfvaxm970nwdc1hc13848a85pqqi176m9xpa3krla9qskml")))) + ("exiv2" ,exiv2) + ("libraw" ,libraw) + ("libtiff" ,libtiff) + ("opencv" ,opencv) + ("python" ,python-wrapper) + ("quazip" ,quazip) + ("qtbase" ,qtbase-5) + ("qtsvg" ,qtsvg))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("qtlinguist" ,qttools))) + (synopsis "Image viewer supporting all common formats") + (description "Nomacs is a simple to use image lounge featuring +semi-transparent widgets that display additional information such as metadata, +thumbnails and histograms. It is able to browse images compressed archives +and add notes to images. + +Nomacs includes image manipulation methods for adjusting brightness, contrast, +saturation, hue, gamma, and exposure. It has a pseudo color function which +allows creating false color images. A unique feature of Nomacs is the +synchronization of multiple instances.") + (home-page "https://nomacs.org/") + (license license:gpl3+))) + +(define-public xzgv + (package + (name "xzgv") + (version "0.9.2") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/xzgv/" + version "/xzgv-" version ".tar.gz")) + (sha256 + (base32 "17l1xr9v07ggwga3vn0z1i4lnwjrr20rr8z1kjbw71aaijxl18i5")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'override-target-directory + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "config.mk" + (("/usr/local") (assoc-ref outputs "out"))))) + (delete 'configure) ; no configure script + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "src/xzgv" bin))))) ; just install the executable + #:tests? #f)) ; no rule for target 'test' + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("gtk+" ,gtk+-2) + ("libexif" ,libexif))) + (home-page "https://sourceforge.net/projects/xzgv/") + (synopsis "Picture viewer for X with a thumbnail-based selector") + (description + "xzgv is a fast image viewer that provides extensive keyboard support.") + (license license:gpl2+)))