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 new_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/