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
					
				
					 1 changed files with 102 additions and 0 deletions
				
			
		|  | @ -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,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 | ||||
| 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")) | ||||
|            #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+))) | ||||
|  |  | |||
		Reference in a new issue