kitty | ||
kitty_tests | ||
terminfo | ||
__main__.py | ||
.gitignore | ||
.travis.yml | ||
=template.py | ||
build-terminfo | ||
generate-unicode-data.py | ||
LICENSE | ||
README.asciidoc | ||
README.md | ||
session.vim | ||
setup.cfg | ||
setup.py | ||
test.py |
kitty - A terminal emulator
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