Kitty – GPU based terminal emulator

(sw.kovidgoyal.net)

92 points | by andsoitis 4 days ago ago

77 comments

  • skayvr a day ago ago

    My progression has been st -> kitty -> ghostty. I wanted to love st, but found too many unpolished corners. Kitty was great, but it felt like the exact opposite of st. Very large and opinionated. ghostty, at least originally, was new and something between st and kitty. With claude code I wonder where the landscape of personalized software will land. st and others may be on to something in this era.

    • mmgutz a day ago ago

      [foot](https://codeberg.org/dnkl/foot) is an excellent st alternative on wayland.

      • skayvr 18 hours ago ago

        Thanks, this is right down my alley. When I make the switch from X to Wayland, I'll check this out.

    • a day ago ago
      [deleted]
    • zamalek 12 hours ago ago

      I recently switched back to kitty from ghostty. Ghostty was taking > 1s to boot, and I really don't have the time to debug it.

      • skayvr 5 hours ago ago

        Funnily enough, I saw this too. Yesterday I upgraded from ghostty 1.0.0 to 1.2.0 and was hit with startup delay. 1.0.0 didn't have it. My delay was around 5s on a fresh reboot. However, after I opened a few ghostty windows, the delay went away. I'll be keeping my eye on it.

      • dmd 11 hours ago ago

        Odd. I’ve never had a new window or tab take more than maybe 20ms.

    • calvinmorrison a day ago ago

      I spent a long time on the gtk vte based terminals (sakura, I wrote my own called svte later), then to st until i had too many patches stacked, then alacritty, but that took a long time to get to because I couldnt figure out how the kerning was different than ST!

      Now i am on that and it is fine

  • aidenn0 a day ago ago

    Whoever designed the default bindings for kitty clearly has a similar brain to mine. I think I adapted to those keybindings in about an hour, and can't use any other terminal without remapping the keys to match kitty.

  • siraben a day ago ago

    My favorite aspect of kitty is the infinite scrollback. My scrollback is 10000 lines long and scrollback buffer itself can store 1 GB worth of history.[0] When you hit a certain shortcut, you can use any pager to search through the scrollback. It's all very fast.

    [0] https://github.com/siraben/dotfiles/blob/84225d914acd226863e...

    • saagarjha a day ago ago

      Don’t most terminals offer this?

      • Twirrim 9 hours ago ago

        It's pretty common. GNOME's terminal does, as does Kconsole for KDE, and so on. I've got Gnome terminal bumped up to 100,000 lines.

        There are definitely some that don't, or don't make it configurable, which for me just gives me pretty strong incentive not to use them.

      • tetris11 10 hours ago ago

        Yeah, I thought this was a feature of the shell, not of the terminal

  • lxe a day ago ago

    Kitty terminal can essentially replace a big part of a linux desktop environment, if you want it to. It's infinitely customizable AND has own opinions at the same time.

    Also my interactive scrollbar change was recently merged in, so if that was stopping you, you can now replace iTerm on your mac with it :)

    • Blackthorn a day ago ago

      > infinitely customizable

      Except for loading your own shaders, which they decided they weren't interested in and wouldn't support.

      • matheusmoreira a day ago ago

        That reminds me I once tried to write a terminal emulator for libretro so I could run it on RetroArch with cool shaders. I had completely forgotten about that project...

        Pretty weird that kitty wouldn't support custom shaders. It already has GPU rendering so why not.

    • Avshalom a day ago ago

      ? what do you think we're doing with our desktop environments?

    • jauntywundrkind a day ago ago

      My only guess is that this refers to graphical rendering support. https://sw.kovidgoyal.net/kitty/graphics-protocol/

      I both see enormous value mixing text and console, and also worry that TUI will overcomplicate and add even more unnecessary embellishment than it already is trending towards? Semi grump opinion. But it feels weird introducing a new canvas.

      I do like the idea of graphics being online in a terminal session. Not a captive app experience in a text/graphic UI, but just cli commands that can have some more visual output too.

      • wkat4242 a day ago ago

        It's not exactly new and it solves many problems of the older sixel protocol that stems from the age of DEC terminals way before full colour stuff.

      • fluidcruft a day ago ago

        Finally a terminal with banner ads support!

      • porridgeraisin 20 hours ago ago

        Ghostty supports kitty graphics protocol for those interested.

    • GuinansEyebrows a day ago ago

      > Kitty terminal can essentially replace a big part of a linux desktop environment, if you want it to. It's infinitely customizable AND has own opinions at the same time.

      i'm interested in this idea. can you expand on that? what functionality are you replacing? i don't currently use a DE and i get along pretty well doing most of my work in alacritty and firefox-esr. occasionally i drop into pcmanfm if i need a visual file browser, and i use feh to preview images.

      • mmgutz a day ago ago

        I'm on wayland. Kitty can be used as a layershell window. So you can build panels, taskbars, etc if you were so inclined. For example, you want fastfetch or htop as a live desktop background? Kitty can do that.

        • calvinmorrison a day ago ago

          I'd like to introduce you to conky

          • tetris11 10 hours ago ago

            I'd like you to check in on our dear friend conky. His door is full of newspapers and no one has checked inside the house for a while.

        • GuinansEyebrows 10 hours ago ago

          oh, i already use lemonbar for that. i was hoping for something a little more interesting than info bars :)

  • metadat a day ago ago

    Is this different from the KiTTY variant of PuTTY?

    https://www.9bis.net/kitty/index.html

    I'm just confused now, haha. What's in a name, anyways...

  • unpopularopp a day ago ago

    I'm probably the extreme minority on HN (0.00001%) but I pretty much never used any CLI applications. Just never really needed them. But recently at work (we use Macs) I had some tasks which need the Terminal.app so I kinda tried to dig in and learn some stuff but whenever I feel I already know something (more or less) there is always some new stuff entering the picture next day. Shell, console, terminal... now a terminal _emulator_ :insert exploding galaxy brain meme:

    • JdeBP a day ago ago

      They are all terminal emulators. You have probably, as one who has never used the command line, never touched an actual terminal.

      • fluoridation a day ago ago

        A shell is not a terminal emulator. It's a program that does text I/O (perhaps with a terminal, perhaps not) and implements basic system functionality like executing programs and often scripting.

        • MangoToupe a day ago ago

          Most people interact with a shell through a terminal emulator, though. The alternative is something like emacs's eshell. Or an actual "terminal" which hasn't been even available for purchase for many decades.

          • fluoridation a day ago ago

            Not always. The shell may be facing a serial interface, or it could be spawned by a program and have no user interface at all.

            • MangoToupe a day ago ago

              I probably wouldn't describe either as a human interacting with a shell, but nevertheless point taken.

              • fluoridation a day ago ago

                I wouldn't either, which I why I didn't include that interaction in the definition I gave. A shell just implements basic system functionality, it doesn't necessarily function as a UI.

    • sorrythanks a day ago ago

      "console", "terminal" and "terminal emulator" all refer to the same thing. "shell" is the read-eval-print-loop interface you use to work in the terminal.

      • JdeBP a day ago ago

        Please don't confuse the novices. A console is either a special kernel device or a UI subsystem; a terminal is a physical piece of kit; and a terminal emulator is an application that runs on a general purpose computer that emulates one of the aforementioned pieces of kit.

        * https://jdebp.uk/FGA/tui-console-and-terminal-paradigms.html

        * https://jdebp.uk/Softwares/nosh/guide/commands/freebsd-conso...

        * https://jdebp.uk/Softwares/nosh/guide/commands/linux-console...

        * https://jdebp.uk/Softwares/nosh/guide/commands/linux-vt.xml

        * https://blog.bruchez.name/posts/televideo-912-terminal-1/

        • fluoridation a day ago ago

          You're assigning a rigidity to these terms that they simply don't have. A "console", in the oldest sense of the term, is any place where a user interfaces with a computer, or more broadly with any kind of machine.

          >Borrowed from French console (“bracket”, noun), from consoler (“to console, to comfort”, verb). Sense of “bracket” either due to a bracket alleviating the load, or due to brackets being decorated with the Christian figure of a consolateur (“consoler”), itself perhaps a pun on the first sense (alleviating load). Originally used for the bracket itself, then for wall-mounted tables (mounted with a bracket), then for free-standing tables placed against a wall. Use for control system dates at least to 1880s for an “organ console”; use for electrical or electronic control systems dates at least to 1930s in radio, television, and system control, particularly as “mixer console” or “control console”, attached to an equipment rack.

          A "terminal" is a text-only console. For a long time, "terminal" and "console" were synonymous. By metaphor, in the same way that a "desktop" is not a desktop, referring to a terminal emulator as a console is perfectly acceptable, and everyone will understand what is meant.

          • JdeBP 17 hours ago ago

            On the contrary, I've quite explicitly pointed out that a console is one of several things, in contrast to the false claim that these are all just the same thing. Go back and read the FGA.

            A console is not even necessarily the same abstraction as a terminal, let alone always synonymous with a terminal emulator, and "referring to a terminal emulator as a console" is not only not perfectly acceptable, it is downright erroneous on all of the platforms on which Kitty runs including the platform used by unpopularopp where XNU's console is very specifically a serial or video special kernel device. You are confusing the novices, too.

            • fluoridation 15 hours ago ago

              >"referring to a terminal emulator as a console" is not only not perfectly acceptable

              To clarify, you don't like it.

              >it is downright erroneous on all of the platforms on which Kitty runs

              You make it sound like saying something "erroneous" (which of course I don't agree it is) is some kind of magic spell that does something. "Kitty is a console." What, what did that do?

              >You are confusing the novices, too.

              Uh huh. Literally no one is confused by these terms, you're just disagreeing with the usages. Say to someone "open up an xterm console" and I guarantee you they will understand that you want them to start an instance of xterm, not that you're having a stroke.

              >XNU's console is very specifically a serial or video special kernel device.

              If a system uses a word to refer to something specific, that doesn't co-opt the meaning of the word. An "XNU console" and a "console" in the broad sense are distinguishable concepts.

        • kstrauser a day ago ago

          Technically true, but I’ve never heard anyone say “open a terminal emulator and type…”

          • JdeBP a day ago ago

            You've only been within earshot of slipshod people. (-: And you are typing below a headline that calls the thing a terminal emulator, so you cannot really say that you've never encountered one referred to as such.

          • M95D 18 hours ago ago

            Because people say "open a command prompt". That can be a terminal emulator, a kernel console on screen+keyboard, a terminal via serial port console, or a ssh connection, and usually it doesn't matter which.

            • JdeBP 17 hours ago ago

              At least Microsoft finally stopped making people think (on Windows NT, no less) that these were "DOS prompts", though, which used to be a very common misnomer.

              * https://jdebp.uk/FGA/a-cli-is-not-a-dos-prompt.html

              You'll rarely find them actually called "command prompt" on the operating systems that Kitty runs on, though, including the operating system that unpopularopp uses. That's largely a Microsoft-ism, and one that has in fact been quietly eroding in the Microsoft world for years since the advent of PowerShell and Microsoft Terminal, with people now more and more writing and talking about opening "PowerShell" or "Terminal" rather than opening "command prompt".

              On the operating systems that Kitty runs on, they're called terminal emulators, especially in their own doco and blurbs (as with Kitty, here), and when it comes to desktop menus usually (in contrast to the Microsoft Windows "command prompt" shortcut) have their actual names (Konsole, XTerm, UXTerm, RXVT Unicode, and so on being listed under their names, with GNOME Terminal and its derivatives and Apple's Terminal being somewhat exceptional rather than the rule).

        • odie5533 a day ago ago

          If your only examples of terminals are in museums, I'm taking over the word.

    • skydhash a day ago ago

      Long story short: Terminals were the result of moving teleprinting stuff from paper to the screen. The shell is program that accept commands and execute the relevant program and I’m pretty sure console was the whole apparatus.

      But now we moved the whole protocol to a program (an emilator) instead, and console refers to the initial boot environment, the attached display, keyboard pair (because you can still use another computer as the interface for control).

      But the protocol is fairly old and some stuff clashes with current paradigms for using a computers.

    • lxe a day ago ago

      I've been using a terminal extensively for over twenty years. However, I was never able to get to the whole Vim and mouse-less keyboard only setup. If you can live your life to the fullest without using the terminal, I kind of envy you.

    • unsungNovelty a day ago ago

      Checkout clis like ranger (fm), Calcurse, bpytop/btop/htop/top, neovim, taskwarrior...

      They are all cool. Probably missing crores of other clis that are cool.

  • rjdj377dhabsn a day ago ago

    I haven't done extensive tests, but wouldn't a GPU-based terminal emulator cause a laptop to use a lot more power at idle or near idle?

    Even if the GPU is more efficient than the CPU, I would think it's better to keep the GPU asleep when you're just typing in vim.

  • pjmlp 17 hours ago ago

    Maybe it is just me, xterm does the job, and my Enlightenment theme days are long gone.

    I see no need for the GPU trendy terminals, and same applies to running HLSL shaders on Windows Terminal.

  • rimmontrieu a day ago ago

    Currently I use ghostty but kitty was my daily driver for years. It works great on old macOs too.

  • matheusmoreira a day ago ago

    Probably the best terminal emulator in existence today. It really pushes the envelope of what's possible to do with terminals. Also has superb font rendering and is very customizable.

  • esbranson 19 hours ago ago

    It's amazing what happens between N_TTY and the terminal to get information from an app to our eyeballs.

  • candleknight a day ago ago

    kitty is great, but I stopped using it because iTerm's terminal search feature - which I use almost daily - is much more ergonomic. The existing solution in kitty (pipe scrollback buffer to something like less/vim and search with /) is a lot worse IMO which is unfortunately a dealbreaker for me

  • ZoomZoomZoom 14 hours ago ago

    I switched to kitty after a periodic assessment of my user environment. Turns out, of modern terminal emulators, only Kitty is under a copyleft license. Considering, most of them are pretty capable and competitive, this was enough to switch.

    What I don't like:

    - No remote terminal persistence solution in the works + termux/screen incompatibility.

    - Two modes of font rendering and both are meh. Legacy is uneven and jagged, modern has unbalanced perceived font thickness for dark-on-light and light-on-dark, and the modifications can only make it more unbalanced.

    Have no complaints besides that. Default keybindings are ok, performance is great, features are plenty, configuration is easy. Font config `kitten` is great.

  • fishgoesblub a day ago ago

    Unfortunately the dev intentionally refuses to add Bitmap font support for fonts like Terminus.

    • jhbadger a day ago ago

      The author is an interesting character of strong, often contrarian, opinion. He's also the guy behind the Calibre e-book software, which was largely written in Python 2 long after that was deprecated. He even wanted to maintain Python 2 himself rather than rewrite Calibre, but he eventually realized that wasn't feasible and ported Calibre to Python 3.

      • slightwinder 13 hours ago ago

        This reads as if he started Calibre when Python 2 was already deprecated..but to be clear, it was started some years before the first release of Python 3, 14 years before the deprecation.

        And at the time of the beef, many bigger apps were not ported yet (some even till today). The authors' opinion was more an extremer version of something the whole community felt at the time.

      • jchook a day ago ago

        Incredible popular software lore here. Calibre and Kitty are two of my favorite pieces of software in the world.

    • hyperpl a day ago ago

      Also realized this when trying to get terminus to work. I like the simplicity of foot in wayland and st/alacritty in Xorg. I wish I could find a terminus replacement and I do give it a few hours each year but still haven't had any luck...

    • SlightlyLeftPad a day ago ago

      Is that because of a performance impact with rendering those possibly? Imm curious what the justification for or against is.

      • dfc a day ago ago

        The developer is up front about the issue:

        > One of kitty's fundamental features is the ability to display fonts at arbitrary font sizes, which bitmap fonts are not suited for.

        > So if you like bitmap fonts, kitty is not for you.

        It's hard to argue with that logic.

  • a day ago ago
    [deleted]
  • constantcrying 17 hours ago ago

    What even is the architecture of this project 1/3 python, 1/3 C and 1/3 Go? What? Why?

  • porridgeraisin 20 hours ago ago

    I really like kitty. The customisability is off the charts, especially the remote control feature and the kittens feature. You can do almost anything with a combination of those two.

    At the same time, it's perfectly usable with opinionates defaults.

    Run `kitten` and check out the default kittens, there are some gems in there.

  • dartharva a day ago ago

    Is it really that hard to add Windows support for these terminal projects? I understand they are more valued in Linux circles but it's not like nobody on Windows is using the terminal.

  • SaintSeiya a day ago ago

    so many advances in computer graphics to end up rendering text.

  • cursedpikachu a day ago ago

    Kovid is sort of an arrogant douchebag https://news.ycombinator.com/item?id=8213946

    • beanjuiceII a day ago ago

      almost got through a HN thread without seeing anyone making some kinda of remark, just let it go

    • singhrac 8 hours ago ago

      Let it go. He made a frustrated remark in a support thread 14 years ago where the OP escalated into calling him deliberately rude. Even if he hadn't changed at all over the years he has been contributing to open source with a product used by nontechnical people for 2 decades and deserves some grace for that.

    • aidenn0 a day ago ago

      If the most recent example is from 2011, maybe it's not true anymore?

    • wpm 12 hours ago ago

      Ask for a refund then