Tabby is a customizable cross-platform terminal app
tabby.sh
tabby.sh
This makes me skeptical about new non-native terminals. Usually the pitch is faster development so more features, but iTerm2 already being feature complete makes this unnecessary, and this isn't exactly a fast moving ecosystem. UX also isn't something that can really be competed on for a terminal app as the UX is typically dictated by the shell, tool, tmux, etc. By being non-native they also lose a significant performance advantage, even if some parts are ported to native code.
So while I think Electron makes sense for a lot of apps, I'm not convinced that it's got "product-market fit" for terminals.
But beyond the cool Quake-style "hot key" overlay terminal that's always at the ready, once you start using other features of iTerm, you'll really appreciate all the amazing features it has!
For example:
- being able to press Cmd-Shift-E to quickly show/hide timestamp overlays for your entire scrollback
- pressing Opt-Cmd-B to open the time-slider of the Instant Replay feature to go back and grab output from the terminal that's not in your scrollback because it was clobbered by `less` messing up your screen
- pressing Cmd-/ to highlight the active cursor
- pressing Opt-Cmd-M to set an annotation at the cursor so you can quickly jump through your scrollback to them with Opt-Shift-Cmd-↑ and Opt-Shift-Cmd-↓
- want to know when a long-running command finishes? Just press Opt-Cmd-A in that window or pane to set an alert and you'll get a macOS notification when the prompt appears (be sure to enable Shell Integration: https://iterm2.com/documentation-shell-integration.html)
the list goes on and on... like `vi`, iTerm rewards study of its capabilities.
No other terminal comes close...
On Linux I use yakuake for that (was in the repo), added it to the startup applications for my desktop environment.
On my Macbook Air I didn't find anything suitable.
I think that should be a window-manager feature anyway. Not sure about other platforms, but at least on desktop linux there are options to put any app into something like a quake dropdown.
Alacritty—I used it for a while but I didn’t really notice a performance advantage. I’m not sure what people are doing where terminal throughput really matters, and when Dan Luu did latency tests (admittedly, this was a while ago), Alacritty was middle of the pack.
With large amounts of output, that can be a massive amount of time. As a really simple example, try `time dd if=/dev/random bs=1k count=1000` to print a megabyte of random data, vs `... > /dev/null`.
I respect the authors reasons, but practically it just sucks balls.
Check https://github.com/csdvrx/CuteXterm for my bag of tricks :)
xterm offers the best emulation, period. The developer is reactive and maintain high quality standards. The only real issues for me are the lack of configurable shortcuts, and ligatures. wezterm is a good option if you need these, and don't depend on xterm perfect emulation.
For v2 we're investigating octagon wheels. So far early feedback is very promising, a much smoother ride and still the built in parking brake feature.
edit: just looked into the linked discussion: "The gzipped tar for this is 90MB. It's 265MB unzipped."
This is madness.
Yeap, even Sparta would bow down to a 265 MB terminal app.
That said, although I haven't tried Tabby so have a slightly open mind on that particular case, terminals seem like the wrong use for web tech. There's no shortage of native terminals on any platform.
Give it up. The ship has sailed.
I like native apps as much as anyone else but you've got to realise the absolute clusterfuck that is cross-platform development. Plus building rich GUIs is actually feasible when using tools that are actually meant to build rich GUIs (i.e. HTML/CSS/JS).
And it's only going to get better. Tauri's promising. I don't know any more than the next punter what the future will be, but my own guess would be web tech getting more significant in desktop UIs, not less. The combinatorial explosion of multiple OSs plus fragmentation of UI toolkits on each desktop platform seems to make web UIs a likely continuing target of choice for many apps. No-one will stop using software they like or need because someone they will never meet dupes a sneer about it on the internet.
TCL/Tk
You had me until this part. If those 3 were meant to build rich GUIs we wouldn't have new JS frameworks and a load of bundling tools coming out every year. They were meant to give documents structure and style, that's it. We molded them into the monstrosity they are today.
The appeal is not that they're a pleasure making GUIs with, it's that you go through the nightmare once and it works everywhere, rather than going through 3 different nightmares.
These were never meant to build rich UIs. They were meant to build a text page with a few images. That's it.
There's a reason why every single UI framework for these tools re-invents the same primitive controls like avatars and tabs.
The most feature-complete and flexible GUI framework is one that is:
- flexible. The web is anything but. You can read, for example, how Figma struggled and how inflexible the web is here: https://www.figma.com/blog/building-a-professional-design-to...
- feature-complete. Once again, there's a reason all UI projects for this "most feature-complete framework" keep reinventing the most primitive controls. Because the web has none, and creating complex controls is a near-impossibility. Also, if it was feature complete, https://open-ui.org/ wouldn't exist.
If you are actually looking for a flexible feature-complete GUI framework, then it's Qt.
I know myself too well. If I put the options and flexibility in front of me, I _will_ make use of them. Every time I hit something that's broken, doesn't work how I'd prefer, or is even moderately annoying... down the rabbit hole.
As to hopefully not to kick off a flamewar, I'll just say up front I'm wrong, an idiot, and I feel very bad about myself as I should--
But that was what finally got me onto an iPhone after over a decade on Android. I started with the ADP1 with all the hope and promise that an open platform brings. I was writing and replacing software on my phone, putting together shell scripts integrated with other tooling to automate things, etc, etc.
At some point life was just too damn busy and I stepped back and looked at all the things I want to do, and what would create the most value in my life... and messing with my phone wasn't anywhere near the top of my list. I wanted things to just work well out of the box and my choices in that matter to be basically inconsequential (if I can replace the dialer, now I need to spend brain space optimizing my dialer experience).
So I went and grabbed a phone where stuff purportedly "just works", does so in a way where I really don't get a say (I just have to learn to live with it--and I have), and more importantly when it doesn't work... there's fuck all I can do about it anyway. When it doesn't work I don't stress about it and it doesn't take up any of my time because it's not something I could fix even if I wanted to.
If you want to criticize someone's hard work, at least bring some supporting evidence.
This whole "my terminal app uses 250 kilobytes of disk space" means absolutely nothing and is just plain rude. By that logic, gedit is a full fledged development environment.
But when I actually tried a bunch of Electron-based terminal emulators on Mac a few years ago... they all felt awful. They were slow in ways I did not realize terminal emulators even could be, and they often had extension ecosystems that were similarly slow and also buggy as hell.
Maybe things have improved a lot, or maybe Tabby is an exception. (I'd love to hear from longtime users of Tabby here.)
When I type in a normal terminal emulator (xterm, alacritty, anything!) it feels "fast." There is no perceptible lag whatsoever between pressing a key and the character showing up on the screen.
Then I switch to a tty, and realize there's somehow even less perceptible lag.
I'm afraid to try one that uses Electron.
But totally, people who are skeptical about the use of Electron (perhaps only in some problem domains) are not necessarily being truly hateful towards anyone or anything.
It doesn't help that Terminal.app is incredibly performant and stable. Even when I found a cross-platform terminal with a nice feature set, watching it jank around while some build spams 50k lines of output would quickly burst that bubble.
Add tmux to the equation and have some output like that simultaneously occuring in multiple visible windows within a single pane, and Terminal.app will also struggle, in my experience. To get a smooth experience on Mac, I had to use iTerm2 and enable the then-experimental GPU acceleration in the alpha version.
I like to have my 'window management' for terminal stuff happen inside the terminal, so that my keybindings can live in my dotfiles and apply portably across operating systems. It's a great setup for me in terms of usability and efficiency, but it's also one that relies on great terminal performance. I was surprised to discover how much I'd taken terminal performance for granted!
ctrl+x cltr+e
Works on every terminal. Vim and EMACS do support the mouse, you can set your editor to a graphical one.
It didn't work on mine (iterm2 + zsh)! But in any case, I want multiline text input without losing the context of my terminal (so I can still see the command history and the output of previous commands, and can scroll back as necessary). The functionality I've seen before to drop one into a an editor (either TUI or GUI) doesn't allow for this.
I've set my WezTerm config once and have never needed to touch it since. It's been years. There's not a lot there.
But the cross platform aspect is really nice, even if in my experience using different terminal apps per platform hasn't been too big of an issue.
Maybe except for MobaXTerm feeling better than most Linux tabbed/split terminal offerings due to its usability and support for sending input to multiple remote sessions at the same time, RDP/VNC integration etc.: https://mobaxterm.mobatek.net/ (something like Remmina is on par with mRemoteNG, so nice but not quite there)
Still, it's nice to have many alternatives to choose from.
Moving on.
But I dont think it does any of that.