
Show HN: Kitty – A modern, hackable, featureful, OpenGL based terminal emulator - aumerle
https://github.com/kovidgoyal/kitty
======
TkTech
I like it!

I've seen just about every terminal implement its own version of tiling, and I
just have to ask: Why? Doesn't this just increase the line count and surface
area without offering anything that doesn't already work just fine as a tool
maintained by someone else?

~~~
aumerle
For me (I am the author of kitty) it is for two reasons:

1) Multiplexers are a hack -- there are various problems with them, such as
passing control codes through safely, keyboard shortcuts, performance, etc

2) Tiling WMs -- these can work (in fact I use a tiling WM myself) however,
the nice thing about having tiling (and tab management) built into the
terminal is that you can manage terminal windows and other windows differently
on the same screen. For example, on small screens I like to have most GUI
windows such s browser, etc. maximized, but I like to have terminal windows
side-by-side, this is hard to manage if you want to have them on the same
screen. With tiling built into the terminal, managing terminal windows is in a
separate "namespace" from all other types of windows

~~~
dxhdr
Multiplexers may have some control key quirks but they seem to be essential
for any workflow that involves a remote machine or VM. I can have the same
workflow everywhere with tmux, local and remote. Though nesting tmux sessions
is annoying and can be more convenient to have a remote session in its own
terminal window.

~~~
aumerle
Why? The only advantage I can see to running a multiplexer under ssh is that
you can resume after disconnection. There are plenty of non-multiplexer based
solutions for that. And you can have the same session locally or remotely if
you terminal emulator locally, as long as the terminal emulator support
sessions, which kitty does.

------
fake-name
Oh wow, it's the guy behind calibre! Cool!

Plz plz plz make a windows build. I use cygwin for so much, and a more
performant terminal option would be amazing.

~~~
ohyeshedid
Have you tried Cmder[1]? It's a wrapper for ConEmu[2] with Clink[3]
integration, and if you get the git-for-windows bundle it comes with a ton of
functionality. It also works well with Windows Subsystem for Linux, and is
extensible. I've been pretty happy with it while stuck in Windows.

