kitty/README.md
2016-12-07 09:39:43 +05:30

93 lines
2.8 KiB
Markdown

kitty - A terminal emulator
============================
[![Build Status](https://travis-ci.org/kovidgoyal/kitty.svg?branch=master)](https://travis-ci.org/kovidgoyal/kitty)
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](kitty/kitty.conf).
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 previous window the currently 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/