summary refs log tree commit diff
path: root/gnu/packages/terminals.scm
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-01-13 23:39:52 -0500
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2021-01-13 23:45:53 -0500
commit01f0707207741ce2a5d7509a175464799b08aea6 (patch)
tree08e8f4da56f26363c3b53e0442a21b286b55e0e5 /gnu/packages/terminals.scm
parent734bcf13139119daf8685f93b056c3422dbfa264 (diff)
parent6985a1acb3e9cc4cad8b6f63d77154842d25c929 (diff)
downloadguix-01f0707207741ce2a5d7509a175464799b08aea6.tar.gz
Merge branch 'staging' into 'core-updates'.
Conflicts:

	gnu/local.mk
	gnu/packages/cmake.scm
	gnu/packages/curl.scm
	gnu/packages/gl.scm
	gnu/packages/glib.scm
	gnu/packages/guile.scm
	gnu/packages/node.scm
	gnu/packages/openldap.scm
	gnu/packages/package-management.scm
	gnu/packages/python-xyz.scm
	gnu/packages/python.scm
	gnu/packages/tls.scm
	gnu/packages/vpn.scm
	gnu/packages/xorg.scm
Diffstat (limited to 'gnu/packages/terminals.scm')
-rw-r--r--gnu/packages/terminals.scm192
1 files changed, 147 insertions, 45 deletions
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index f6ad90024b..74e1937bbc 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com>
 ;;; Copyright © 2016, 2017, 2019 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 David Craven <david@craven.ch>
@@ -21,6 +21,8 @@
 ;;; Copyright © 2020 Valentin Ignatev <valentignatev@gmail.com>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,12 +46,15 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system go)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix packages)
+  #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages build-tools)   ;for meson-0.55
   #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
