[PATCH] gnu: Add kitty.

  • Done
  • quality assurance status badge
Details
2 participants
  • Gabriel Hondet
  • Ludovic Courtès
Owner
unassigned
Submitted by
Gabriel Hondet
Severity
normal

Debbugs page

Gabriel Hondet wrote 6 years ago
(address . guix-patches@gnu.org)
87tvj0wlyt.fsf@gmail.com
* gnu/packages/terminals.scm (kitty): New variable.
---
gnu/packages/terminals.scm | 104 +++++++++++++++++++++++++++++++++++++
1 file changed, 104 insertions(+)

Toggle diff (135 lines)
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 369e79bf5..223bc3684 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2017 Petter <petter@mykolab.ch>
;;; Copyright © 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018 Gabriel Hondet <gabrielhondet@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -41,13 +42,16 @@
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
#:use-module (gnu packages docbook)
+ #:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
+ #:use-module (gnu packages image)
#:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
#:use-module (gnu packages ncurses)
@@ -900,3 +904,103 @@ per-line fullscreen terminal rendering, and keyboard input event reporting.")
share your terminal with other users over the Internet. tmate is a fork of
tmux.")
(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"))))))
+ (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)))
+ (map delete-file-recursively pycaches))))
+ (replace 'install
+ (lambda _
+ (let* ((out (assoc-ref %outputs "out"))
+ (obin (string-append out "/bin"))
+ (olib (string-append out "/lib"))
+ (oshare (string-append out "/share")))
+ (begin
+ (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, the fast, featureful, GPU based terminal emulator
+@itemize @bullet
+@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 Cross-platform: kitty works on Linux and macOS, but because it uses only
+OpenGL for rendering, it should be trivial to port to other Unix-like
+platforms.
+@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+)))
--
2.20.1
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEE5ercJXBcjd3P1FcAMbyBBfZZ1CUFAlwjacoACgkQMbyBBfZZ
1CX0UhAAkRzofo0lqOjp7/Gu+8q0LvQOGnWzLHFtzPIRQ7csFx/VPh4yxkY7ogSm
tDmvmhQgXE0Q0qmtE0O0YnbvjAesK3xmJFST9XSJuDoivX20Ehnnc1z4ls7oq9Fq
9sxaXA3Awn35TzSquYEcYjwGVaF2r7o7HAVwGQckGbYwgynBsf87a8ZLC6AN6E+2
fyHVYOInwNnx8uwItfDxp67yTUcC38dJobP1as7xf7YycuejenfEtU6dpKbdsOgp
ZU1bukdT+iMnxj6qt0Yr2v6ISwp2KKp9zM5YhbN3+PlFgW1ceGY2zvVj2Nsdk8Mu
xC6YISDce/oVAbO8WjSV2wqQfeQ3+uwBDyXLwPkPgulFmkr+8oao7PM0KHzt5hdN
hGMJWaYngqUQW2WmbBKgKGkZcGVmMAdFrZFD6TNJh6+eLq5A8tD+zDWDD2IgRsQm
kdTHITm2ksr3TuN7vBzRJgNH50FufZ9lDpkz4Zw31447gQn5BoegCNSIjPVso2BA
Rfo+rnrDBHg5QPxM34DdEy793shpX3iucLna2W8qciy2cS6ot+XAltU1nnCD7MQm
jPCe2sB6MDNwZy7pMUSzRultUhHr0zHw6pOWH9TITFYopKLlUdeYY1BbANFSavUX
lb1u6B5wVaa3s+x1p5KR6O4HuqSll9yVhLRg8b7odw1YuNpgBhM=
=rj3A
-----END PGP SIGNATURE-----

Ludovic Courtès wrote 6 years ago
(name . Gabriel Hondet)(address . gabrielhondet@gmail.com)(address . 33877-done@debbugs.gnu.org)
877efhzgt6.fsf@gnu.org
Hello,

Gabriel Hondet <gabrielhondet@gmail.com> skribis:

Toggle quote (2 lines)
> * gnu/packages/terminals.scm (kitty): New variable.

Applied! I took the liberty to make the small changes below; let me
know if anything is unclear.

Thanks,
Ludo’.
Toggle diff (62 lines)
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 223bc3684c..f6f3845070 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -931,7 +931,8 @@ tmux.")
(string-append "sys.path.append(\"..\")\n" kitty-imp)))
(substitute* "docs/Makefile"
(("^SPHINXBUILD[[:space:]]+= (python3.*)$")
- "SPHINXBUILD = sphinx-build\n"))))))
+ "SPHINXBUILD = sphinx-build\n"))
+ #t))))
(build-system gnu-build-system)
(inputs
`(("python" ,python)
@@ -968,37 +969,34 @@ tmux.")
(let ((pycaches (find-files "linux-package/"
"__pycache__"
#:directories? #t)))
- (map delete-file-recursively pycaches))))
+ (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")))
- (begin
- (copy-recursively "linux-package/bin" obin)
- (copy-recursively "linux-package/share" oshare)
- (copy-recursively "linux-package/lib" olib)
- #t)))))))
+ (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, the fast, featureful, GPU based terminal emulator
-@itemize @bullet
+ (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
+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.
+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 Cross-platform: kitty works on Linux and macOS, but because it uses only
-OpenGL for rendering, it should be trivial to port to other Unix-like
-platforms.
@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.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 33877@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 33877
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help