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.
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.
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!
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.
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.
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 :)
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.
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.
> 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.
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.
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:
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.
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.
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.
"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.
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.
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.
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.
>"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.
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.
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.
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.
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).
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.
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.
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.
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
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.
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.
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.
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...
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.
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.
I've been using alacritty [0] for a while now. Really happy with it. I prefer it over the Windows Terminal, as it feels faster for me. I run a single instance with WSL on the desktop and use tmux for multiplexing. Executing powershell inside tmux isn't an issue. If I need an elevated shell, I use gsudo [1].
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.
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.
[foot](https://codeberg.org/dnkl/foot) is an excellent st alternative on wayland.
Thanks, this is right down my alley. When I make the switch from X to Wayland, I'll check this out.
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.
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.
Odd. I’ve never had a new window or tab take more than maybe 20ms.
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
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.
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...
Don’t most terminals offer this?
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.
Yeah, I thought this was a feature of the shell, not of the terminal
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 :)
> infinitely customizable
Except for loading your own shaders, which they decided they weren't interested in and wouldn't support.
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.
? what do you think we're doing with our desktop environments?
What do you think we DON'T DO with our DEs? ;)
run terminals
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.
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.
Finally a terminal with banner ads support!
Ghostty supports kitty graphics protocol for those interested.
> 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.
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.
I'd like to introduce you to conky
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.
oh, i already use lemonbar for that. i was hoping for something a little more interesting than info bars :)
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...
See https://news.ycombinator.com/item?id=24645050 .
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:
They are all terminal emulators. You have probably, as one who has never used the command line, never touched an actual terminal.
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.
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.
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.
I probably wouldn't describe either as a human interacting with a shell, but nevertheless point taken.
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.
"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.
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/
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.
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.
>"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.
Technically true, but I’ve never heard anyone say “open a terminal emulator and type…”
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.
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.
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).
If your only examples of terminals are in museums, I'm taking over the word.
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.
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.
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.
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.
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.
Currently I use ghostty but kitty was my daily driver for years. It works great on old macOs too.
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.
It's amazing what happens between N_TTY and the terminal to get information from an app to our eyeballs.
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
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.
Unfortunately the dev intentionally refuses to add Bitmap font support for fonts like Terminus.
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.
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.
Incredible popular software lore here. Calibre and Kitty are two of my favorite pieces of software in the world.
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...
Is that because of a performance impact with rendering those possibly? Imm curious what the justification for or against is.
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.
What even is the architecture of this project 1/3 python, 1/3 C and 1/3 Go? What? Why?
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.
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.
I've been using alacritty [0] for a while now. Really happy with it. I prefer it over the Windows Terminal, as it feels faster for me. I run a single instance with WSL on the desktop and use tmux for multiplexing. Executing powershell inside tmux isn't an issue. If I need an elevated shell, I use gsudo [1].
[0] https://github.com/alacritty/alacritty
[1] https://github.com/gerardog/gsudo
I asked the same question for years but then Windows Terminal appears out of no where and is a real godsend.
https://github.com/microsoft/terminal
I am really happy with https://wezterm.org/
so many advances in computer graphics to end up rendering text.
Kovid is sort of an arrogant douchebag https://news.ycombinator.com/item?id=8213946
almost got through a HN thread without seeing anyone making some kinda of remark, just let it go
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.
If the most recent example is from 2011, maybe it's not true anymore?
Ask for a refund then