[1]: [http://cmder.net/](http://cmder.net/) [2]:
[https://conemu.github.io/](https://conemu.github.io/) [3]:
[https://mridgers.github.io/clink/](https://mridgers.github.io/clink/)

~~~
swah
You still have to be in the preview to use the Linux subsystem, right?

~~~
greyskull
You mean the Windows Preview program? No, it's in the anniversary update. But
it's still a "beta" product.

[https://msdn.microsoft.com/en-
us/commandline/wsl/install_gui...](https://msdn.microsoft.com/en-
us/commandline/wsl/install_guide#enable-the-windows-subsystem-for-linux-
feature-gui)

~~~
swah
As soon as I start configuring things, I break them :)

(Check scrollbar on the right side..) So I go back to whatever...

[http://imgur.com/a/2ptLl](http://imgur.com/a/2ptLl)

------
sandebert
Any plans to get it into official repos?

(I'm not super excited about compiling my own stuff. It's so very, very nice
to get automatic updates.)

~~~
aumerle
That's upto distro maintainers. kitty is dead simple to build so creating
distro packages should be easy.

~~~
sandebert
Understood. I'll post a "Request For Package" to Debian, per their standard
request process. We'll see what happens.

------
rocqua
There is / used to be a putty drop in replacement called kitty.

~~~
mos_basik
Yeah, that was my thought too. KiTTY is leaps and bounds better than putty
-which it was forked from - and for a while I made a point to recommend it to
any windows user who needed to do any sshing.

Buuuut, I just found mobaxterm, which has a ridiculous amount of features. And
I'm pretty sure git bash for windows has ssh, and cmder, and now the Linux
subsystem - so there are a lot more options on the table these days. Kitty's
days might be numbered.

~~~
rocqua
I actually regressed to putty.

I don't recall why exactly, I think there was some config option that was
missing. More importantly though, tmux basically made the advantages of kitty
obsolete.

~~~
mos_basik
I really need to start intentionally using tmux.

It's just so hard when my i3 bindings are right there, already learned, and
they give me all of the screen management I need already - so tmux is only
offering me the long-running, detachable session benefits. But even that would
be good to learn...

tbh I'm going to be downloading and checking out both kitty and alacritty when
I have time; if alacritty turns out to be worth it, it will be the kick in the
tail I need to start in on tmux.

(Maybe this mobile graphics card that bluescreens if used at vanilla clock
speeds will finally be useful for something!)

~~~
rocqua
I need tmux because I work from a single putty session. Sadly, I think a lot
of tmux value is gone when you start a separate session in each separate
terminal window.

------
ChuckMcM
Very nice. Close to what I want but not quite there yet. My goal is to have a
terminal environment that is seamless between windows, mac, and linux while
supporting the kinds of features a "modern" terminal should (colors, utf8,
various fonts, etc)

~~~
aumerle
Windows, AFAIK has a completely different terminal implementation, so I doubt
you will ever get the same terminal working on unix-like and windows (modulo
the WSL) But as for OS X kitty should be easy to port since it uses only cross
platform libraries.

~~~
kalleboo
How about with the new Linux-in-Windows stuff? Could you make a terminal
emulator that works with just that and ignores cmd/powershell?

~~~
aumerle
Yes, the hard part is replacing cmd.exe (i.e. making a terminal that works
with windows programs). Making a terminal that works only with linux programs
should be fairly simple, especially with WSL (windows linux subsystem)

~~~
wattengard
Actually cmd.exe isn't the problem. conhost.exe is. Whatever you run on
windows CLI, be it CMD, Powershell or BASH, it runs on conhost.exe. Even
ConEmu and Console2 are just wrappers around it. The console host is getting
better though. The latest W10 release supports arbitrary resizing of the
screen atleast :) In the next update we even get 24-bit color.

[https://blogs.msdn.microsoft.com/commandline/2016/09/22/24-b...](https://blogs.msdn.microsoft.com/commandline/2016/09/22/24-bit-
color-in-the-windows-console/)

------
ma2rten
Does this work with MacOS? I didn't see that mentioned in the README.

I have a Linux desktop and MacBook laptop. I would like to run the same
Terminal on both.

~~~
aumerle
Not currently, but it should be easy to port, since it only uses cross
platform library such as freetype, glfw, python, etc.

~~~
toomim
Here's what I did on mac:

    
    
        brew install glew                             # install glew
        git clone https://github.com/glfw/glfw.git    # install glfw
        cd glfw
        cmake -DBUILD_SHARED_LIBS=ON .
        make install
        cd ..
        git clone https://github.com/kovidgoyal/kitty # install kitty
        cd kitty
        # Then delete ", '-l' + lib" on line 78 of setup.py... and run:
        python setup.py install
    

But I get this error:

    
    
        ld: symbol(s) not found for architecture x86_64
        clang: error: linker command failed with exit code 1 (use -v to see invocation)

~~~
kelnos
Likely the reason for the error is your removal of that part of line 78 of
setup.py. If it's unable to find the libraries it's trying to add, making it
not link with them at all isn't the answer; you need to figure out why it
can't find them, and fix that.

~~~
toomim
I think that's something else. If we keep that line, it errors with:

    
    
        ld: library not found for -lPython.framework/Versions/3.5/Python
    

The "lib" variable is set to "Python.framework/Versions/3.5/Python".

------
bsg75
Is there a compare / contrast between this project and Gnome Terminator?

[https://gnometerminator.blogspot.com/p/introduction.html](https://gnometerminator.blogspot.com/p/introduction.html)

------
mzs
How do these work forwarded over X11? Passibly or does the opengl kill
permforance?

~~~
aumerle
No idea, never tried it -- not sure why you would want to run a terminal
emulator remotely. Isn't it easier to run the terminal emulator locally and
ssh into the remote server inside the terminal emulator?

~~~
mzs
in case you don't have your favorite terminal emulator installed on the
machine you are sshing from which would be common with one like this

~~~
aumerle
Presumably, if you are going to do network forwarding, your machine will be
network conencted, so just install it. kitty is designed to run from a single
directory if needed, so you dont even need admin permissions to do that.

~~~
mzs
I connect to a bunch of Linux servers from three OS X machines and one FreeBSD
machine. I also use a solaris server, none of the servers have monitors. I'd
install it on one of the Linux servers cause that's the only thing supported
currently.

~~~
aumerle
OSX/freebsd support should not be too far away -- see issue 5 in the kitty
github for the status of the OS X port.

------
lisivka
Name clash with KiTTY:
[http://www.9bis.net/kitty/](http://www.9bis.net/kitty/) , terminal emulator,
fork of PuTTY. It will be impossible to create package for both in official
repos until name conflict will be resolved.

~~~
asymmetric
Well, the kitty you mention only works on Windows, so what packages on
official repos are we talking about?

~~~
lisivka
It's opensource. PuTTY is ported to Linux and is already in Fedora official
repo[1], so KiTTY can be ported to Linux too.

[1]:
[https://admin.fedoraproject.org/pkgdb/package/rpms/putty/](https://admin.fedoraproject.org/pkgdb/package/rpms/putty/)

------
lisivka
Out of luck with Nvidia proprietary driver and latest Fedora:

    
    
        RuntimeError: OpenGL is missing the required ARB_copy_image extension
    

ARB_copy_image is OpenGL 4.3 extension. Is it supported by NVIDA driver at
Linux? Or it's hardware problem? (I have GF106M [GeForce GTX 460M] (rev a1)
installed ).

~~~
striking
The GTX 460 came out _six years ago_. It goes up to OpenGL 4.1.

Sorry, pal.

[http://www.geforce.com/hardware/desktop-gpus/geforce-
gtx-460...](http://www.geforce.com/hardware/desktop-gpus/geforce-
gtx-460/specifications)

Edit: I was wrong! My bad.

~~~
khedoros1
> The GTX 460 came out six years ago.

In your opinion, what's a reasonable timeline for hardware incompatibility
with a terminal emulator? (That's an odd sentence to need to type...)

~~~
wattengard
I think the real question is what benefits do OpenGL give to the terminal
emulator that other solutions doesn't. And do they even need to target the
latest versions? Maybe using OpenGL actually gives a huge advantage, but the
bits that do work just as fine against an older version?