@@ -61,6 +66,7 @@
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
@@ -70,6 +76,7 @@
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
@@ -92,7 +99,7 @@
 (define-public tilda
   (package
     (name "tilda")
-    (version "1.5.2")
+    (version "1.5.4")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -101,8 +108,15 @@
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0psq0f4s0s92bba6wwcf6b0j7i59b76svqxhvpavwv53yvhmmamn"))))
+                "0q2i9ny8sh7zjzgvkx8vcvk593wcvchjc4xq4nrlqdd377r7cg5q"))))
     (build-system glib-or-gtk-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'make-po-writable
+           (lambda _
+             (for-each make-file-writable (find-files "po" "."))
+             #t)))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -339,20 +353,28 @@ multi-seat support, a replacement for @command{mingetty}, and more.")
 (define-public libtermkey
   (package
     (name "libtermkey")
-    (version "0.21.1")
+    (version "0.22")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.leonerd.org.uk/code/libtermkey/"
                                   "libtermkey-" version ".tar.gz"))
               (sha256
-               (base32 "0psd0kf10q5ixfima0mxz10syy7qq1ilz1npr0rz862xycvzgjyf"))))
+               (base32 "002606rrxh5f6l6jrikl0dyxsknscdamq10av21xm0xa98ybsib9"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:make-flags (list
-                     "CC=gcc"
+     `(#:make-flags (list
+                     (string-append "CC=" ,(cc-for-target))
                      (string-append "PREFIX=" (assoc-ref %outputs "out")))
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure))  ; no configure script
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ; no configure script
+         (add-before 'check 'patch-failing-test
+           ;; XXX This undoes an upstream change in version 0.22 which ‘ensures
+           ;; that the hooked function can invent TI strings for new terminal
+           ;; types’.  That fails in the build environment.  Why?
+           (lambda _
+             (substitute* "t/40ti-override.c"
+               (("vt750") "vt100")))))
        #:test-target "test"))
     (inputs `(("ncurses" ,ncurses)))
     (native-inputs `(("libtool" ,libtool)
@@ -677,6 +699,46 @@ eye-candy, customizable, and reasonably lightweight.")
                 license:x11
                 license:bsd-3)))))
 
+(define-public foot
+  (package
+    (name "foot")
+    (version "1.5.4")
+    (home-page "https://codeberg.org/dnkl/foot")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference (url home-page) (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0y6xfsldz5lwy6kp5dy9s27pnii7n5zj754wglvz9d9fp5lkl6id"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:meson ,meson-0.55
+       ;; Using a "release" build is recommended both for performance, and
+       ;; also to address a GCC 10 issue when doing PGO builds.
+       #:build-type "release"
+       ;; Enable LTO as recommended by INSTALL.md.
+       #:configure-flags '("-Db_lto=true")))
+    (native-inputs
+     `(;; Foot makes use of modern C features and needs a newer compiler.
+       ;; Remove when the default compiler is > GCC 7.
+       ("gcc" ,gcc-10)
+       ("ncurses" ,ncurses)             ;for 'tic'
+       ("pkg-config" ,pkg-config)
+       ("scdoc" ,scdoc)
+       ("wayland-protocols" ,wayland-protocols)))
+    (inputs
+     `(("fcft" ,fcft)
+       ("libxkbcommon" ,libxkbcommon)
+       ("wayland" ,wayland)))
+    (synopsis "Wayland-native terminal emulator")
+    (description
+     "@command{foot} is a terminal emulator for systems using the Wayland
+display server.  It is designed to be fast, lightweight, and independent of
+desktop environments.  It can be used as a standalone terminal and also has
+a server/client mode.")
+    (license license:expat)))
+
 (define-public sakura
   (package
     (name "sakura")
@@ -870,14 +932,14 @@ than a terminal.")
 (define-public python-curtsies
   (package
     (name "python-curtsies")
-    (version "0.2.11")
+    (version "0.3.4")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "curtsies" version))
        (sha256
         (base32
-         "1vljmw3sy6lrqahhpyg4gk13mzcx3mwhvg8s41698ms3cpgkjipc"))))
+         "019bpf5wmng4f6ic2ykg893ypfihpfvzi6dhblcagfwbincl79ac"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -892,7 +954,7 @@ than a terminal.")
      `(("python-mock" ,python-mock)
        ("python-pyte" ,python-pyte)
        ("python-nose" ,python-nose)))
-    (home-page "https://github.com/thomasballinger/curtsies")
+    (home-page "https://github.com/bpython/curtsies")
     (synopsis "Library for curses-like terminal interaction with colored
 strings")
     (description "Curtsies is a Python library for interacting with the
@@ -900,9 +962,6 @@ terminal.  It features string-like objects which carry formatting information,
 per-line fullscreen terminal rendering, and keyboard input event reporting.")
     (license license:expat)))
 
-(define-public python2-curtsies
-  (package-with-python2 python-curtsies))
-
 (define-public tmate
   (package
     (name "tmate")
@@ -937,7 +996,7 @@ tmux.")
 (define-public kitty
   (package
     (name "kitty")
-    (version "0.16.0")
+    (version "0.19.3")
     (home-page "https://sw.kovidgoyal.net/kitty/")
     (source
      (origin
@@ -947,7 +1006,7 @@ tmux.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1bszyddar0g1gdz67h8rd3gbrdhi6ahjg7j14cjiqxm1938z9ajf"))
+        (base32 "0r49bybqy6c0n1lz6yc85py80wb40w757m60f5rszjf200wnyl6s"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -962,46 +1021,53 @@ tmux.")
               "SPHINXBUILD = sphinx-build\n"))
            #t))))
     (build-system gnu-build-system)
-    (inputs
-     `(("python" ,python)
-       ("harfbuzz" ,harfbuzz)
-       ("zlib" ,zlib)
-       ("libcanberra" ,libcanberra)
-       ("libpng" ,libpng)
-       ("freetype" ,freetype)
-       ("fontconfig" ,fontconfig)
-       ("pygments" ,python-pygments)
-       ("wayland" ,wayland)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("libxrandr" ,libxrandr)
-       ("libdbus" ,dbus)
+     `(("libdbus" ,dbus)
+       ("libgl1-mesa" ,mesa)
        ("libxcursor" ,libxcursor)
        ("libxi" ,libxi)
        ("libxinerama" ,libxinerama)
-       ("libgl1-mesa" ,mesa)
        ("libxkbcommon" ,libxkbcommon)
-       ("sphinx" ,python-sphinx)
+       ("libxrandr" ,libxrandr)
        ("ncurses" ,ncurses) ;; for tic command
+       ("pkg-config" ,pkg-config)
+       ("sphinx" ,python-sphinx)
        ("wayland-protocols" ,wayland-protocols)))
+    (inputs
+     `(("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("harfbuzz" ,harfbuzz)
+       ("lcms" ,lcms)
+       ("libcanberra" ,libcanberra)
+       ("libpng" ,libpng)
+       ("pygments" ,python-pygments)
+       ("python" ,python-wrapper)
+       ("wayland" ,wayland)
+       ("zlib" ,zlib)))
     (arguments
      '(#:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  ;; Wayland backend requires EGL, which isn't found
-                  ;; out-of-the-box for some reason. Hard-code it instead.
-                  (add-after 'unpack 'hard-code-libegl
-                    (lambda _
-                      (let* ((mesa (assoc-ref %build-inputs "libgl1-mesa"))
-                             (libegl (string-append mesa "/lib/libEGL.so.1")))
-                        (substitute* "glfw/egl_context.c"
-                                     (("libEGL.so.1") libegl)))
-                      #t))
+                  (delete 'configure)   ;no configure script
                   (replace 'build
-                    (lambda _
-                      (invoke "python3" "setup.py" "linux-package")))
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      ;; The "kitty" sub-directory must be writable prior to
+                      ;; configuration (e.g., un-setting updates).
+                      (for-each make-file-writable (find-files "kitty"))
+
+                      (invoke "python3" "setup.py" "linux-package"
+                              ;; Do not phone home.
+                              "--update-check-interval=0"
+                              ;; Wayland backend requires EGL, which isn't
+                              ;; found out-of-the-box for some reason.
+                              (string-append "--egl-library="
+                                             (assoc-ref inputs "libgl1-mesa")
+                                             "/lib/libEGL.so.1"))))
                   (replace 'check
                     (lambda _
-                      (invoke "python3" "setup.py" "test")))
+                      ;; Fix "cannot find kitty executable" error when running
+                      ;; tests.
+                      (setenv "PATH" (string-append "linux-package/bin:"
+                                                    (getenv "PATH")))
+                      (invoke "python3" "test.py")))
                   (add-before 'install 'rm-pycache
                     ;; created python cache __pycache__ are non deterministic
                     (lambda _
@@ -1359,3 +1425,39 @@ blazingly fast.  By making sane choices for defaults, Alacritty requires no
 additional setup.  However, it does allow configuration of many aspects of the
 terminal.  Note that you need support for OpenGL 3.2 or higher.")
     (license license:asl2.0)))
+
+(define-public bootterm
+  (package
+    (name "bootterm")
+    (version "0.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/wtarreau/bootterm")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "08yb4kiid3028cqsx7wzyrzk46asphxlxlj1y141hi245wbql55n"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no test suite
+       #:make-flags (list (string-append "CC=" ,(cc-for-target))
+                          (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         ;; No ./configure script
+         (delete 'configure)
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/" ,name "-" ,version)))
+               (install-file "README.md" doc)
+               #t))))))
+    (home-page "https://github.com/wtarreau/bootterm")
+    (synopsis "Serial terminal")
+    (description "Bootterm is a terminal designed to ease connection to
+ephemeral serial ports.  It features automatic port detection, port enumeration,
+support for non-standard baud rates, the ability to wait for ports to appear,
+and the ability to read and write via stdin and stdout.")
+    (license license:expat)))