Foot – A fast, lightweight and minimalistic Wayland terminal emulator
codeberg.org
codeberg.org
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.
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.
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.
Related: this problem gets way worse over SSH. It would be nice if there was kind of SSH replacement that could just send what's currently on screen, plus some lines in each direction.
The idea that it's slow, that's new to me.
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).
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.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.
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.
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).
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.
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.
It's not just Java. I used vim/neovim for about a decade on and off, and then went all in on neovim for about a year (because I honestly wanted to see what's on the other side), forcing myself to believe that lie in spite of my experience screaming the opposite the whole way, but eventually came back to IDEA because it's not “good enough” if you know both of them well.
One works with code on the AST level, understands the whole project at once, and is developed as a monolithic project (not really — IDEA is very modular and is built as separate components, but they integrate so well you don't feel it).
The other works with text in currently open files and has smart features tacked on the side through language servers of varying quality (the best of which have 10% of functionality supported by a comparable IDE). The difference in how they behave and what you can accomplish (I repeat, if you know both of them well) is considerable.
There are lots of things to criticize in JetBrains' tools (terrible performance, well known bugs go unfixed for decades), but it's not just a glorified text editor.
Also, Java does not "require a giant IDE" any more than other languages do. The language — because of its static typing and good support for reflection — lends itself to writing excellent autocompletion and refactoring tools. Same for C#, F#, Kotlin. Most other languages simply don't have them, not that they don't need them — they just generally cannot have them because of heavy reliance on runtime “magic”, or small user base, or exceedingly complicated analysis (even JetBrains “failed” here — CLion is a quite poor experience compared to Rider/IDEA), or other reasons.
Maybe I don’t need my editor to “understand the entire project” because the code I work on is modular and self contained enough that it doesn’t matter.
When I need a big refactor, tests are usually there to help.
Of course, when you are working on a code base full of AbstractAutowiredFactoryBeanFactories the yea of course you are going to need some more involved tooling, because it’s impossible for a human to read.
With all due respect, I don’t think you have seen the monstrosities project can grow into over multiple years and big teams. Not everything is at the scope of, say, Foot - but even this pushes the boundaries of human understanding without tools to aid.
(walking is VIM, the Escalade is IntelliJ)
I used intellij as an example.
Visual studio and c++, rider and c#, goland and go are all vastly more feature rich than vim and an LSP.
Though now that you mention it, I recall running Tilix back when I used to run gnome. It’s been quite a few years.
Admittedly this was fifteen years ago, but I was blown away by the developers’ inability to make any actual design decisions, instead punting literally everything to a mountain of configuration options.
Case in point, the taskbar system clock. There were no fewer than six full tabs of options to customize its behavior, including the ability to use Swatch Internet Time. Everything else bought into this philosophy too, to the point where I have to believe its users spend more time configuring it than actually doing anything useful or productive.
Hard pass.
Late 90s and early 2000s were strange.
"Oh, you meant 11:00 UTC, not 11:00 Berlin time, ooops!".
KDE 3 and 4 were a dumpster fire. Even the first release of Plasma was very rough. But I switched to KDE maybe 5 years ago and never really looked back. If your experience with KDE is from 15 years, give it a shot with an open mind. It’s pretty great imo
Really, KDE just has a maximalist philosophy. Shove everything into users' faces all at once because of all possible opinion variations.
Part of why I like GNOME is that it's the exact opposite: minimalism. The options it does offer tend to be the options you actually might want to tweak, and there's not many of them. (In the GUI anyway; GNOME still has lots of options available via dconf-editor/gsettings, basically the GNOME equivalent of the Windows Registry)
I really, really, love how much I can customise though.
I also try GNOME, Xfce, and Cinnamon every new relatively big release. And, as far as I'm concerned, really like all those projects.
I must say though, I hate how GNOME locks you in to their apps. I understand their commitment, but for instance I would appreciate if they let me choose which terminal I could launch from Nautilus.
I use KDE, but it's just a matter of preferring their development tools.
GNOME is just as configurable as KDE; the difference is KDE bothers to make any of these settings discoverable.
Sometimes I don’t even think they’re the best for me, but I try anyway.
https://www.gamingonlinux.com/index.php?module=statistics&vi...
KDE is just the best overall DE today.
But I'll keep trying it. Perhaps they'll get there before I die of old age.
I use Gnome when the desktop is irrelevant, like for instance my gaming box. Sway for when I want to optimize developer experience.
PS: i am issue number 3 hueh
Back when I used alacrity I kept foot installed for emergencies where I’d broken hardware acceleration.
wait... foo in foobar isn't pronounced like foo in foot??
I’m not aware of any specific examples where <foo> and <foot> have the same vowel.
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.
Foot is fuht, like good
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.
This is also really useful. I use it in Offpunk to display pictures when browsing the web.
Lame excuse. Try at least.
I definitely noticed it when I switched from terminator to kitty.
Now the race of which one will cat a large file the fastest is a bit pointless, but it should be fast enough not to add more than a frame of latency for regular use.
Some Electron-based things and Steam are the main holdouts I've noticed.
I suspect the Electron things at-large will be sorted out before Steam... they simply need to rebase while Valve has to modernize their libraries (ie: vgui)
I was very hopeful that the redesign would be sufficient; it was not.
Thank you for the information, though - important to be current