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>
6 ;;; This file is part of GNU Guix.
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.
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.
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/>.
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))
47 (uri (string-append "https://github.com/lanoxx/tilda/archive/"
48 "tilda-" version ".tar.gz"))
51 "1nh0kw8f6srriglj55gmir1hvakcwrak1wcydz3vpnmwipgy6jib"))))
52 (build-system gnu-build-system)
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")))))))
61 `(("autoconf" ,autoconf)
62 ("automake" ,automake)
63 ("gettext" ,gnu-gettext)
64 ("pkg-config" ,pkg-config)))
66 `(("glib" ,glib "bin")
68 ("libconfuse" ,libconfuse)
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+)))
79 (define-public termite
87 (url (string-append "https://github.com/thestinger/"
89 (commit (string-append "v" version))
91 (file-name (string-append name "-" version "-checkout"))
94 "1cw4yw7n9m2si8b7zcfyz9pyihncabxm5g39v1mxslfajxgwzmd8"))))
95 (build-system gnu-build-system)
97 `(#:phases (alist-delete 'configure %standard-phases)
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")))))
109 ("ncurses", ncurses)))
111 `(("pkg-config" ,pkg-config)))
113 ;; FIXME: This should only be located in 'ncurses'. Nonetheless it is
114 ;; provided for usability reasons. See <https://bugs.gnu.org/22138>.
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.")
125 ;; Files under util/ are under the Expat license; the rest is LGPLv2+.
126 (license license:lgpl2.0+)))
128 (define-public asciinema
136 "https://pypi.python.org/packages/06/96/93947d9be78aebb7985014fdf"
137 "4d84896dd0f62514d922ee03f5bb55a21fb/asciinema-" version
141 "1crdm9zfdbjflvz1gsqvy5zsbgwdfkj34z69kg6h5by70rrs1hdc"))))
142 (build-system python-build-system)
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"
151 (string-append "'" ncurses "/bin/tput'"))))
153 (inputs `(("ncurses" ,ncurses)
154 ("python-setuptools" ,python-setuptools)))
155 (home-page "https://asciinema.org")
156 (synopsis "Terminal session recorder")
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)))