gnu: Add perl-crypt-openssl-bignum.
[jackhill/guix/guix.git] / gnu / packages / terminals.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
3 ;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com>
4 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
5 ;;;
6 ;;; This file is part of GNU Guix.
7 ;;;
8 ;;; GNU Guix is free software; you can redistribute it and/or modify it
9 ;;; under the terms of the GNU General Public License as published by
10 ;;; the Free Software Foundation; either version 3 of the License, or (at
11 ;;; your option) any later version.
12 ;;;
13 ;;; GNU Guix is distributed in the hope that it will be useful, but
14 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 ;;; GNU General Public License for more details.
17 ;;;
18 ;;; You should have received a copy of the GNU General Public License
19 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20
21 (define-module (gnu packages terminals)
22 #:use-module ((guix licenses) #:prefix license:)
23 #:use-module (guix build utils)
24 #:use-module (guix build-system gnu)
25 #:use-module (guix build-system python)
26 #:use-module (guix download)
27 #:use-module (guix git-download)
28 #:use-module (guix packages)
29 #:use-module (gnu packages autotools)
30 #:use-module (gnu packages gettext)
31 #:use-module (gnu packages glib)
32 #:use-module (gnu packages gnome)
33 #:use-module (gnu packages gtk)
34 #:use-module (gnu packages pkg-config)
35 #:use-module (gnu packages python)
36 #:use-module (gnu packages wm)
37 #:use-module (gnu packages ncurses)
38 #:use-module (gnu packages gtk)
39 #:use-module (gnu packages gnome))
40
41 (define-public tilda
42 (package
43 (name "tilda")
44 (version "1.3.1")
45 (source (origin
46 (method url-fetch)
47 (uri (string-append "https://github.com/lanoxx/tilda/archive/"
48 "tilda-" version ".tar.gz"))
49 (sha256
50 (base32
51 "1nh0kw8f6srriglj55gmir1hvakcwrak1wcydz3vpnmwipgy6jib"))))
52 (build-system gnu-build-system)
53 (arguments
54 `(#:phases (modify-phases %standard-phases
55 (add-before 'patch-source-shebangs 'autogen
56 (lambda _ ; Avoid running ./configure.
57 (substitute* "autogen.sh"
58 (("^.*\\$srcdir/configure.*") ""))
59 (zero? (system* "sh" "autogen.sh")))))))
60 (native-inputs
61 `(("autoconf" ,autoconf)
62 ("automake" ,automake)
63 ("gettext" ,gnu-gettext)
64 ("pkg-config" ,pkg-config)))
65 (inputs
66 `(("glib" ,glib "bin")
67 ("gtk+" ,gtk+)
68 ("libconfuse" ,libconfuse)
69 ("vte" ,vte)))
70 (synopsis "GTK+-based drop-down terminal")
71 (description "Tilda is a terminal emulator similar to normal terminals like
72 gnome-terminal (GNOME) or Konsole (KDE), with the difference that it drops down
73 from the edge of a screen when a certain configurable hotkey is pressed. This
74 is similar to the built-in consoles in some applications. Tilda is highly
75 configureable through a graphical wizard.")
76 (home-page "https://github.com/lanoxx/tilda")
77 (license license:gpl2+)))
78
79 (define-public termite
80 (package
81 (name "termite")
82 (version "11")
83 (source
84 (origin
85 (method git-fetch)
86 (uri (git-reference
87 (url (string-append "https://github.com/thestinger/"
88 name ".git"))
89 (commit (string-append "v" version))
90 (recursive? #t)))
91 (file-name (string-append name "-" version "-checkout"))
92 (sha256
93 (base32
94 "1cw4yw7n9m2si8b7zcfyz9pyihncabxm5g39v1mxslfajxgwzmd8"))))
95 (build-system gnu-build-system)
96 (arguments
97 `(#:phases (alist-delete 'configure %standard-phases)
98 #:tests? #f
99 ;; This sets the destination when installing the necessary terminal
100 ;; capability data, which are not provided by 'ncurses'. See
101 ;; <https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html>.
102 #:make-flags (list "PREFIX="
103 (string-append "VERSION=v" (version))
104 (string-append "DESTDIR="
105 (assoc-ref %outputs "out")))))
106 (inputs
107 `(("vte", vte-ng)
108 ("gtk+", gtk+)
109 ("ncurses", ncurses)))
110 (native-inputs
111 `(("pkg-config" ,pkg-config)))
112
113 ;; FIXME: This should only be located in 'ncurses'. Nonetheless it is
114 ;; provided for usability reasons. See <https://bugs.gnu.org/22138>.
115 (native-search-paths
116 (list (search-path-specification
117 (variable "TERMINFO_DIRS")
118 (files '("share/terminfo")))))
119 (home-page "https://github.com/thestinger/termite/")
120 (synopsis "Keyboard-centric, VTE-based terminal")
121 (description "Termite is a minimal terminal emulator designed for use with
122 tiling window managers. It is a modal application, similar to Vim, with an
123 insert mode and command mode where keybindings have different functions.")
124
125 ;; Files under util/ are under the Expat license; the rest is LGPLv2+.
126 (license license:lgpl2.0+)))
127
128 (define-public asciinema
129 (package
130 (name "asciinema")
131 (version "1.3.0")
132 (source
133 (origin
134 (method url-fetch)
135 (uri (string-append
136 "https://pypi.python.org/packages/06/96/93947d9be78aebb7985014fdf"
137 "4d84896dd0f62514d922ee03f5bb55a21fb/asciinema-" version
138 ".tar.gz"))
139 (sha256
140 (base32
141 "1crdm9zfdbjflvz1gsqvy5zsbgwdfkj34z69kg6h5by70rrs1hdc"))))
142 (build-system python-build-system)
143 (arguments
144 `(#:phases
145 (modify-phases %standard-phases
146 (add-before 'build 'patch-exec-paths
147 (lambda* (#:key inputs #:allow-other-keys)
148 (let ((ncurses (assoc-ref inputs "ncurses")))
149 (substitute* "asciinema/recorder.py"
150 (("'tput'")
151 (string-append "'" ncurses "/bin/tput'"))))
152 #t)))))
153 (inputs `(("ncurses" ,ncurses)
154 ("python-setuptools" ,python-setuptools)))
155 (home-page "https://asciinema.org")
156 (synopsis "Terminal session recorder")
157 (description
158 "Use asciinema to record and share your terminal sessions, the right way.
159 Forget screen recording apps and blurry video. Enjoy a lightweight, purely
160 text-based approach to terminal recording.")
161 (license license:gpl3)))