Commit | Line | Data |
---|---|---|
6a7e1a18 EF |
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> | |
89978a0a | 3 | ;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com> |
cb55f9c6 | 4 | ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> |
6a7e1a18 EF |
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) | |
cb55f9c6 | 25 | #:use-module (guix build-system python) |
6a7e1a18 | 26 | #:use-module (guix download) |
89978a0a | 27 | #:use-module (guix git-download) |
6a7e1a18 EF |
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) | |
cb55f9c6 | 35 | #:use-module (gnu packages python) |
89978a0a MO |
36 | #:use-module (gnu packages wm) |
37 | #:use-module (gnu packages ncurses) | |
38 | #:use-module (gnu packages gtk) | |
39 | #:use-module (gnu packages gnome)) | |
6a7e1a18 EF |
40 | |
41 | (define-public tilda | |
42 | (package | |
43 | (name "tilda") | |
ff80b963 | 44 | (version "1.3.1") |
6a7e1a18 EF |
45 | (source (origin |
46 | (method url-fetch) | |
47 | (uri (string-append "https://github.com/lanoxx/tilda/archive/" | |
d2a52108 | 48 | "tilda-" version ".tar.gz")) |
6a7e1a18 EF |
49 | (sha256 |
50 | (base32 | |
ff80b963 | 51 | "1nh0kw8f6srriglj55gmir1hvakcwrak1wcydz3vpnmwipgy6jib")))) |
6a7e1a18 EF |
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) | |
d2a52108 | 64 | ("pkg-config" ,pkg-config))) |
6a7e1a18 EF |
65 | (inputs |
66 | `(("glib" ,glib "bin") | |
67 | ("gtk+" ,gtk+) | |
68 | ("libconfuse" ,libconfuse) | |
d2a52108 | 69 | ("vte" ,vte))) |
6a7e1a18 EF |
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+))) | |
89978a0a MO |
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+))) | |
cb55f9c6 AG |
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))) |