kitty
kitty is a scriptable OpenGL based terminal emulator with TrueColor, ligatures support, protocol extensions for keyboard input and image rendering. It also offers tiling capabilities, like GNU Screen or tmux.
kitty is relatively new, of which first release (v0.1.0) was in Feb 2017. It however does not mean it is still premature.
Installation
Usage
New tabs and windows can be created and resized through various Ctrl+Shift
shortcuts. Layouts are switchable through Ctrl+Shift+l
and can be saved/restored.
A full keyboard mode provides distinction between ambiguous keys like Ctrl+i
vs Tab
. Moreover, new text effects like curly-underline are also available for applications that support it.
Kittens
kitty has a framework for creating subprograms called kittens.
For example, to show image in the terminal (needs imagemagick):
$ kitty +kitten icat image.jpeg
To show a diff of two files:
$ kitty +kitten diff file1 file2
To work with a clipboard even over ssh:
$ kitty +kitten clipboard
Configuration
kitty stores its configuration in ~/.config/kitty/kitty.conf
and the default configuration can be found at /usr/share/doc/kitty/kitty.conf
. Fonts, colors, cursors and scrollback behaviors can be adjusted. You can see all available options in the official documentation.
Tips and Tricks
Enable IME support
Kitty support for IBus IME framework is disabled by default. To enable it, set the environment variable GLFW_IM_MODULE=ibus
. This will also work with Fcitx5 due to the compatible IBus interface that it offers.
Troubleshooting
Terminal issues with SSH
When kitty is used to ssh into a remote that does not have its terminfo, various issues can occur. The solution is normally to copy over the terminfo. Kitty has an ssh kitten to automate exactly this.
$ kitty +kitten ssh user@host
You may want to set it as an alias for ssh
. One way to do that is to detect if the user is using Kitty, and if so, alias the ssh command. To do that (in Bash), you would append the following line to your ~/.bashrc
file.
~/.bashrc
[[ "$TERM" == "xterm-kitty" ]] && alias ssh="kitty +kitten ssh"
If for whatever reason you are unable to install the terminfo on the remote, you can try setting TERM
to something that is more likely to be present. Note that this might disable some of the terminal's features. See OpenSSH#Connecting to a remote without the appropriate terminfo entry.