Cross-platform, fast, feature-rich, GPU based terminal
Go to file
2016-12-08 09:48:58 +05:30
kitty Allow clicking on tabs to change the current tab 2016-12-07 17:50:49 +05:30
kitty_tests More charset fixes 2016-11-30 23:36:10 +05:30
terminfo Add the missing op terminfo code 2016-11-30 22:27:41 +05:30
__main__.py Initial commit 2016-10-14 12:33:27 +05:30
.gitignore Infrastructure for building C extensions 2016-10-31 14:45:49 +05:30
.travis.yml Fix load og libglfw3.so on travis 2016-11-29 20:13:39 +05:30
=template.py Initial commit 2016-10-14 12:33:27 +05:30
build-terminfo Make terminfo data available in program 2016-11-24 11:29:28 +05:30
generate-unicode-data.py ... 2016-12-05 09:41:59 +05:30
LICENSE Initial commit 2016-10-14 12:33:27 +05:30
README.asciidoc Asciidoc version of readme 2016-12-08 09:48:58 +05:30
README.md ... 2016-12-07 18:00:30 +05:30
session.vim Use the new native screen class 2016-11-18 15:30:59 +05:30
setup.cfg Initial commit 2016-10-14 12:33:27 +05:30
setup.py Get rid of glfw_constants 2016-11-29 14:20:21 +05:30
test.py Allow building with debug symbols 2016-11-07 13:23:03 +05:30

kitty - A terminal emulator

Build Status

Major features:

  • Uses OpenGL+FreeType for rendering, does not depend on any GUI toolkits.
  • Supports tiling multiple terminal windows side by side in different layouts without needing to use an extra program like tmux
  • Supports all modern terminal features: unicode, true-color, mouse protocol, focus tracking, bracketed paste and so on.
  • Easily hackable (UI layer written in python, inner loops in C for speed). Less than ten thousand lines of code.
  • Rendering of text is done in an actual character grid, so the common problems with most Terminals when using wide characters/complex scripts do not occur. The downside is that scripts with complex glyph layout, such as Arabic do not render well.

Installation

kitty is designed to run from source, for easy hackability. Make sure the following dependencies are installed first:

* python >= 3.5
* glew >= 2.0
* glfw-dev >= 3.2
* freetype
* fontconfig
* gcc (required for building, clang should also work, but it is not tested)
* pkg-config (required for building)

Install kitty with:

git clone https://github.com/kovidgoyal/kitty && cd kitty

Now build the C parts of kitty with the following command:

python3 setup.py build

You can run kitty, as:

python3 /path/to/kitty/folder

Configuration

kitty is highly customizable, everything from keyboard shortcuts, to painting frames-per-second. See the heavily commented default config file. By default kitty looks for a config file in the OS config directory (usually ~/.config/kitty/kitty.conf on linux) but you can pass a specific path via the --config option.

Startup Sessions

You can control the tabs, window layout, working directory, startup programs, etc. by creating a "session" file and using the --session command line flag. For example:

# Set the window layout for the current tab
layout tall
# Set the working directory for the current tab
cd ~
# Create a window and run the specified command in it
launch zsh
launch vim
launch irssi --profile x

# Create a new tab (the part after new_tab is the optional tab name which will
# be displayed in the tab bar, if ommitted, the title of the active window will
# be used instead)
new_tab my tab
cd ~/somewhere
# Set the layouts allowed in this tab
enabled_layouts tall, stack
layout stack
launch zsh
# Make the current window the active (focused) window
focus
launch emacs

Resources on terminal behavior

http://invisible-island.net/xterm/ctlseqs/ctlseqs.html

https://en.wikipedia.org/wiki/C0_and_C1_control_codes

http://vt100.net/