10 ms·
Show HN: Kitty – A modern, hackable, featureful, OpenGL based terminal emulator
- TkTech 10y agoI 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?
- simcop2387 10y agoI'm not sure if Kitty does this but with Konsole in KDE it enables a number of features that I've found useful in the past. With Konsole's split view I can have a different terminal setup in each view, i.e. different fonts, font sizes, color scheme, scrollback settings, etc. I've found that to be very useful at times where I've got a bunch of different things being tailed and some are either longer than others or more important and i want them to be up in my face when something goes badly.
- TkTech 10y agoAh interesting, different fonts is something I didn't consider and something that could likely only be done by the terminal itself!
- simcop2387 10y agoYea it's not something I do commonly but sometimes my coding/terminal font of choice (FiraCode) just doesn't work if I'm say looking at a database dump or some other output and I've got to switch it.
- wodenokoto 10y agothat is kinda funny. The main complaint of the other OpenGL terminal on the frontpage right now is that it doesn't have support for things like tiling or tabs, arguing that it is because terminals don't have nice interface support that we have to use hacks such as multiplexers.
- vortico 10y agoThis issue actually divides the terminal userbase. There are the ones with tabs like Gnome Terminal, and the ones that don't manage screens like Termite, st, xterm, and urxvt.
- blux 10y agourxvt supports tabs as well.
- mos_basik 10y ago...what? I guess I've not dug into the config options enough then. I use the i3 tiling window manager with some tweaks to add uniform gaps between windows and remove their borders/title bars - at first thought, I can't think where/how urxvt would put tabs and make them look good.
- blux 10y agoSee for example: https://awhan.wordpress.com/2010/04/28/urxvt-tabbed/ https://awhan.wordpress.com/2010/04/28/urxvt-tabbed/ Configuration is done through ~/.Xdefaults.
- Fnoord 10y ago..and all of them run Tmux/Screen.
- gravypod 10y agoTiling is very useful for many workloads on one monitor (in a laptop enviroment). Need to run some long running process that needs intervention + do some editing + connect to IRC all in a 12" laptop formfactor? Well tiling is what you need.
- vortico 10y agoHe's saying there are other better tools for the purpose. You can use a tiling window manager like i3 or dwm, or a manager within the shell like screen or tmux.
- gravypod 10y agoI think of my computer as two half's of the same coin. One I don't need to think about and use my mouse to click though. The other is the one that needs to be respectful interacted with using my dark incantations of Alt/Cntrl + keys to summon features. I don't want these realms mixing. That's just my opinion but it's probably mirrored.
- aumerle 10y agoFor 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
- hobarrera 10y agoYou opinion tiling WMs makes me thing you haven't tried something dead-simple like i3wm. What you describe is a non-issue for us i3 users.
- aumerle 10y agoReally? Tell me how you would do the following with i3 or whatever tiling WM floats your boat. Have four terminal windows arranged in a grid, run a random gui program by typing the name of the program in one of those terminals and have the program open maximized. Close the program by using a quit command inside the program and have the terminals laid out in the grid again. And all this without having to use any window management/layout commands, keyboard shortcuts, mouse gestures.
- hobarrera 10y ago> And all this without having to use any window management/layout commands, keyboard shortcuts, mouse gestures. I need to interact with my computer for it to do stuff, I think you somehow exagerated here. Exluding that incoherent requirement, I'd have two choices: 1. Run the command in a terminal and hit super+f 2. Run the command in a terminal, super+right, super+w (I can switch back and for to <-> from the terminal). Bonus point of using i3 is that I can optionally have any external program become part of my grid or add/remove exiting terminals to/from different mixed layouts (or workspaces). With multiplexers you're screwed and can't do that. Note: I do use tmux on all my sessions, but it's mostly for "tab" support, or attaching/detaching (even from different workstations).
- ma2rten 10y agoDoes 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 10y agoNot currently, but it should be easy to port, since it only uses cross platform library such as freetype, glfw, python, etc.
- toomim 10y agoHere'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)
- aumerle 10y agoIt's not going to work out of the box on OS X, but hopefully porting it will not be more than a weekend project. I just need to find a weekend :) In the meantime, if you, or anyone else wants to help with porting to OS X, please open an issue on github and I will follow up there.
- kelnos 10y agoLikely 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 10y agoI 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".
- ChuckMcM 10y agoVery 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 10y agoWindows, 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 10y agoHow about with the new Linux-in-Windows stuff? Could you make a terminal emulator that works with just that and ignores cmd/powershell?
- aumerle 10y agoYes, 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 10y agoActually 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-bit-color-in-the-windows-console/ https://blogs.msdn.microsoft.com/commandline/2016/09/22/24-b...
- lisivka 10y agoName 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 10y agoWell, the kitty you mention only works on Windows, so what packages on official repos are we talking about?
- lisivka 10y agoIt'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/
- ry4n413 10y agoso what happens now, some sort of rap battle or fight to the death over who gets to keep the name?
- rr- 10y agoOne idea is to s/K/T/ but it'll quickly get flamed into oblivion.
- Nexxxeh 10y agoYeah, seems like a poor choice for a name given the similarity too. If it were a cat tracking app, it'd be forgivable, but this is ridiculous.
- chriswarbo 10y ago> It will be impossible to create package for both in official repos until name conflict will be resolved. Not really, if your package manager allows hierarchies then something like `network.kitty` and `x11.kitty` could be used. If they have to use the same namespace then names like `kitty-ssh` and `kitty-term` could be used. If you're installing binaries into a single location (e.g. /usr/bin) then they can either be left to conflict, or renamed by the packager (e.g. Debian renames task-spooler's `ts` to `tsp`, to avoid conflicting with moreutils' `ts` timestamp command). If packages are installed to independent locations (e.g. as in Nix and Guix) then there's no need to rename anything, although it might be nice to provide symlinks with unique names so that both can be used from the same $PATH.
- lisivka 10y agoOut 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 ).
- aumerle 10y agoNo idea, sorry, I have not used nvidia in many years. I cant tell you that it works with the radeon and intel open source GPU drivers.
- striking 10y agoThe 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/specifications http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-460... Edit: I was wrong! My bad.
- lisivka 10y agoMy notebook (Medion Erazer) was produced 3 or 4 years ago. Currently it has i7 CPU, 20GB of DDR3, but it's not capable to handle basic TERMINAL EMULATOR. It's time to upgrade. I suspect a covert agreement between hardware vendors and vendors of terminal emulators.
- khedoros1 10y ago> 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 10y agoI 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?
- fake-name 10y agoOh 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.
- aumerle 10y agoCurrently there are no builds, even for linux, kitty runs directly from source code (modulo some C code used for performance) :) As for windows support it should be relatively easy to get it running unser WSL (windows subsytem for linux) Even for a more general approach -- replacing mitty -- it should be possible, with more work.
- baq 10y agoWsl in this case is chicken and egg: you'd want to run wsl in this terminal. Not that big of a deal, but bad UX.
- ohyeshedid 10y agoHave 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 10y agoYou still have to be in the preview to use the Linux subsystem, right?
- greyskull 10y agoYou 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_guide#enable-the-windows-subsystem-for-linux-feature-gui https://msdn.microsoft.com/en-us/commandline/wsl/install_gui...
- sandebert 10y agoAny 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.)
- deleted 10y ago[deleted]
- rocqua 10y agoThere is / used to be a putty drop in replacement called kitty.
- mos_basik 10y agoYeah, 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.
- atomicUpdate 10y agoMobaXterm is nice, and it does a lot of other really useful stuff too, but $70/year for support is a lot of money for a terminal.
- mos_basik 10y agoHome edition is free, which you are able to use as long as you want and you don't even get a reminder pop-up from my experience so far. $70/year is for the professional version. Checking out their download page[0] does reveal some limits on the home edition - 12 sessions, 2 ssh tunnels (I wish I knew if those were "simultaneous" or "saved"), a couple of other things - but I haven't run up against these limits yet. I do think that if I was doing something that required more than twelve simultaneous ssh sessions, I would have already switched over to my Linux installation. SSHing from Windows is something I generally do for small things. [0]: http://mobaxterm.mobatek.net/download.html http://mobaxterm.mobatek.net/download.html
- rocqua 10y agoI 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.
- bsg75 10y agoIs 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 10y agoHow do these work forwarded over X11? Passibly or does the opengl kill permforance?
- aumerle 10y agoNo 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 10y agoin 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 10y agoPresumably, 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 10y agoI 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 10y agoOSX/freebsd support should not be too far away -- see issue 5 in the kitty github for the status of the OS X port.