gnu: sway: Update to 1.4
[jackhill/guix/guix.git] / gnu / packages / terminals.scm
index b5c3b69..226f3ee 100644 (file)
@@ -1,9 +1,9 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 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>
-;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
@@ -17,6 +17,9 @@
 ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2020 Valentin Ignatev <valentignatev@gmail.com>
+;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,6 +38,7 @@
 
 (define-module (gnu packages terminals)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix build-system cargo)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
@@ -46,7 +50,9 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crates-io)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages fontutils)
@@ -84,7 +90,7 @@
 (define-public tilda
   (package
     (name "tilda")
-    (version "1.4.1")
+    (version "1.5.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "154rsldqjv2m1bddisb930qicb0y35kx7bxq392n2hn68jr2pxkj"))))
+                "13djibj3s7ig13c57ywy38pxy3qfmqihii2c0g15fy2h9q8xp1gx"))))
     (build-system glib-or-gtk-build-system)
-    (arguments
-     '(#:phases (modify-phases %standard-phases
-                 (replace 'bootstrap
-                  (lambda _
-                    (setenv "NOCONFIGURE" "true")
-                    (invoke "sh" "autogen.sh"))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -138,6 +138,11 @@ configurable through a graphical wizard.")
     (arguments
       `(#:phases
         (modify-phases %standard-phases
+          (add-after 'unpack 'patch-xdg-open
+            (lambda _
+              (substitute* "termite.cc"
+                (("xdg-open") (which "xdg-open")))
+              #t))
           (delete 'configure))
         #:tests? #f
         ;; This sets the destination when installing the necessary terminal
@@ -150,6 +155,7 @@ configurable through a graphical wizard.")
     (inputs
      `(("vte" ,vte-ng)
        ("gtk+" ,gtk+)
+       ("xdg-utils" ,xdg-utils)
        ("ncurses" ,ncurses)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -269,10 +275,6 @@ compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.")
          #:disallowed-references (,mesa)
 
          #:phases (modify-phases %standard-phases
-                    (replace 'bootstrap
-                      (lambda _
-                        (setenv "NOCONFIGURE" "indeed")
-                        (invoke "sh" "autogen.sh")))
                     ;; Use elogind instead of systemd.
                     (add-before 'configure 'remove-systemd
                       (lambda _
@@ -396,7 +398,7 @@ to all types of devices that provide serial consoles.")
 (define-public beep
   (package
     (name "beep")
-    (version "1.4.7")
+    (version "1.4.9")
     (source
      (origin
        (method git-fetch)
@@ -409,7 +411,7 @@ to all types of devices that provide serial consoles.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0dnbvzzxvajc7pl1165wb3l74pfcqcdg12rcjcw86qqy954dx8my"))))
+        (base32 "0jmvqk6g5n0wzj9znw42njxq3mzw1769f4db99b83927hf4aidi4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -419,8 +421,6 @@ to all types of devices that provide serial consoles.")
        #:phases
        (modify-phases %standard-phases
          (delete 'configure))))         ; no configure script
-    (native-inputs
-     `(("gcc" ,gcc-8)))                 ; for ‘-fstack-clash-protection’
     (synopsis "Linux command-line utility to control the PC speaker")
     (description "beep allows the user to control the PC speaker with precision,
 allowing different sounds to indicate different events.  While it can be run
@@ -897,7 +897,7 @@ per-line fullscreen terminal rendering, and keyboard input event reporting.")
 (define-public tmate
   (package
     (name "tmate")
-    (version "2.2.1")
+    (version "2.4.0")
     (source
      (origin
        (method git-fetch)
@@ -907,7 +907,7 @@ per-line fullscreen terminal rendering, and keyboard input event reporting.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "0pfl9vrswzim9ydi1n652h3rax2zrmy6sqkp0r09yy3lw83h4y1r"))))
+         "0x5c31yq7ansmiy20a0qf59wagba9v3pq97mlkxrqxn4n1gcc6vi"))))
     (build-system gnu-build-system)
     (inputs
      `(("libevent" ,libevent)
@@ -928,7 +928,7 @@ tmux.")
 (define-public kitty
   (package
     (name "kitty")
-    (version "0.14.6")
+    (version "0.16.0")
     (home-page "https://sw.kovidgoyal.net/kitty/")
     (source
      (origin
@@ -938,7 +938,7 @@ tmux.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1rb5ys9xsdhd2qa3kz5gqzz111c6b14za98va6hlglk69wqlmb51"))
+        (base32 "1bszyddar0g1gdz67h8rd3gbrdhi6ahjg7j14cjiqxm1938z9ajf"))
        (modules '((guix build utils)))
        (snippet
         '(begin
@@ -1134,3 +1134,181 @@ while also supporting native scrolling and @command{tmux} control mode
 an st fork using wld. st is a simple terminal emulator for X originally
 made by suckless.")
     (license license:x11)))
+
+(define-public alacritty
+  (package
+    (name "alacritty")
+    (version "0.4.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jwilm/alacritty.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "05jcg33ifngpzw2hdhgb614j87ihhhlqgar0kky183rywg0dxikg"))
+       (modules '((guix build utils)))
+       (snippet
+         ;; Don't use a custom location for winit-0.20-alpha6.
+         '(begin (substitute* "Cargo.toml"
+                   (("winit .*") ""))
+                 #t))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-clap" ,rust-clap-2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-time" ,rust-time-0.1)
+        ("rust-env-logger" ,rust-env-logger-0.7)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-yaml" ,rust-serde-yaml-0.8)
+        ("rust-serde-json" ,rust-serde-json-1.0)
+        ("rust-glutin" ,rust-glutin-0.22) ; adjust 'patch-glutin-libgl-path as needed
+        ("rust-notify" ,rust-notify-4)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-unicode-width" ,rust-unicode-width-0.1)
+        ("rust-parking-lot" ,rust-parking-lot-0.9)
+        ("rust-urlocator" ,rust-urlocator-0.1)
+        ("rust-xdg" ,rust-xdg-2.2)
+        ("rust-image" ,rust-image-0.22)
+        ("rust-dirs" ,rust-dirs-2.0)
+        ("rust-x11-dl" ,rust-x11-dl-2)
+        ("rust-winapi" ,rust-winapi-0.3)
+        ("rust-base64" ,rust-base64-0.11)
+        ("rust-bigflags" ,rust-bitflags-1)
+        ("rust-fnv" ,rust-fnv-1.0)
+        ("rust-mio" ,rust-mio-0.6)
+        ("rust-mio-extras" ,rust-mio-extras-2)
+        ("rust-terminfo" ,rust-terminfo-0.6)
+        ("rust-url" ,rust-url-2.1)
+        ("rust-vte" ,rust-vte-0.3)
+        ("rust-nix" ,rust-nix-0.15)
+        ("rust-miow" ,rust-miow-0.3)
+        ("rust-mio-anonymous-pipes" ,rust-mio-anonymous-pipes-0.1)
+        ("rust-mio-named-pipes" ,rust-mio-named-pipes-0.1)
+        ("rust-signal-hook" ,rust-signal-hook-0.1)
+        ("rust-clipboard-win" ,rust-clipboard-win-2.1)
+        ("rust-objc" ,rust-objc-0.2)
+        ("rust-objc-id" ,rust-objc-id-0.1)
+        ("rust-objc-foundation" ,rust-objc-foundation-0.1)
+        ("rust-x11-clipboard" ,rust-x11-clipboard-0.4)
+        ("rust-smithay-clipboard" ,rust-smithay-clipboard-0.3)
+        ("rust-wayland-client" ,rust-wayland-client-0.23)
+        ("rust-euclid" ,rust-euclid-0.20)
+        ("rust-foreign-types" ,rust-foreign-types-0.5)
+        ("rust-servo-fontconfig" ,rust-servo-fontconfig-0.4)
+        ("rust-freetype-rs" ,rust-freetype-rs-0.23)
+        ("rust-core-foundation" ,rust-core-foundation-0.6)
+        ("rust-core-foundation-sys" ,rust-core-foundation-sys-0.6)
+        ("rust-core-text" ,rust-core-text-13)
+        ("rust-core-graphics" ,rust-core-graphics-0.17)
+        ("rust-dwrote" ,rust-dwrote-0.9)
+        ("rust-winpty-sys" ,rust-winpty-sys-0.4))
+       #:cargo-development-inputs
+       (("rust-rustc-tools-util" ,rust-rustc-tools-util-0.2)
+        ("rust-gl-generator" ,rust-gl-generator-0.14)
+        ("rust-andrew" ,rust-andrew-0.2)
+        ("rust-smithay-client-toolkit" ,rust-smithay-client-toolkit-0.6)
+        ("rust-embed-resource" ,rust-embed-resource-1.3)
+        ("rust-http-req" ,rust-http-req-0.5)
+        ("rust-zip" ,rust-zip-0.5)
+        ("rust-tempfile" ,rust-tempfile-3.1)
+        ("rust-named-pipe" ,rust-named-pipe-0.4)
+        ("rust-winapi" ,rust-winapi-0.3))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'patch-glutin-libgl-path
+           (lambda* (#:key inputs cargo-inputs vendor-dir #:allow-other-keys)
+             (let* ((glutin-name ,(package-name rust-glutin-0.22))
+                    (glutin-version ,(package-version rust-glutin-0.22))
+                    (src-api
+                      (string-append
+                        glutin-name "-" glutin-version ".tar.gz/src/api/"))
+                    (mesa (assoc-ref inputs "mesa")))
+              (substitute* (string-append vendor-dir "/" src-api "glx/mod.rs")
+                (("libGL.so") (string-append mesa "/lib/libGL.so")))
+              (substitute* (string-append vendor-dir "/" src-api "egl/mod.rs")
+                (("libEGL.so") (string-append mesa "/lib/libEGL.so")))
+              #t)))
+         (add-after 'configure 'remove-alacritty-vendor
+           (lambda* (#:key vendor-dir #:allow-other-keys)
+              ;; We don't want Alacritty to be a dependency of itself
+              ;; If we don't delete it from guix-vendor then build will fail
+              ;; because Alacritty has a virtual workspace Cargo.toml.
+              (delete-file-recursively
+                (string-append vendor-dir "/alacritty-" ,version ".tar.xz"))
+              #t))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out   (assoc-ref outputs "out"))
+                    (share (string-append out "/share"))
+                    (icons (string-append share "/icons/hicolor/scalable/apps"))
+                    (tic   (string-append (assoc-ref inputs "ncurses") "/bin/tic"))
+                    (man   (string-append share "/man/man1"))
+                    (alacritty-bin "target/release/alacritty"))
+
+               ;; Install binary
+               (install-file alacritty-bin (string-append out "/bin"))
+
+               ;; Install man pages
+               (mkdir-p man)
+               (copy-file "extra/alacritty.man"
+                          (string-append man "/alacritty.1"))
+
+               ;; Install desktop file
+               (install-file "extra/linux/alacritty.desktop"
+                             (string-append share "/applications"))
+
+               ;; Install icon
+               (mkdir-p icons)
+               (copy-file "extra/logo/alacritty-term.svg"
+                          (string-append icons "/Alacritty.svg"))
+
+               ;; Install terminfo
+               (mkdir-p (string-append share "/terminfo"))
+               ;; We don't compile alacritty-common entry because
+               ;; it's being used only for inheritance.
+               (invoke tic "-x" "-e" "alacritty,alacritty-direct"
+                       "-o" (string-append share "/terminfo/")
+                       "extra/alacritty.info")
+
+               ;; Install completions
+               (install-file
+                 "extra/completions/alacritty.bash"
+                 (string-append out "/etc/bash_completion.d"))
+               (install-file
+                 "extra/completions/_alacritty"
+                 (string-append share "/zsh/site-functions"))
+               (install-file
+                 "extra/completions/alacritty.fish"
+                 (string-append share "/fish/vendor_completions.d"))
+               #t))))))
+    (inputs
+     `(("expat" ,expat)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("libx11" ,libx11)
+       ("libxcb" ,libxcb)
+       ("libxcursor" ,libxcursor)
+       ("libxi" ,libxi)
+       ("libxkbcommon" ,libxkbcommon)
+       ("libxrandr" ,libxrandr)
+       ("libxxf86vm" ,libxxf86vm)
+       ("wayland" ,wayland)
+       ("mesa" ,mesa)))
+    (native-inputs
+     `(("cmake" ,cmake)
+       ("ncurses" ,ncurses)
+       ("pkg-config" ,pkg-config)
+       ("python3" ,python)))
+    (home-page "https://github.com/alacritty/alacritty")
+    (synopsis "GPU-accelerated terminal emulator")
+    (description
+     "Alacritty is a GPU-accelerated terminal emulator with a strong focus on
+simplicity and performance.  With such a strong focus on performance, included
+features are carefully considered and you can always expect Alacritty to be
+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)))