93 lines
2.8 KiB
Markdown
93 lines
2.8 KiB
Markdown
kitty - A terminal emulator
|
|
============================
|
|
|
|
[](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/
|