Get the top HN stories in your inbox every day.
cout
chungy
libvte is a big reason that GNOME Terminal tends to be faster than competing terminal emulators, including xterm and rxvt. One of VTE's tricks is that it doesn't bother painting the screen if the contents are going to be overwritten in the next frame anyway; you can scroll through megabytes of data in fractions of a second this way.
The idea that it's slow, that's new to me.
rascul
I have a 655MB file with 1.5 million lines of lorem ipsum. I timed a cat in several terminal emulators. For this simple test, gnome-terminal beat xterm a little bit but wasn't anywhere close to the rest:
foot 0m9.410s
alacritty 0m16.881s
konsole 0m36.737s
gnome-terminal 1m1.096s
xterm 1m16.919s
Foot has an page that explains when and why it's fast, and also when it's not, compared to alacritty.somat
There can be distinctly different run speeds between bulk entry dumb terminal and opcode heavy tui behavior.
https://tomscii.sig7.se/2020/12/A-totally-biased-comparison-...
And I don't really care that much but I will say that while it is a bit of a dog in the bulk display race, no one beats xterm in the keyboard latency contest.
audidude
Glad this Termkit prototype work is right on track then. Generated a 655MB lorem text file and it came out at 0m8.186s.
audidude
I've heard various things about VTE over the years including:
1. They "like" xterm because i get value out of screen tearing and feeling like they can catch what is scrolling by (even though it's literally seconds slower) 2. They don't like the 40 fps cap it currently has because it predates reliable access to vertical sync information in applications. 3. They are using the GTK 4 port which draws with cairo and uploads surface data on every frame update.
The patches I put together for VTE this week (while having some down time with Covid) address a portion of that by making it render fonts/rectangles/emoji/etc on the GPU using GTK's OpenGL renderer (which I also wrote a large portion of).
cout
Years ago, the biggest bottleneck with VTE was that it was storing the scrollback history on disk (https://bugzilla.gnome.org/show_bug.cgi?id=631685). Eventually support for an in-memory scrollback buffer was added, which improved the situation considerably.
Long dumps of output with VTE seems to be fast enough, at least with a barebones program that creates a VTE widget and doesn't do much else. But Gnome Terminal was noticeably slower than my naive program, last time I tried it. I don't know why.
bitwize
xterm has a command line flag that enables the same speed hack. It's disabled by default. The major difference between xterm and the others is that xterm emulates a terminal and libvte-based emulators, Kitty, and the like are more like shitty xterm emulators. Accuracy is preferred over speed, and certainly over silly microbenchmarks like cat'ing a 655 MiB file to stdout and timing how long it takes to display.
seanhunter
Alacritty is wildly and obviously faster than gnome terminal in use. It's super clear when you try it out.
zajio1am
I think this does almost every terminal, including rxvt (with the notable exception of Linux console).
DiabloD3
rxvt used to be my go-to terminal, but it was only fast in the era where we had actual 2D hardware. That era ended, oh, like 15 years ago? Ish? On the AMD side, Radeon GCN 1.0 (think 7970) came out 12 years ago, and that was their first card that entirely removed 2D hardware (which means all 2D ops are handled by optimized shaders; in Linux, that'd be handled by glamor); but wasn't the first gen of AMD that was in the process of removing 2D, and nvidia was about a gen behind every step on that.
Between then and now, I ended up trying every emulator. The libvte ones tended to be slow, buggy, and missing features (although, nowadays, it's sorta cleaned up its act, but not entirely). The terminal community has been able to write three emulators that make for good urxvt replacements: alacritty, wezterm, and kitty.
Foot seems like its trying to join those three, but it's lack of other-OS support (since it's focusing on being, purely, the best possible Wayland terminal) kind of holds it back (unless you're only using Linux, then obviously this doesn't apply to you).
walteweiss
Not just Linux, FreeBSD as well.
doublepg23
It’s interesting you call out GNOME Terminal, it’s always been my favorite terminal.
jampekka
I don't think I've ever encountered a problem where terminal emulation would be too slow. What I do have encountered are terminal emulators that go bonkers and require some arcane configuration magic to figure out what to emulate.
GNOME terminal works and looks pleasant to boot. In fact it works so well that I almost never think of it although I use it all the time.
jeffbee
> I don't think I've ever encountered a problem where terminal emulation would be too slow.
You don't notice it until you get into a situation where the terminal (emulator) insists on showing you everything flying by, instead of just skipping to the end, in which situation you may be waiting a really long time. Some emulators also cannot deal with, say, 1 million lines of scrollback and searching.
jampekka
That I've encountered a few times but tail or less deals with it fine.
arghwhat
Being fast is not just about hitting the deadline for 60fps or more. Ingestion performance (cat /dev/urandom), startup time and overall latency are also important factors.
There are a few terminal emulators that are fast enough that further optimization is mostly for the heck of it...
And ugh, gnome terminal. The internet explorer of terminal emulators, only used to install foot and alacritty.
jhoechtl
Anyone has experience with Gnomes new "default" terminal console? How is it feature-wise (compatibility with different terminal emulations) and performance-wise?
somat
zutty has an interesting article how it does it.
aquova
I've been using Foot for a while now, having switched to it from Alacritty. I like it. I don't really require much from my terminal other than for it to "feel" snappy and to have some cosmetic customization, and from my own playing around, it does both well.
SamuelAdams
I tried it for a week or so on Ashai. It was super fast. However the lack of tab support ended up being a dealbreaker. Multiple instances are ok, but I prefer tabs at the top of my application.
SushiHippie
I suppose foot works best with a tiling window manager, it's also very often the default with swaywm
walteweiss
Which allows you to do tabs (with wm). So it has tabs if you really need them. Also foot can be used as a server and client, which I use all the time. It allowes for instant start and less memory consumption, when you need many terminal windows open.
teo_zero
I've never understood the love for tabs. They stop you from seeing two terminals simultaneously. I mean, we invented windows exactly for that, didn't we?
all2
It depends on what you want to manage your tabs. For example, a good tiling window manager will handle tabbing for you. In i3 Meta-w will swap into tabbed mode.
aorth
I use tmux (and before that, screen). Same paradigm as tabs, with a few benefits. Might work for you unless you are really set on actual tabs.
pkulak
You sound like a fellow Sway user. I switched too for a bit, as it’s the new blessed terminal, but I had a couple glitches in a TUI app and switched back. Not really sure what I could have really gained by switching. They are both great.
WD-42
Unfortunately there is no support for ligatures. A good programming font like fira or source code pro makes for such a quality of life improvement. At least easier on the eyes.
It seems that many terminal emulators can’t or won’t support them, because they are hard to render properly.
Sticking to wezterm for now.
quasarj
Why would anyone want a feature that hides the truth from you???
pkulak
In the age of Vim being a full IDE, these kinds of things only become more important.
vermilingua
Does anyone have a handy guide for getting rolling with (neo)vim as IDE? I’ve been using LunarVim which mostly works but has enough annoying edges that I want to roll my own config; but there is a lot of ground to cover and I’m not sure where to start.
maxRN
Kickstart.nvim [1] is a good starting point. One big Lua file which gets you 90% there and shows what’s possible while making it easy to change/add stuff and getting started doing your own config.
phatskat
I’ve really enjoyed AstroNvim and have used it pretty regularly for more than a year now. No major breaking upgrades, and very good support and user manual.
maccard
Vim is a not an ide. Intellij with java is worlds apart from any vim setup I've ever seen in the wild.
WD-42
That’s because writing Java all but requires a giant, heavy ide. Like IntelliJ, eclipse or netbeans, and always has. Vim + lsp for basically any other sane language is good enough.
arzig
I can get by with https://github.com/mfussenegger/nvim-jdtls
undefined
eddythompson80
Tbh, I never ventured outside of Konsole. Never felt I was missing something or was limited by performance or anything beyond what the stock Konsole offered.
mxuribe
I feel the same...and often, when i feel that, then maybe i'm not the target audience for said tool/app.? (Which is not bad either way, simply that as good as the tool/app. might be, its just not for me.)
zokier
Konsole is decent if you are running kde, but I'd guess majority of people don't
shmerl
I'd guess the opposite. At least looking at GOL stats:
https://www.gamingonlinux.com/index.php?module=statistics&vi...
KDE is just the best overall DE today.
darthrupert
I try to use KDE every year or so, and I've been doing this since KDE 1.0. It consistently keeps not delivering the experience I want. They have an uncanny ability to keep inserting "jank" everywhere, making the whole experience feel almost good but not quite.
But I'll keep trying it. Perhaps they'll get there before I die of old age.
eddythompson80
That makes me sad :/
Though now that you mention it, I recall running Tilix back when I used to run gnome. It’s been quite a few years.
grayhatter
it makes you sad that different people do things differently from you?
ta988
There was this comment in another submission today that is worth a read on why some terminals are faster on some tasks and not others https://news.ycombinator.com/item?id=37623669
ignorethefacts
Foot has an opt-in server mode so that if you are used to running multiple terminals at once, you can save a little memory. Great for a low-end device. Of course, if the server is closed/crashes, you lose all the client terminals which can be annoying.
WhyNotHugo
Does the server ever crash? I’ve been using foot in the “normal” mode and I don’t recall it ever having crashed.
nikp123
Unfortunately it tends to do so randomly (was using foot for like 3 or so years by now). And in the end you'll only ever end up saving single digits of RAM. I suggest using server mode *only* on a RAM constrained device like a SBC or a embedded device (Tablet running Linux).
PS: i am issue number 3 hueh
walteweiss
I use it this server-client mode for a couple of months at least, and I never experienced any crashes. Not that I see a huge difference, just it fits my workflow better. I do have many many terminal windows open at the same time, but most of them aren’t busy doing something. They are either some kind of app (e.g. ranger) or a space I usually come up to do something specific (e.g. this workspace I use for sshing that server and that workspace to do things locally).
skyfaller
I was very impressed with Foot on my MNT Reform, where I was having trouble getting Alacritty to work (hardware issues too difficult to overcome, and I say that as someone who was able to apply a patch to make Alacritty run on my Pinebook Pro before the mainline version supported the hardware). Foot installed and ran like a breeze, and never felt slow even with pretty minimal hardware.
WhyNotHugo
A big upside of foot is it not being GPU accelerated. It works in situations were hardware support is missing.
Back when I used alacrity I kept foot installed for emergencies where I’d broken hardware acceleration.
dundarious
When I used a Raspberry Pi 4 with 64bit kernel+userspace and Wayland (sway), foot was the only native terminal that didn't eat up lots of CPU. I presume some kind of OpenGL vs OpenGL ES issue.
3np
Similar setup, I recall apart from foot wezterm was also fine.
qudat
Been using `foot` for a year plus at this point. No issues, works great, very happy!
ta988
Same here works well, but I am eyeing others for image support at some point.
ta988
So i lokked a bit more and the sixel support seems to be decently good in foot (and i need something that works in tmux) you can even play doom or videos at 30fps https://codeberg.org/dnkl/foot/issues/481
kitotik
Foot has sixel[0] support. Is there more robust image support in Kitty and others?
lordgrenville
This made me curious about image support in the emulator I use (iTerm2), and I learned that it has these cool utilities[0] that (inter alia) add aliases for imgcat and imgls, which are exactly what they sound like.
fbdab103
What is your workflow where you use images in the terminal?
ta988
Images in vim org notes with neoorg.
AndyKluger
Wezterm does pretty much everything.
ireallywantthat
Use kitty. Works great for me.
NooneAtAll3
> if you pronounce the foo part of foot the same way you pronounce foobar, then foot sounds a lot like the Swedish word fot
wait... foo in foobar isn't pronounced like foo in foot??
lambda
What is your native language, and if English, what dialect?
For me, the "foo" in "foobar" has the same vowel as "toot", which is different than "foot". Do "toot" and "foot" rhyme for you.
I speak American English, from Boston/New England but without a strong Boston accent.
3836293648
Foo is ooo like in ooze
Foot is fuht, like good
seanthemon
It is. Surely it is, right?
Hemospectrum
In most English dialects, <foot> is pronounced /fʊt/, not /fut/.
I’m not aware of any specific examples where <foo> and <foot> have the same vowel.
AndyKluger
Not in New York, at least. Foo rhymes with Blue and Flu, while Foot rhymes with Soot and Put (same vowel sound as Book, Look, Cook, etc.).
ayoisaiah
This certainly looks interesting. I've been using Kitty for a while and it works great and supports so many features. It would be nice to see how it compares to Foot in terms of speed. I'm also curios about Ghostty, the in-progress (but currently private) terminal from Mitchell Hashimoto.
p4bl0
How do TUI software like nano or tmux that support mouse input behave under Wayland? Do mouse inputs work as they should? Has someone here who's using Wayland give it a try?
I have no idea how ncurses (I guess) interacts with the mouse through the terminal so I don't know if it relies on X11.
sammko128
Well, all the terminal emulator needs for this is the cursor position inside the window, which Wayland provides. Nothing X11 specific here. Ncurses and similar just ask the terminal emulator to provide mouse click Escape codes.
p4bl0
Thanks for the explanation! :)
probotect0r
I use Wayland and haven't noticed any problems with mouse input in tmux while using the Kitty terminal.
p4bl0
Thanks for your answer :) !
Get the top HN stories in your inbox every day.
As someone who has dabbled in terminal emulation (I was the maintainer of Console Telnet for Win32 twenty years ago), I have respect for someone who takes the time to optimize a terminal emulator by building a fast parser and being careful with screen updates.
That used to be the only way to make a graphical program fast, but these days hardware is so fast you can render an entire scene before the next screen refresh and still have cycles to spare. As long as you initiate rendering early enough, it's hard to go much faster.
I'm curious how foot compares to older fast terminal emulators such as Eterm, xterm, and rxvt. I think libvte is neat (anyone can write a terminal app now) but is it resulted in terribly slow programs like gnome terminal. Before that terminal emulators tended to be much faster -- they had to be, because hardware was so much more limited.