gnu: python-statsmodels: Fix build
[jackhill/guix/guix.git] / gnu / packages / terminals.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
3 ;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com>
4 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
5 ;;; Copyright © 2016 David Craven <david@craven.ch>
6 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
7 ;;;
8 ;;; This file is part of GNU Guix.
9 ;;;
10 ;;; GNU Guix is free software; you can redistribute it and/or modify it
11 ;;; under the terms of the GNU General Public License as published by
12 ;;; the Free Software Foundation; either version 3 of the License, or (at
13 ;;; your option) any later version.
14 ;;;
15 ;;; GNU Guix is distributed in the hope that it will be useful, but
16 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;;; GNU General Public License for more details.
19 ;;;
20 ;;; You should have received a copy of the GNU General Public License
21 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23 (define-module (gnu packages terminals)
24 #:use-module ((guix licenses) #:prefix license:)
25 #:use-module (guix build utils)
26 #:use-module (guix build-system gnu)
27 #:use-module (guix build-system python)
28 #:use-module (guix download)
29 #:use-module (guix git-download)
30 #:use-module (guix packages)
31 #:use-module (gnu packages autotools)
32 #:use-module (gnu packages freedesktop)
33 #:use-module (gnu packages gettext)
34 #:use-module (gnu packages gl)
35 #:use-module (gnu packages glib)
36 #:use-module (gnu packages gnome)
37 #:use-module (gnu packages gtk)
38 #:use-module (gnu packages linux)
39 #:use-module (gnu packages pkg-config)
40 #:use-module (gnu packages python)
41 #:use-module (gnu packages wm)
42 #:use-module (gnu packages ncurses)
43 #:use-module (gnu packages gtk)
44 #:use-module (gnu packages gnome)
45 #:use-module (gnu packages xdisorg)
46 #:use-module (gnu packages xml)
47 #:use-module (gnu packages docbook)
48 #:use-module (srfi srfi-26))
49
50 (define-public tilda
51 (package
52 (name "tilda")
53 (version "1.3.3")
54 (source (origin
55 (method url-fetch)
56 (uri (string-append "https://github.com/lanoxx/tilda/archive/"
57 "tilda-" version ".tar.gz"))
58 (sha256
59 (base32
60 "1cc4qbg1m3i04lj5p6i6xbd0zvy1320pxdgmjhz5p3j95ibsbfki"))))
61 (build-system gnu-build-system)
62 (arguments
63 `(#:phases (modify-phases %standard-phases
64 (add-before 'patch-source-shebangs 'autogen
65 (lambda _ ; Avoid running ./configure.
66 (substitute* "autogen.sh"
67 (("^.*\\$srcdir/configure.*") ""))
68 (zero? (system* "sh" "autogen.sh")))))))
69 (native-inputs
70 `(("autoconf" ,autoconf)
71 ("automake" ,automake)
72 ("gettext" ,gettext-minimal)
73 ("pkg-config" ,pkg-config)))
74 (inputs
75 `(("glib" ,glib "bin")
76 ("gtk+" ,gtk+)
77 ("libconfuse" ,libconfuse)
78 ("vte" ,vte)))
79 (synopsis "GTK+-based drop-down terminal")
80 (description "Tilda is a terminal emulator similar to normal terminals like
81 gnome-terminal (GNOME) or Konsole (KDE), with the difference that it drops down
82 from the edge of a screen when a certain configurable hotkey is pressed. This
83 is similar to the built-in consoles in some applications. Tilda is highly
84 configureable through a graphical wizard.")
85 (home-page "https://github.com/lanoxx/tilda")
86 (license license:gpl2+)))
87
88 (define-public termite
89 (package
90 (name "termite")
91 (version "12")
92 (source
93 (origin
94 (method git-fetch)
95 (uri (git-reference
96 (url (string-append "https://github.com/thestinger/"
97 name ".git"))
98 (commit (string-append "v" version))
99 (recursive? #t)))
100 (file-name (string-append name "-" version "-checkout"))
101 (sha256
102 (base32
103 "0s6dyg3vcqk5qcx90bs24wdnd3p56rdjdcanx4pcxvp6ksjl61jz"))))
104 (build-system gnu-build-system)
105 (arguments
106 `(#:phases
107 (modify-phases %standard-phases
108 (delete 'configure))
109 #:tests? #f
110 ;; This sets the destination when installing the necessary terminal
111 ;; capability data, which are not provided by 'ncurses'. See
112 ;; <https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html>.
113 #:make-flags (list "PREFIX="
114 (string-append "VERSION=v" (version))
115 (string-append "DESTDIR="
116 (assoc-ref %outputs "out")))))
117 (inputs
118 `(("vte", vte-ng)
119 ("gtk+", gtk+)
120 ("ncurses", ncurses)))
121 (native-inputs
122 `(("pkg-config" ,pkg-config)))
123
124 ;; FIXME: This should only be located in 'ncurses'. Nonetheless it is
125 ;; provided for usability reasons. See <https://bugs.gnu.org/22138>.
126 (native-search-paths
127 (list (search-path-specification
128 (variable "TERMINFO_DIRS")
129 (files '("share/terminfo")))))
130 (home-page "https://github.com/thestinger/termite/")
131 (synopsis "Keyboard-centric, VTE-based terminal")
132 (description "Termite is a minimal terminal emulator designed for use with
133 tiling window managers. It is a modal application, similar to Vim, with an
134 insert mode and command mode where keybindings have different functions.")
135
136 ;; Files under util/ are under the Expat license; the rest is LGPLv2+.
137 (license license:lgpl2.0+)))
138
139 (define-public asciinema
140 (package
141 (name "asciinema")
142 (version "1.3.0")
143 (source
144 (origin
145 (method url-fetch)
146 (uri (string-append
147 "https://pypi.python.org/packages/06/96/93947d9be78aebb7985014fdf"
148 "4d84896dd0f62514d922ee03f5bb55a21fb/asciinema-" version
149 ".tar.gz"))
150 (sha256
151 (base32
152 "1crdm9zfdbjflvz1gsqvy5zsbgwdfkj34z69kg6h5by70rrs1hdc"))))
153 (build-system python-build-system)
154 (arguments
155 `(#:phases
156 (modify-phases %standard-phases
157 (add-before 'build 'patch-exec-paths
158 (lambda* (#:key inputs #:allow-other-keys)
159 (let ((ncurses (assoc-ref inputs "ncurses")))
160 (substitute* "asciinema/recorder.py"
161 (("'tput'")
162 (string-append "'" ncurses "/bin/tput'"))))
163 #t)))))
164 (inputs `(("ncurses" ,ncurses)))
165 (home-page "https://asciinema.org")
166 (synopsis "Terminal session recorder")
167 (description
168 "Use asciinema to record and share your terminal sessions, the right way.
169 Forget screen recording apps and blurry video. Enjoy a lightweight, purely
170 text-based approach to terminal recording.")
171 (license license:gpl3)))
172
173 (define-public libtsm
174 (package
175 (name "libtsm")
176 (version "3")
177 (source (origin
178 (method url-fetch)
179 (uri (string-append
180 "https://freedesktop.org/software/kmscon/releases/"
181 "libtsm-" version ".tar.xz"))
182 (sha256
183 (base32
184 "01ygwrsxfii0pngfikgqsb4fxp8n1bbs47l7hck81h9b9bc1ah8i"))))
185 (build-system gnu-build-system)
186 (native-inputs
187 `(("pkg-config" ,pkg-config)))
188 (inputs
189 `(("libxkbcommon" ,libxkbcommon)))
190 (synopsis "Xterm state machine library")
191 (description "TSM is a state machine for DEC VT100-VT520 compatible
192 terminal emulators. It tries to support all common standards while keeping
193 compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.")
194 (home-page "https://www.freedesktop.org/wiki/Software/libtsm")
195 ;; Hash table implementation is lgpl2.1+ licensed.
196 ;; The wcwidth implementation in external/wcwidth.{h,c} uses a license
197 ;; derived from ISC.
198 ;; UCS-4 to UTF-8 encoding is copied from "terminology" which is released
199 ;; under the bsd 2 license.
200 (license (list license:expat license:lgpl2.1+ license:isc license:bsd-2))))
201
202 (define-public kmscon
203 (package
204 (name "kmscon")
205 (version "8")
206 (source (origin
207 (method url-fetch)
208 (uri (string-append
209 "https://freedesktop.org/software/kmscon/releases/"
210 "kmscon-" version ".tar.xz"))
211 (sha256
212 (base32
213 "0axfwrp3c8f4gb67ap2sqnkn75idpiw09s35wwn6kgagvhf1rc0a"))
214 (modules '((guix build utils)))
215 (snippet
216 ;; Use elogind instead of systemd.
217 '(begin
218 (substitute* "configure"
219 (("libsystemd-daemon libsystemd-login")
220 "libelogind"))
221 (substitute* "src/uterm_systemd.c"
222 (("#include <systemd/sd-login.h>")
223 "#include <elogind/sd-login.h>")
224 ;; We don't have this header.
225 (("#include <systemd/sd-daemon\\.h>")
226 "")
227 ;; Replace the call to 'sd_booted' by the truth value.
228 (("sd_booted\\(\\)")
229 "1"))))))
230 (build-system gnu-build-system)
231 (native-inputs
232 `(("pkg-config" ,pkg-config)
233 ("libxslt" ,libxslt) ;to build the man page
234 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
235 ("docbook-xsl" ,docbook-xsl)))
236 (inputs
237 `(("libdrm" ,libdrm)
238 ("libtsm" ,libtsm)
239 ("libxkbcommon" ,libxkbcommon)
240 ("logind" ,elogind)
241 ("mesa" ,mesa)
242 ("pango" ,pango)
243 ("udev" ,eudev)))
244 (synopsis "Linux KMS-based terminal emulator")
245 (description "Kmscon is a terminal emulator based on Linux's @dfn{kernel
246 mode setting} (KMS). It can replace the in-kernel virtual terminal (VT)
247 implementation with a user-space console. Compared to the Linux console,
248 kmscon provides enhanced features including XKB-compatible internationalized
249 keyboard support, UTF-8 input/font support, hardware-accelerated rendering,
250 multi-seat support, a replacement for @command{mingetty}, and more.")
251 (home-page "https://www.freedesktop.org/wiki/Software/kmscon")
252 ;; Hash table implementation is lgpl2.1+ licensed.
253 ;; The wcwidth implementation in external/wcwidth.{h,c} uses a license
254 ;; derived from ISC.
255 ;; UCS-4 to UTF-8 encoding is copied from "terminology" which is released
256 ;; under the bsd 2 license.
257 ;; Unifont-Font is from http://unifoundry.com/unifont.html and licensed
258 ;; under the terms of the GNU GPL.
259 (license (list license:expat license:lgpl2.1+ license:bsd-2
260 license:gpl2+))
261 (supported-systems (filter (cut string-suffix? "-linux" <>)
262 %supported-systems))))
263
264 (define-public picocom
265 (package
266 (name "picocom")
267 (version "2.2")
268 (source (origin
269 (method url-fetch)
270 (uri (string-append
271 "https://github.com/npat-efault/picocom"
272 "/archive/" version ".tar.gz"))
273 (file-name (string-append name "-" version ".tar.gz"))
274 (sha256
275 (base32
276 "1knl6dglnrynx1fhy21nylw56i1q3dkizkgxzkq42mb7ilah8f9y"))))
277 (build-system gnu-build-system)
278 (arguments
279 `(#:make-flags '("CC=gcc")
280 #:tests? #f ; No tests
281 #:phases
282 (modify-phases %standard-phases
283 (delete 'configure)
284 (replace 'install
285 (lambda* (#:key outputs #:allow-other-keys)
286 (let* ((out (assoc-ref outputs "out"))
287 (bin (string-append out "/bin"))
288 (man (string-append out "/share/man/man1")))
289 (install-file "picocom" bin)
290 (install-file "picocom.1" man)))))))
291 (home-page "https://github.com/npat-efault/picocom")
292 (synopsis "Minimal dumb-terminal emulation program")
293 (description "It was designed to serve as a simple, manual, modem
294 configuration, testing, and debugging tool. It has also serves well
295 as a low-tech serial communications program to allow access to all
296 types of devices that provide serial consoles.")
297 (license license:gpl2+)))