gnu: Add kitty.
* gnu/packages/terminals.scm (kitty): New variable. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
b5f8c2c885
commit
b7ec276e57
@ -11,6 +11,7 @@
|
|||||||
;;; Copyright © 2017 Petter <petter@mykolab.ch>
|
;;; Copyright © 2017 Petter <petter@mykolab.ch>
|
||||||
;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||||
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
|
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
|
||||||
|
;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
@ -41,13 +42,16 @@
|
|||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
#:use-module (gnu packages autotools)
|
#:use-module (gnu packages autotools)
|
||||||
#:use-module (gnu packages check)
|
#:use-module (gnu packages check)
|
||||||
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages docbook)
|
#:use-module (gnu packages docbook)
|
||||||
|
#:use-module (gnu packages fontutils)
|
||||||
#:use-module (gnu packages freedesktop)
|
#:use-module (gnu packages freedesktop)
|
||||||
#:use-module (gnu packages gettext)
|
#:use-module (gnu packages gettext)
|
||||||
#:use-module (gnu packages gl)
|
#:use-module (gnu packages gl)
|
||||||
#:use-module (gnu packages glib)
|
#:use-module (gnu packages glib)
|
||||||
#:use-module (gnu packages gnome)
|
#:use-module (gnu packages gnome)
|
||||||
#:use-module (gnu packages gtk)
|
#:use-module (gnu packages gtk)
|
||||||
|
#:use-module (gnu packages image)
|
||||||
#:use-module (gnu packages libevent)
|
#:use-module (gnu packages libevent)
|
||||||
#:use-module (gnu packages linux)
|
#:use-module (gnu packages linux)
|
||||||
#:use-module (gnu packages ncurses)
|
#:use-module (gnu packages ncurses)
|
||||||
@ -900,3 +904,101 @@ per-line fullscreen terminal rendering, and keyboard input event reporting.")
|
|||||||
share your terminal with other users over the Internet. tmate is a fork of
|
share your terminal with other users over the Internet. tmate is a fork of
|
||||||
tmux.")
|
tmux.")
|
||||||
(license license:isc)))
|
(license license:isc)))
|
||||||
|
|
||||||
|
(define-public kitty
|
||||||
|
(package
|
||||||
|
(name "kitty")
|
||||||
|
(version "0.13.1")
|
||||||
|
(home-page "https://sw.kovidgoyal.net/kitty/")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/kovidgoyal/kitty.git")
|
||||||
|
(commit (string-append "v" version))))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"1j24zjasdh48z7majfpqr71n1wn5a9688wsmmqn26v8kfb68pqs4"))
|
||||||
|
(modules '((guix build utils)))
|
||||||
|
(snippet
|
||||||
|
'(begin
|
||||||
|
;; patch needed as sphinx-build is used as a python script
|
||||||
|
;; whereas the guix package uses a bash script launching the
|
||||||
|
;; python script
|
||||||
|
(substitute* "docs/conf.py"
|
||||||
|
(("(from kitty.constants import str_version)" kitty-imp)
|
||||||
|
(string-append "sys.path.append(\"..\")\n" kitty-imp)))
|
||||||
|
(substitute* "docs/Makefile"
|
||||||
|
(("^SPHINXBUILD[[:space:]]+= (python3.*)$")
|
||||||
|
"SPHINXBUILD = sphinx-build\n"))
|
||||||
|
#t))))
|
||||||
|
(build-system gnu-build-system)
|
||||||
|
(inputs
|
||||||
|
`(("python" ,python)
|
||||||
|
("harfbuzz" ,harfbuzz)
|
||||||
|
("zlib" ,zlib)
|
||||||
|
("libpng" ,libpng)
|
||||||
|
("freetype" ,freetype)
|
||||||
|
("fontconfig" ,fontconfig)
|
||||||
|
("pygments" ,python2-pygments)))
|
||||||
|
(native-inputs
|
||||||
|
`(("pkg-config" ,pkg-config)
|
||||||
|
("libxrandr" ,libxrandr)
|
||||||
|
("libdbus" ,dbus)
|
||||||
|
("libxcursor" ,libxcursor)
|
||||||
|
("libxi" ,libxi)
|
||||||
|
("libxinerama" ,libxinerama)
|
||||||
|
("libgl1-mesa" ,mesa)
|
||||||
|
("libxkbcommon" ,libxkbcommon)
|
||||||
|
("sphinx" ,python-sphinx)
|
||||||
|
("ncurses" ,ncurses) ;; for tic command
|
||||||
|
("wayland-protocols" ,wayland-protocols)))
|
||||||
|
(arguments
|
||||||
|
'(#:phases (modify-phases %standard-phases
|
||||||
|
(delete 'configure)
|
||||||
|
(replace 'build
|
||||||
|
(lambda _
|
||||||
|
(invoke "python3" "setup.py" "linux-package")))
|
||||||
|
(replace 'check
|
||||||
|
(lambda _
|
||||||
|
(invoke "python3" "setup.py" "test")))
|
||||||
|
(add-before 'install 'rm-pycache
|
||||||
|
;; created python cache __pycache__ are non deterministic
|
||||||
|
(lambda _
|
||||||
|
(let ((pycaches (find-files "linux-package/"
|
||||||
|
"__pycache__"
|
||||||
|
#:directories? #t)))
|
||||||
|
(for-each delete-file-recursively pycaches)
|
||||||
|
#t)))
|
||||||
|
(replace 'install
|
||||||
|
(lambda _
|
||||||
|
(let* ((out (assoc-ref %outputs "out"))
|
||||||
|
(obin (string-append out "/bin"))
|
||||||
|
(olib (string-append out "/lib"))
|
||||||
|
(oshare (string-append out "/share")))
|
||||||
|
(copy-recursively "linux-package/bin" obin)
|
||||||
|
(copy-recursively "linux-package/share" oshare)
|
||||||
|
(copy-recursively "linux-package/lib" olib)
|
||||||
|
#t))))))
|
||||||
|
(synopsis "Fast, featureful, GPU based terminal emulator")
|
||||||
|
(description "Kitty is a fast and featureful GPU-based terminal emulator:
|
||||||
|
@itemize
|
||||||
|
@item Offloads rendering to the GPU for lower system load and buttery smooth
|
||||||
|
scrolling. Uses threaded rendering to minimize input latency.
|
||||||
|
@item Supports all modern terminal features: graphics (images), unicode,
|
||||||
|
true-color, OpenType ligatures, mouse protocol, focus tracking, bracketed
|
||||||
|
paste and several new terminal protocol extensions.
|
||||||
|
@item Supports tiling multiple terminal windows side by side in different
|
||||||
|
layouts without needing to use an extra program like tmux.
|
||||||
|
@item Can be controlled from scripts or the shell prompt, even over SSH.
|
||||||
|
@item Has a framework for Kittens, small terminal programs that can be used to
|
||||||
|
extend kitty's functionality. For example, they are used for Unicode input,
|
||||||
|
hints, and side-by-side diff.
|
||||||
|
@item Supports startup sessions which allow you to specify the window/tab
|
||||||
|
layout, working directories and programs to run on startup.
|
||||||
|
@item Allows you to open the scrollback buffer in a separate window using
|
||||||
|
arbitrary programs of your choice. This is useful for browsing the history
|
||||||
|
comfortably in a pager or editor.
|
||||||
|
@end itemize")
|
||||||
|
(license license:gpl3+)))
|
||||||
|
Loading…
Reference in New Issue
Block a user