aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2017-12-09 22:16:08 +0100
committerTobias Geerinckx-Rice <me@tobias.gr>2017-12-12 05:12:13 +0100
commit8d8d227bbbe9bd1981bc63704c7f3fe029001f53 (patch)
treed62357cedeef6ef3dba99170c23a18b672869287
parentc1c825844392d2db2414ec0c07dce0d882b6551d (diff)
downloadguix-8d8d227bbbe9bd1981bc63704c7f3fe029001f53.tar
guix-8d8d227bbbe9bd1981bc63704c7f3fe029001f53.tar.gz
gnu: Add fbcat.
* gnu/packages/linux.scm (fbcat): New public variable.
-rw-r--r--gnu/packages/linux.scm77
1 files changed, 77 insertions, 0 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 3e3d110129..a25d2cd9e1 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -78,6 +78,7 @@
#:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
+ #:use-module (gnu packages netpbm)
#:use-module (gnu packages networking)
#:use-module (gnu packages ninja)
#:use-module (gnu packages perl)
@@ -4502,3 +4503,79 @@ interfaces in parallel environments.")
Targa (@dfn{.tga}) image. It can be used by anyone with read access to the
relevant @file{/dev/vcs*} file(s).")
(license license:gpl2)))
+
+(define-public fbcat
+ (package
+ (name "fbcat")
+ (version "0.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/jwilk/fbcat/releases/download/"
+ version "/" name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1dla1na3nf3s4xy0p6w0v54zipg1x8c14yqsw8w9qjzhchr4caxw"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ ;; For building the man pages.
+ `(("docbook-xml" ,docbook-xml)
+ ("docbook-xsl" ,docbook-xsl)
+ ("xsltproc" ,libxslt)))
+ (inputs
+ ;; The ‘fbgrab’ wrapper can use one of several PPM-to-PNG converters. We
+ ;; choose netpbm simply because it's the smallest. It still adds ~94 MiB
+ ;; to an otherwise tiny package, so we put ‘fbgrab’ in its own output.
+ `(("pnmtopng" ,netpbm)))
+ (outputs (list "out" "fbgrab"))
+ (arguments
+ `(#:make-flags (list "CC=gcc")
+ #:tests? #f ; no tests
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-docbook-location
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "doc/Makefile"
+ (("http://docbook.sourceforge.net/release/xsl/current")
+ (string-append (assoc-ref inputs "docbook-xsl")
+ "/xml/xsl/docbook-xsl-"
+ ,(package-version docbook-xsl))))
+ #t))
+ (delete 'configure) ; no configure script
+ (add-after 'build 'build-documentation
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (zero? (apply system* "make" "-C" "doc"
+ make-flags))))
+ (add-after 'build 'qualify-references
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((pnmtopng (assoc-ref inputs "pnmtopng"))
+ (out (assoc-ref outputs "out")))
+ (substitute* "fbgrab"
+ (("fbcat" all)
+ (string-append out "/bin/" all))
+ (("pnmtopng" all)
+ (string-append pnmtopng "/bin/" all)))
+ #t)))
+ (replace 'install
+ ;; The Makefile lacks an ‘install’ target. Install files manually.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (out:fbgrab (assoc-ref outputs "fbgrab")))
+ (install-file "fbcat" (string-append out "/bin"))
+ (install-file "doc/fbcat.1"
+ (string-append out "/share/man/man1"))
+ (install-file "fbgrab" (string-append out:fbgrab "/bin"))
+ (install-file "doc/fbgrab.1"
+ (string-append out:fbgrab "/share/man/man1"))
+ #t))))))
+ (home-page "https://jwilk.net/software/fbcat")
+ (synopsis "Take a screenshot of the contents of the Linux framebuffer")
+ (description
+ "fbcat saves the contents of the Linux framebuffer (@file{/dev/fb*}), or
+a dump therof. It supports a wide range of drivers and pixel formats.
+@command{fbcat} can take screenshots of virtually any application that can be
+made to write its output to the framebuffer, including (but not limited to)
+text-mode or graphical applications that don't use a display server.
+
+Also included is @command{fbgrab}, a wrapper around @command{fbcat} that
+emulates the behaviour of Gunnar Monell's older fbgrab utility.")
+ (license license:gpl2)))