One thing I was looking for just yesterday was a way to dump my terminal's (alacrity) scrollback - escape sequences and all - to stdout. I wanted to pipe it to my text editor to search. Alacrity doesn't seem to have this unfortunately, but wezterm does with get-text.
Have you tried xterm? It takes a bit longer to configure, as its defaults are universally horrible, but I've found the result to be worth the effort. FWIW, it has this feature you are talking about as part of it's "print" functionality. I bound ctrl-shift-P to print-everything() and then set printerCommand to `xterm -class modal -e sh -c 'vim +"setlocal buftype=nofile" +"g/^$/d" +"normal G$" - <&3' 3<&` (which might be crazy; I didn't think through it for very long). You can use printAttributes to tell it to include the format escape sequences, though (personally) I have that turned off for this purpose (as I find it makes it more difficult to search in my editor; but, again: I didn't spend much time on the editor side of this arrangement).
Hmm I'll have to look into this. After some basic playing around with this feature it might be workable. In my head I had my editor taking over the current program in the terminal, and after exiting it would return to the previous program, but that involves some backgrounding and job manipulation that I haven't given too much thought. Thanks for the tip.
The main feature for me is splitting panes. I used to that in tilix and got western working exactly the same (can't stand tmux , sorry).
The Lua configuration is very intuitive as well.
I do get some indirect crashes when Xwayland crashes, which is rare. I had to disable Wayland support in wezterm because the window decorations aren't great yet.
I'm with you! tmux is pretty much a non-starter for me beyond a remote job manager.
My window manager (Sway) already requires enough wild incantations. If any, I really appreciate simple integration in the terminal.
A little more than 'foot' but not a lot. Tabs/panes, like you say. It gives some more granularity to the organization without a lot of new buttons to push.
I've taken most of the Tilix defaults through several! Currently Kitty... though I may try WezTerm.
Nice write up, may try out WezTerm though I only just recently switched to Kitty and I don't like hopping around too often. Correction related to Kitty, though. It does not use either YAML or TOML, it has its own simple config DSL and is otherwise fully scriptable via Python.
I wish I could bind applications to slide out from left and right, I use slidepad on Mac which is a slide out web browser, and TotalFinder which has a visor feature for the bottom. Little things like this keep me on Mac to be honest
In Quake, the video game, a console would slide down from the top of the screen when you pressed tilde. Combined with splitting terminals its incredibly convenient to have 4 or 5 terminals toggle on a hotkey
I like it too, and have switched from iTerm2 to WezTerm recently. I tried some others, but WezTerm has window splitting which I use quite a bit so settled on it. Lua config is nice, although I am a minimal config kind of a person, so only have a few settings in there.
Yeah, iTerm2 has a lot of other fancy features, but I just rarely or never used them, so don't really feel like I miss anything.
Recently switched to WezTerm and I'm very happy. Was using kitty before that – loved the set up and simplicity coming from iTerm2. WezTerm is leaps and bounds better in terms of what comes out-of-the-box. My terminal config is short enough to sit all in one screen on my editor. After that, the terminal just... gets out of the way and I don't need to think about it.
But the straw that broke my back with using kitty was, I'd end up encountering issues or trying to recreate some of iTerm2's features, only to end up time and again on kitty's maintainer's terse and dismissive comments.
e.g. IIRC his answer to "How do I set up tmux with kitty?" was something like "Don't, tmux is dumb" and closing it. Eventually I gave up.
Yeah: the kitty developer is definitely the sort who believes that he not only knows better than everyone else how to use a terminal, but that everyone else's opinions are fundamentally invalid. That his terminal fails to correctly render such stalwarts as the Linux "make menuconfig" UI and there are no settings to fix it as he doesn't believe in settings is, to me, telling. I then find reading his posts on issue trackers not just insulting, but even "activating" in a way that is really unhealthy, as it results in me feeling a need to "defend" some random bit of terminal usage with just as much vigor, lest he get away with making everyone else sound like THEY are crazy... it really isn't healthy. I can't know for sure--as we don't live in this reality--but I'd like to think that, even if he and I agreed on literally everything there is to do with terminals, that I'd still have the same mindset that I'd rather write my own terminal than ever use his.
How is the dev a jerk when they don't want to invest time into patching their app for the quirks of another app? Especially when kitty seems to have tmux-abilities out-of-the-box. I mean, you can like their solution or not, but calling them a jerk for not supporting your way?
It depends upon what you mean by opinionated. There is software that expects users to behave in certain ways and there is software where the developer is quite firm about what they will and will not implement. I would say that calibre and kitty fit into the latter category. These applications offer a lot of features and are very configurable, yet they also don't try to be everything to everyone.
While I don't know why Goyal takes the approach he does, I would imagine that a lot of demands are placed on him simply because his software is so powerful (and, in the case of calibre, pretty much the only program in its domain that goes beyond serving basic needs).
Remember that this is the guy who said he would personally maintain python 2 because he didn't want to rewrite calibre for python 3 [0].
I try not to knock the guy, given that kitty and calibre in particular are amazing programs, but I still think you've gotta keep that in mind when engaging.
FWIW, his conduct on the MobileRead forums where he answers questions from newbies and enhancement requests are far more polite and charitable. His ire seems to be reserved for fellow programmers.
> he answers questions from newbies and enhancement requests are far more polite and charitable. His ire seems to be reserved for fellow programmers.
Some programmers (like myself) have little patience for people they consider should know better and are wasting their time. These same programmers are far more charitable to newbies because they know newbies are still learning.
> Remember that this is the guy who said he would personally maintain python 2 because he didn't want to rewrite calibre for python 3 [0].
I read his "I am perfectly capable of maintaining python 2 myself." as "I am perfectly capable of maintaining [calibre running on] python2 myself", which is completely different.
I'm sure some people might also find his answer quite terse and dismissive ("No, it doesn't."), but I read it as a simple statement of facts, using the same tone as the original bug report, which itself is quite terse and imperative "Python 2 is retiring in thirty months. Calibre needs to convert to Python 3."
> Some programmers (like myself) have little patience for people they consider should know better and are wasting their time. These same programmers are far more charitable to newbies because they know newbies are still learning.
Some programmers are life-long learners and know a very different subset of things. It’s important to remember that just because something is obvious to you doesn’t make it right and doesn’t make it obvious to others.
Totally agree. Though, usually these programmers know how to properly ask a question, make a bug report and/or feature request.
They wouldn't, for example, just barge in an oss project with arguably low value statements like "Python 2 is retiring in thirty months. Calibre needs to convert to Python 3."
I am guessing you haven't interacted with the developer of kitty. It is astounding how needlessly rude he is. No matter our expertise, we all have areas of ignorance and it is precisely due to that ignorance that we may not have the language to "properly" frame our question. If we had that knowledge, we wouldn't be asking the question in the first place.
I have never seen a maintainer go so far above and beyond to condescend and insult people asking questions -- not making demands like your example. In my case, I asked a question about something that wasn't working as I expected in the github discussions and he repeatedly insulted my intellect (while simultaneously blaming another program when it was in fact a kitty misconfiguration that was causing my issue). He did eventually leave enough breadcrumbs that I was able to solve my problem but rarely have I had such a negative experience with asking an (IMO) not stupid question.
> I read his "I am perfectly capable of maintaining python 2 myself." as "I am perfectly capable of maintaining [calibre running on] python2 myself", which is completely different.
That doesn't make sense to me in context. Presumably he was already maintaining calibre on python2 at the time, so what additional information is he adding?
It seems more like he was saying "I am perfectly capable of maintaining my own fork of python2 for however-much-python-I-need to continue developing calibre." Which, granted, is not as grandiose as "I will become the maintainer for the abandoned python2 language for the internet at large to use", but it is still a rather tall order.
You shouldn't believe things you read in hacker news comments. saurik is lying, probably because he once requested some feature that the kitty maintainer didnt like and refused with good reasons, which made saurik want to curl up into a ball and cry. To say kitty has no configuration options is the exact opposite of the truth. Proof: https://sw.kovidgoyal.net/kitty/conf/
I mean I might be "lying"... or I might be confusing him with the Gnome Terminal developers, with respect to that one specific tiny quote about "not liking settings".
(FWIW, the setting in question with respect to make menuconfig is "use bold as bright", where the kitty developer is on a vendetta to refuse the historical precedent. He is very adamant that he knows better than most everyone else on this point.)
Either way, I have never claimed to have talked to the kitty developer: I -- as well as multiple others on this thread -- are saying we've read how he handles arguing about terminals, and we don't like it.
Regardless, I do happen to be curled into a ball, and I do happen to look like I am crying... but it is merely because I am sick: I use xterm and I am very happy with the software and like the author.
> where the kitty developer is on a vendetta to refuse the historical precedent
I mean, he's not wrong. Everyone else should update their shit to be proper so that he doesn't have to deal with all this legacy nonsense. It's just annoying as hell for people using it right now.
OK so you are not lying, you are just wrong. Now that you have reduced the scope of your personal attack from he doesn't like settings to he doesn't agree with me about one thing, perhaps you should exercise your new found honesty a bit more and link to the issue where he refused to implement bold as bright and gave his reasons, which are perfectly sensible, namely that having that option means that the developers of terminal programs cannot rely on having a bold font face. Terminals are already limited to using only a single font size, you want to take away the ability to use bold faces as well. And you are trying to sell this as the kitty developer being unreasonable. Shame on you.
Look: my issue is that the kitty developer clearly thinks of himself as "God's gift to terminals". I pointed at one specific issue that I think is "telling" of an attitude of "I know better than everyone else", but I am not at all relying on that issue.
I just went through and started looking at recently closed issues on GitHub. I got through four before I found an example of what I think is the problem, and while this is a fairly benign one it is also clearly awkward enough that it shouldn't happen this often and is more than sufficient to clarify the complaint.
In this one, someone carefully points out an issue with a common script for emacs designed to implement the kitty-specific protocol (the one that kovid insisted everyone get on board with, as opposed to the prior art that already had traction, so now we have two competing ones; but that's my complaint, not the poster's).
Kovid then decides to pick a fight by being abrupt and a bit snarky in his response. Again: the issue was just technical and is good enough that I can probably debug the issue... I dream of getting bug reports like this, so this isn't the kind of response I would expect.
> I'm afraid I have zero interest in debugging emacs and kkp.el.
This is just downright mean-spirited. You can say something similar in a way that isn't grating in the same way, but Kovid prefers being grating, and clearly the person in the issue also took it this way and they get snarky back:
> If you aren't interested that's okay, of course.
> OTOH, I have zero interest in debugging Kitty. I'll just use Alacritty or iTerm :-)
Given Kovid's comment, I think this is in some sense a leveled response: Kovid is demonstrating he has little interest in being collaborative or helpful, even in an ecosystem that he created. I certainly don't act like that, even when people would use tools I actively disagreed with, I still would always help them debug it.
Kovid, of course, escalates this one further and leaves the thread in a pretty demoralizing place.
> Excellent! Don't let the door hit you on the way out.
Damn :/. That is what I am talking about. He isn't just grating in the way Linus was grating -- though Linus, to be clear, was also an asshole who, at some point, started to realize just how much of a problem he was being and is a lot better today -- and I also don't think he is just grating in the way that people who moralize (I am guilty of this one) do... he's just kind of mean, even when it makes no sense, and the result is that many issue threads with him get this "edge" about them where everyone is slowly escalating the burn until they just drop out of the thread entirely for their mental health.
(Part of me actually wants to now debug this specific issue, but I'd be doing it out of spite, and I do not want to be dragged into that. I only commented on this at all as I didn't want the person further upthread of me to feel alone in commenting on the problem with Kovid, and so I think it is reasonable that I get some of the flak here as I'm willing to bring the receipts.)
So, no: I simply don't think it is fair to say I am being dishonest, and the specific thing you quoted from me about him not liking settings is obviously not the point and wasn't something I delved into, as it didn't matter why: the issue was how... FWIW, in a thread where a bunch of people are all agreeing that Kovid turned them away from using kitty, maybe at least some of us have a point?
Let's discuss the parts you left out in your carefully constructed attempts at character assassination.
1) kitty has a template for issue reporting that the person that reported that issue didn't use, which means it isn't a carefully constructed report.
2) The issue is probably with kkp.el. I don't know about you, but I don't expect maintainers of open source projects to debug all issues in their own projects let alone unrelated ones. Kovid went out of his way to tell the OP exactly how to provide useful debug information. And he did so within a few minutes of the issue being opened.
3) The part you complain about is him saying he has zero interest in debugging kkp.el and emacs. Which is perfectly reasonable, again, why should he have an interest in it. He provided the OP with the means to give him information that he would be interested in debugging instead.
4) He then gets told that the OP would rather use some other terminal rather than provide the debug information he was asked for. Do you have any conception of how rude it is to go to some projects issue tracker and then state you are going to use a competitors product.
5) You tried again to insert an unjustified swipe at Kovid, with "the keyboard protocol he insists everyone get on board with". In reality that keyboard protocol is completely optional, an no one has to use it. The fact that everyone does actually use it, is testament to its being light years ahead of any of the alternatives and represents weeks of hard work on the part of Kovid to finally bring sanity to this corner of the terminal ecosystem. An effort he made for the good of the community. And an effort that has succeeded, since pretty much all modern/maintained terminal software support the protocol as it is clearly superior to the alternatives.
6) You were at best mistaken in making your claim that he doesnt like settings, but given you clearly have an agenda against someone who has done nothing to you other than provide the world free software, I think the default assumption is malice not incompetence on your part.
And yes by all means dont use kitty, I have a strong feeling that Kovid, who has been providing software used by millions of people for decades has reached a point in his life where he recognizes that some users cost way more than others. He is likely very happy that you and people like you give his work a miss.
A position I greatly sympathise with. People that report issues to open source projects need to remember they are asking for help, it behoves them to put in the maximum effort they can to reduce the burden of the free help they are NOT entitled too.
Does WezTerm support an equivalent of iTerm's "hotkey window"?
For those unfamiliar, that's a window tied to a show/hide keybinding which when shown floats above all other windows, making a terminal instantly available everywhere - a feature I could live without, but don't care to. I'd love to switch for all of WezTerm's other features, but without that it's simply a nonstarter for me.
I don't have a keybinding to hide, but you could easily achieve that by inspecting the active window with `hs.window.focusedWindow()`/`hs.window.frontmostWindow()` and making the behavior conditional based on the application: https://www.hammerspoon.org/docs/hs.window.html#focusedWindo...
Note that this does only the “show/hide’ the window part;
The iTerm2 hotkey window, is a floating window, which for example also works in a space with another Fullscreen window/app opened (without moving to another space.)
I do it using https://gist.github.com/meowtochondria/8b99b8fbf364eec41ef66... on my Debian based machine running X11. I've bound this script to a key as a global shortcut using OS provided facilities. See the comment on gist if you have a different setup and want to adapt it to your needs.
Algo:
1. Find path to wezterm binary by looking at desktop file
2. Use pgrep to get pid of running binary from previous step.
3. If no window is running, launch desktop file using gio
4. If window is running, bring it to front using wmctrl
That's related to it, but the feature per se is more like a specially handled variety of iTerm's profiles. See https://iterm2.com/documentation-hotkey.html, section "Dedicated Hotkey Windows".
I mostly like kitty but I’ve noticed that it takes a couple seconds to start up when I put my cpu down to 400Mhz. (Which might seem like an odd thing to do, but xterm handles it fine and, hey, why do we need billions of clock cycles to start up a terminal? That’s ridiculous).
400 is a bit extreme, it is as low as my clock will go. But I often go down to 1200 or 800.
I have an OLED screen and mostly use black background terminals, so I can get some pretty decent battery life out of it, especially at night when I dim the screen.
Dim/red shift/slow CPU is a nice low-distraction night time mode IMO.
Plus it is keeps my palms comfortable even if I accidentally run a computationally intensive code.
I recently moved from Kitty+Tmux to Tmux only setup. I think the maintainer has implemented most of the features in tmux like split panes, switching, changing layouts etc and is probably why says what he says.
I've been a long tmux user, but I've migrated to Kitty only setup. To make my muscle memory feel at home, I configured Kitty with nearly the same keybindings as tmux. Here is my setup https://blog.funcer.xyz/blog/kitty-terminal/
I appreciate his efforts, but tmux from my cold, dead hands. kitty is nice and fast, but tmux is in my blood (and on remote servers where kitty isn't).
As I get older, overly opinionated and dismissive maintainers are perhaps the biggest red flag for avoiding a project now. They often have what looks like the best product out there, but once you get embedded in the product you get stuck in their choices and have nowhere to turn.
> e.g. IIRC his answer to "How do I set up tmux with kitty?" was something like "Don't, tmux is dumb" and closing it. Eventually I gave up.
Heh, I switched from Kitty to Wezterm due to the exact same types of comments from the maintainer. It's his project of course, and he's a great programmer, but some humility wouldn't hurt.
While I mostly agree, it looks like the fair amount of the article is about his attitude.
Something that was a bit surprising was the combative tone that Calibre's lead developer Kovid Goyal took in the comments on the bug. Rather than working with Donenfeld to see what the problems were, he dismissed most of the bugs as invalid. Even after Donenfeld tried to further point out the problems, Goyal was rather sarcastic in response:
You mean that a program designed to let an unprivileged user mount/unmount/eject anything he wants has a security flaw because it allows him to mount/unmount/eject anything he wants? I'm shocked.
This does not appear to have changed if you look at his responses to issues. I linked the tmux stuff in a different comment (same root).
Both skills and personality can chance a lot over a decade and I'm glad you're not quick to jump the gun. We need more people like that. But given brash comments over the past few years, it does not seem like this part has changed. He's been working on kitty for 8 years and has only accepted minor PRs and is dismissive of user issues.
> the exact same types of comments from the maintainer.
Kovid really bugs me and is a reason I turned away from kitty too. I saw his character when looking up tmux issues. He's brash like Linus, but at least while Linus is calling you an idiot he'll tell you a better way to solve your problem. Kovid seems to think tmux is really about splitting panes and peoples' main draw to it isn't about persistence...
On a side note: I really don't trust devs who reply to issues and close them. I get wanting to remove the issue from the task list, but just set up an action for stale issues (which has an added advantage of pinging the user who may have just lost the message). Otherwise let the user close because they might have follow-up questions. It's just disrespectful and always a red flag. I know lots of users are dumb (I literally just got an issue on a research project with someone asking how they fine tune our model...), but noobs are wizards in training. You don't have to be nice, but don't be mean either. Plus, you'll just piss off people who could end up helping you. And if you don't want help, I expect your project to decay when you get bored. Definitely not what I want from a terminal
"Are you sure you want to close this window",
meant to only trigger in interactive scenarios like ssh or htop, triggered on the regular shell sometimes. Not even consistently
> The gcc people have a BAD attitude. When the meaning of "inline" changed (from a "inline this" to "hey, it's a hint"), the gcc people never EVER said "sorry". They effectively said "screw you".
> Comparing it to the kernel is ludicrous. We care about user-space interfaces to an insane degree. We go to extreme lengths to maintain even badly designed or unintentional interfaces. Breaking user programs simply isn't acceptable. We're _not_ like the gcc developers. We know that people use old binaries for years and years, and that making a new release doesn't mean that you can just throw that out. You can trust us.
Which I think is an important lesson here. About how when you build tools, people build around you and what they have to work with. But I'm surprised this attitude is not more common, because I don't know a single person who is unfazed when changes happen that break their programs/workflow. It's reasonable for someone to be upset. And not a single person is ever like "no worries, I'll go read the commits first, no need for documentation." (Don't get me started on "my code is so clear it doesn't need documentation" people...).
I think one big issue with all this is that costs are outsourced either to time or someone who isn't you, and this naively makes people believe that there is no cost (and sometimes fight to reject claims of cost. There is always a cost. There's a cost to everything). I wonder how much time and money would be saved if we recognized this. I just don't know how to motivate solving this, as it's non-obvious.
I've migrated to Wez already. I actually had issues with them too but wasn't as bad as Kovid. More like what you said "Not our problem, it's X's problem." (Brew devs love to do this too) Leaves a bad taste in my mouth but dismissal is better than dismissal + gaslighting + insulting.
Plus, Alacritty just hasn't been a great editor. (I wish foot would build a cross platform version[0]. But I'm not entitled enough to expect someone write code for me, though I might ask)
Basically it is how it presents itself as xterm-kitty and then how to make others recognize that. Installing terminfo on the remote is an option, lying and claim it to be xterm-256color is another (with caveats.)
As in other issues with kitty, the author is probably right. But for many people that they have many different kinds of remotes to log into where they don’t have control over, getting around with these issues is tedious.
Making kitty works is possible, and I learnt how to deal with these issues one by one, but hearing comments here on HN points me to wezterm and once I migrated I never looked back. For the simple stuffs wezterm gets out of the way. And there’s some interesting advanced stuffs to pick up, such as multiplexing with ssh: https://wezfurlong.org/wezterm/multiplexing.html?h=ssh#ssh-d...
While I see nothing particularly egregious about Kitty's maintainer, other than being a bit of a dick, it's not really the job of a maintainer to be your pal.
Except, when I started using WezTerm at the start of this year... omg, this guy is absolutely fantastic.
I have read scores of his posts and he's struck the perfect tone in every single one. Love this guy, really, he's awesome.
How is WezTerm compared to iTerm2, since you’ve used both?
I’ve tried Kitty a few times, since it has a few features I miss in iTerm2 (e.g. the “i3-gaps” aesthetics if you set the right flags, a plaintext config that is easier to sync, and its graphics and keyboard protocols have a wider ecosystem than iTerm2’s comparable features, and the “layout” feature).
But… I generally find that iTerm2 “just works” and requires little fiddling to get all the everyday stuff to work as I want, but I’ve been down many rabbit holes with my Kitty config. For now I’ve therefore stuck with iTerm2, but imagine that a well-configured Kitty might be nicer.
For me, speed, simplicity in configuration, and no AI is more or less a good start. I moved from iTerm to Warp recently, before switching to wezterm, and the only reason i dropped Warp (despite signing in) was that it comes in your way a lot, the click to focus on blocks becomes a hindrance for me (I hardly care for the previous blocks), the constant reminders in Red to update and obviously the AI prompting, albeit to the side, they keep trying to find a way for me to use it, but I'd rather stick with CTRL+R or quick google search than write a coherent sentence explaining things to a LLM.
I left iTerm because I couldn't configure it to my liking, although there are certainly ways to do it, i just couldn't. iTerm2 is certainly a good enough terminal, wezterm just somehow suits my needs better.
Upvote! I tried Mac Terminal, iTerm2, Kitty, Warp, etc etc, and settled with WezTerm. Easy to configure, fast, looks nice. I created a theme for it too:
I'm a long time tmux fan, but I've been dealing with odd issues related to mouse actions. This is somewhere in alacritty, *vim or tmux. So I futzed with all of them, tried different terminals, all while telling myself it couldn't be tmux. So I just ignored it for over a year. I finally went back and gave wezterm a serious try just a few weeks ago and I am very happy to have switched. The mouse issues I was seeing go away. Splitting panes and resizing lots of panes is fast and responsive. It's built in so copying from a vertical split pane doesn't include the other pane like in tmux.
That doesn't make it perfect. Mouse themes are applied inconsistently as I use Gnome on Wayland. It also seems to be a problem when using neovim, but I can't prove it clearly enough to want to file a bug with anyone. Besides, everything I need to do still works and I rarely use the mouse unless I am copying random gobs of text.
I am sticking with wezterm for the moment. I have no reason to leave it at this point and it helped me reduce the complexity of my stack a teeny bit.
I use tmux daily. tried to like wezterm but issues with clipboard and resizing made look for another option.
Very happy with Tilix now. https://gnunn1.github.io/tilix-web/
maybe less fancy/modern but absolutely rock solid every time.
environment: fedora/wayland/gnome
just throwing this out if anyone wants to test an alternative it out.
My favorite and often overlooked feature is that wezterm is fully cross os, so if you work like me in Linux, macOS and Windows, then you can just learn wezterm and be done. I even share large parts of my terminal config across os:es.
that's where the language choices really matter I think. Lua as a programmable configuration language shines because it makes it quite easy to make environment specific changes. Also I think underrated side effect of Rust. A lot of the modern rust tooling has great cross platform support probably because there's a good abstraction layer between language and OS.
Isn’t that more just any language not C or C++? Go, Rust, Java, Python, etc all abstract away significant OS specifics. There are always going to be some thorny differences, but any modern language makes cross compatibility possible in a way that is more challenging for C.
I used wezterm a long while after switching from urxvt. There was a GPU memory leak or something, becuase after opening a bunch of terminals, I found that Graphics in firefox started lagging and dragging. I switched to kitty (And Microsoft Terminal on windows), but I use tmux inside (apparently much to the authors annoyance).
The one thing I don't like about WezTerm, at least the reason why I stopped using it, is related to how it handles copying wrapped lines into the clipboard. It might just be me, and how I use tmux, but I found that when copying a line that gets wrapped, it includes a newline in the copied text. Very annoying, and I think it has to do with the interaction between WezTerm and tmux.
I don't have enough evidence to create a good bug report, and I WezTerm has its own terminal multiplexing server ("ssh domains"), so it's probably not important enough to fix anyway. I don't want to install the WezTerm multiplexing server everywhere, and tmux is pretty much on all of the places that I ssh into already.
It is not performing well for me, tends to just freeze for a few seconds when switching tabs after some time. No idea why (large scrollback is my only guess, but I'm not sacrificing that) and how to diagnose this.
I switched to Kitty, and while it has its share of issues, at least it works.
My main pain point switching between work macbook and personal linux machines is the shortcuts. The macos configuration options are limited and require various hacks, and while I could configure things on linux to match I really don't like the macos shortcuts. So I end up with a weird mix and each time I switch keep pressing the wrong keys all the time...
Also it's well tested on all three. One look at wez' repo vs the rest in terms of GitHub actions, issues, and documentation was all the convincing I needed back in like 2019. Haven't turned back since. Heck it even supports tabbing out of the box!
It's the first terminal to truly replace urxvt for me in terms of support and speed. Before I was running termite and kept urxvt as a backup for some odd situations where termite got buggy.
Going to echo some of the thoughts of sibling posters. I'd been an iTerm2 user since I first started using macOS nearly ten years ago.
I had really started to feel it slow down lately. It hit the breaking point when I was cmd-tab-ing and found myself waiting for more than a second just for the terminal to appear.
Looked around, evaluated a couple alternatives and none of them quite fit my taste. One terminal required an account/login to operate, which is a big no IMO, another was written in {Java,Type}Script so simple commands like `yes` would break it due to the async nature of streams in node.js.
I really like WezTerm so far. It's quite fast, very much configurable and comes with the theme I was configuring with iTerm2 out of the box (OneDark (base16)).
My only trouble with it was in the beginning when I had to add the configs for cmd-left and cmd-right in lua config, I really hoped they'd be in there with the defaults.
> One terminal required an account/login to operate, which is a big no IMO, another was written in {Java,Type}Script so simple commands like `yes` would break it due to the async nature of streams in node.js.
Let me guess, that's wrap and Tabby or extraterm respectively?
Thank you for this write-up! Going to copy a couple of things to my config. TIL, Wezterm has a command palette.
Wezterm with Zellij becomes amazing with how it just simply gets out of the way, even lets you remove window decorations entirely. I've heard Wezterm has a multiplexer too, but just haven't tried it.
Did go through it, bookmarked for use, that's how I learned about the command palette, just hard to break the habit of using zellij, that too with tmux mode :D
A problem I have when I see stuff like this with tabbed interfaces, splitting etc. is it's all at the wrong level of abstraction and compensating for a hopelessly deficient window manager. If you use a window manager like sway then you can layout tabs, splits etc. to your heart's content for any type of window you like. You don't need a terminal emulator to do this for you.
Given that I do already use a window manager like sway, is there much else worthwhile compared to any other terminal emulator?
Wezterm has built in ssh support where if you open a wezterm ssh window to a remote host and then open new tabs/splits within that window, the new tabs/splits are added as part of the existing ssh session automatically. It also allows you to host the session on the remote machine (kind of like tmux) and when you connect you get back all your previous tab/split organizations. From that perspective it can make sense to have the terminal own the layout organization.
In my experience Wez has been shockingly responsive to GitHub issues and usually fixes things (if they’re actually wrong) within a day or two. I’ve only found one or two minor quibbles involving modifier keys over SSH and overall the functionality is basically perfect for my needs. Plus it’s nice and fast.
(Former avid Alacritty user but needed better modifier support for remote emacs.)
Yes!! I opened an issue ( https://github.com/wez/wezterm/issues/4917 ), and not only did he answer it and my side question, he merged the two PRs I made to fix it super quickly!
A bit of a tangent, 3 days ago I opened a small issue with RiMusic, not only did the maintainer reply within a few hours, they implemented the feature I requested and it is already in the F-Droid build running on my device
I didn't have as positive experience.
Granted I commented on a closed issue. In any case it was closed as "won't do" and my comment was ignored. I didn't feel like opening a new issue for the same that was already dismissed.
https://github.com/wez/wezterm/issues/4706
The way you phrase that makes it sound like you had a negative experience, was that your intention? For all we know he didn't even see it, there's thousands of issues and PRs and it's not like this is his full time job, so missing a message sounds like a pretty expected and neutral interaction to me. There's a reason they used the word "shockingly" to describe his response time, it's because it's amazing that Wez can respond to even a fraction of all the messages as quickly as he does.
Also in case you wanted to bump up the priority of that bug, he does have github sponsors enabled.
The showstopping bug (or misfeature?) reported by others was brushed off, and my comment was ignored. It didn't seem like the path forward would be a pleasant one, so I've uninstalled Wez and gone back to a terminal that works for me. So yes, you could say it was a negative experience. I gave Wez a try as my daily driver, but it just didn’t pan out despite my efforts.
Regarding remote Emacs: WezTerm allows to completely capture and redefine key combinations. There's no good way to send things like C-S-", the terminal protocol just does not support them. So I made WezTerm send "<f12> c s '" instead, and added extra bindings in Emacs. This F12 trick allowed me to send quite complex combos that terminal protocols can't support.
Nifty! Appreciate your sharing that. I’ve managed to work around the few annoyances with remote for the most part but I’ve also accepted mostly that it’s just not going to be quite the same. I guess this is one or two steps closer.
I originally installed WezTerm because I switched from Kubuntu to Ubuntu and wanted some of the features of Konsole (infinite scrollback, searching the scrollback) without actually installing Konsole (I know you can install it under Gnome too, but it just felt... wrong). And yes, it instantly grew on me, although (as I can see from this article) I have barely scratched the surface of its configurability. My only complaint is that its many features are not really discoverable. Sure, the documentation is really good, and the author is very engaged and helpful, but... one example: I looked up how to select large blocks of text using just the keyboard, I did it once, said to myself "I have to remember this!", then promptly forgot it and now I'm back to selecting text with the mouse like an absolute noob because all in all for the few times I do this it's faster than googling that documentation page again...
It's useful out of the box but the superpower is that you can customise the regexes it matches. I've added one that finds all the filenames output by 'eza --icons' (\p{Co} matches the icon) so I can instantly type (by using shift+the quickselect letters) any filename after doing an ls (aliased to eza).
I am to understand that there is a way to do infinite scrollback and live searching the scrollback in WezTerm? I have not really found out how to do this like Konsole, and is the reason of often end up having a Konsole session running also. It is two incredible features when tailing live logs
What are you excited about concerning Ghostty? I revisit the project every once in a while, because I think Zig has a wonderful and bright future, but I don't think I could ever use a terminal emulator that isn't completely open-source. WezTerm has an _enormous_ leg up over Ghostty in this regard IMO.
I love Ghostty. On my old MacBook, it was by far the fastest terminal emulator (yes, I tried all of them, also WezTerm and Alacritty). Now on my new Mac it is still the most beautiful terminal emulator.
..you have noticable latency when you type? I'm genuinely sorry, that would infuriate me.
Personally I don't notice any typing latency in wezterm. I have p10k as a zsh theme and not really any 'plugins' beyond git for the terminal and use neovim+ also pretty much just got and CoC for an editor. I don't notice any latency when typing and, while not instant, still sub 200ms startup latency.
I remember being so frustrated with a Mac because of the animations. It would take like a full half second to maximize etc. I tried disabling them but then it would just do a cross fade or something and still be unresponsive when I tried to type/click on the focused window.
That plus cmd+space doing nbsp and Ruby (required by our IaC framework at the time) treating such differently than other whitespace was the end of my experiment, back to Linux lol
(I have no problems with Mac users and get the love for them, but I definitely prefer Ubuntu)
No, and unlike the siblings I can actually feel it.
That being said, wezterm is about the only terminal I can use now (besides putty). I'm on a cursed setup, Windows with a Linux VM and whatever terminal I use it has to be able to directly ssh into the VM (NOT via ssh.exe), otherwise there's much worse latency/quirks due to stupid Windows conpty issues.
Currently it does not annoy me too much, but when I finally have time I think I'd try to fix it.
Amen. My motivation for switching was that iTerm2 would hang forever after I hit one of my Rectangle/Spectacle shortcuts. Many whole seconds waiting for it to go through one of the transitions in the 1/3 -> 1/2 -> 2/3 screen-size cycle.
I tried WezTerm on Windows because I was looking for a terminal with ligature support and lower input latency than Windows Terminal. Unfortunately, it still had higher input latency than cmd.exe. The only terminal with ligature support that comes close in terms of input latency is contour (https://contour-terminal.org/).
I can't provide you with numbers but back when I used Windows on my work machine, I recorded my screen + microphone input using OBS to compare they recorded keystroke sound and appearance of the character on my screen. I was able to confirm my suspicion in that WezTerm yielded higher input latency. This was especially noticeable when using helix inside of WSL - movement in normal mode would always sort of lag behind the keystrokes.
EDIT: Just installed in on my Mac and here, I can't notice any difference between kitty (my current input latency baseline) and WezTerm. Good stuff! Not sure how Windows fares nowadays, though.
280 comments
[ 3.2 ms ] story [ 115 ms ] thread^ There's a host of built-in color schemes.
The Lua configuration is very intuitive as well.
I do get some indirect crashes when Xwayland crashes, which is rare. I had to disable Wayland support in wezterm because the window decorations aren't great yet.
My window manager (Sway) already requires enough wild incantations. If any, I really appreciate simple integration in the terminal.
A little more than 'foot' but not a lot. Tabs/panes, like you say. It gives some more granularity to the organization without a lot of new buttons to push.
I've taken most of the Tilix defaults through several! Currently Kitty... though I may try WezTerm.
I have it in iTerm, and I don't in WezTerm.
We can blame Apple if we want, but they are not going to implement this feature for us.
Yeah, iTerm2 has a lot of other fancy features, but I just rarely or never used them, so don't really feel like I miss anything.
But the straw that broke my back with using kitty was, I'd end up encountering issues or trying to recreate some of iTerm2's features, only to end up time and again on kitty's maintainer's terse and dismissive comments.
e.g. IIRC his answer to "How do I set up tmux with kitty?" was something like "Don't, tmux is dumb" and closing it. Eventually I gave up.
While I don't know why Goyal takes the approach he does, I would imagine that a lot of demands are placed on him simply because his software is so powerful (and, in the case of calibre, pretty much the only program in its domain that goes beyond serving basic needs).
I try not to knock the guy, given that kitty and calibre in particular are amazing programs, but I still think you've gotta keep that in mind when engaging.
FWIW, his conduct on the MobileRead forums where he answers questions from newbies and enhancement requests are far more polite and charitable. His ire seems to be reserved for fellow programmers.
[0] https://bugs.launchpad.net/calibre/+bug/1714107
Like the old Linus. He also over-reacted but there was atleast some reason behind that.
Some programmers (like myself) have little patience for people they consider should know better and are wasting their time. These same programmers are far more charitable to newbies because they know newbies are still learning.
> Remember that this is the guy who said he would personally maintain python 2 because he didn't want to rewrite calibre for python 3 [0].
I read his "I am perfectly capable of maintaining python 2 myself." as "I am perfectly capable of maintaining [calibre running on] python2 myself", which is completely different.
I'm sure some people might also find his answer quite terse and dismissive ("No, it doesn't."), but I read it as a simple statement of facts, using the same tone as the original bug report, which itself is quite terse and imperative "Python 2 is retiring in thirty months. Calibre needs to convert to Python 3."
Some programmers are life-long learners and know a very different subset of things. It’s important to remember that just because something is obvious to you doesn’t make it right and doesn’t make it obvious to others.
They wouldn't, for example, just barge in an oss project with arguably low value statements like "Python 2 is retiring in thirty months. Calibre needs to convert to Python 3."
I have never seen a maintainer go so far above and beyond to condescend and insult people asking questions -- not making demands like your example. In my case, I asked a question about something that wasn't working as I expected in the github discussions and he repeatedly insulted my intellect (while simultaneously blaming another program when it was in fact a kitty misconfiguration that was causing my issue). He did eventually leave enough breadcrumbs that I was able to solve my problem but rarely have I had such a negative experience with asking an (IMO) not stupid question.
That doesn't make sense to me in context. Presumably he was already maintaining calibre on python2 at the time, so what additional information is he adding?
It seems more like he was saying "I am perfectly capable of maintaining my own fork of python2 for however-much-python-I-need to continue developing calibre." Which, granted, is not as grandiose as "I will become the maintainer for the abandoned python2 language for the internet at large to use", but it is still a rather tall order.
If it works for Linus Torvalds, it might work for him
wait... whut? No thanks, I like to customize things
(FWIW, the setting in question with respect to make menuconfig is "use bold as bright", where the kitty developer is on a vendetta to refuse the historical precedent. He is very adamant that he knows better than most everyone else on this point.)
Either way, I have never claimed to have talked to the kitty developer: I -- as well as multiple others on this thread -- are saying we've read how he handles arguing about terminals, and we don't like it.
Regardless, I do happen to be curled into a ball, and I do happen to look like I am crying... but it is merely because I am sick: I use xterm and I am very happy with the software and like the author.
I mean, he's not wrong. Everyone else should update their shit to be proper so that he doesn't have to deal with all this legacy nonsense. It's just annoying as hell for people using it right now.
I just went through and started looking at recently closed issues on GitHub. I got through four before I found an example of what I think is the problem, and while this is a fairly benign one it is also clearly awkward enough that it shouldn't happen this often and is more than sufficient to clarify the complaint.
In this one, someone carefully points out an issue with a common script for emacs designed to implement the kitty-specific protocol (the one that kovid insisted everyone get on board with, as opposed to the prior art that already had traction, so now we have two competing ones; but that's my complaint, not the poster's).
https://github.com/kovidgoyal/kitty/issues/7711
Kovid then decides to pick a fight by being abrupt and a bit snarky in his response. Again: the issue was just technical and is good enough that I can probably debug the issue... I dream of getting bug reports like this, so this isn't the kind of response I would expect.
> I'm afraid I have zero interest in debugging emacs and kkp.el.
This is just downright mean-spirited. You can say something similar in a way that isn't grating in the same way, but Kovid prefers being grating, and clearly the person in the issue also took it this way and they get snarky back:
> If you aren't interested that's okay, of course.
> OTOH, I have zero interest in debugging Kitty. I'll just use Alacritty or iTerm :-)
Given Kovid's comment, I think this is in some sense a leveled response: Kovid is demonstrating he has little interest in being collaborative or helpful, even in an ecosystem that he created. I certainly don't act like that, even when people would use tools I actively disagreed with, I still would always help them debug it.
Kovid, of course, escalates this one further and leaves the thread in a pretty demoralizing place.
> Excellent! Don't let the door hit you on the way out.
Damn :/. That is what I am talking about. He isn't just grating in the way Linus was grating -- though Linus, to be clear, was also an asshole who, at some point, started to realize just how much of a problem he was being and is a lot better today -- and I also don't think he is just grating in the way that people who moralize (I am guilty of this one) do... he's just kind of mean, even when it makes no sense, and the result is that many issue threads with him get this "edge" about them where everyone is slowly escalating the burn until they just drop out of the thread entirely for their mental health.
(Part of me actually wants to now debug this specific issue, but I'd be doing it out of spite, and I do not want to be dragged into that. I only commented on this at all as I didn't want the person further upthread of me to feel alone in commenting on the problem with Kovid, and so I think it is reasonable that I get some of the flak here as I'm willing to bring the receipts.)
So, no: I simply don't think it is fair to say I am being dishonest, and the specific thing you quoted from me about him not liking settings is obviously not the point and wasn't something I delved into, as it didn't matter why: the issue was how... FWIW, in a thread where a bunch of people are all agreeing that Kovid turned them away from using kitty, maybe at least some of us have a point?
1) kitty has a template for issue reporting that the person that reported that issue didn't use, which means it isn't a carefully constructed report.
2) The issue is probably with kkp.el. I don't know about you, but I don't expect maintainers of open source projects to debug all issues in their own projects let alone unrelated ones. Kovid went out of his way to tell the OP exactly how to provide useful debug information. And he did so within a few minutes of the issue being opened.
3) The part you complain about is him saying he has zero interest in debugging kkp.el and emacs. Which is perfectly reasonable, again, why should he have an interest in it. He provided the OP with the means to give him information that he would be interested in debugging instead.
4) He then gets told that the OP would rather use some other terminal rather than provide the debug information he was asked for. Do you have any conception of how rude it is to go to some projects issue tracker and then state you are going to use a competitors product.
5) You tried again to insert an unjustified swipe at Kovid, with "the keyboard protocol he insists everyone get on board with". In reality that keyboard protocol is completely optional, an no one has to use it. The fact that everyone does actually use it, is testament to its being light years ahead of any of the alternatives and represents weeks of hard work on the part of Kovid to finally bring sanity to this corner of the terminal ecosystem. An effort he made for the good of the community. And an effort that has succeeded, since pretty much all modern/maintained terminal software support the protocol as it is clearly superior to the alternatives.
6) You were at best mistaken in making your claim that he doesnt like settings, but given you clearly have an agenda against someone who has done nothing to you other than provide the world free software, I think the default assumption is malice not incompetence on your part.
And yes by all means dont use kitty, I have a strong feeling that Kovid, who has been providing software used by millions of people for decades has reached a point in his life where he recognizes that some users cost way more than others. He is likely very happy that you and people like you give his work a miss.
A position I greatly sympathise with. People that report issues to open source projects need to remember they are asking for help, it behoves them to put in the maximum effort they can to reduce the burden of the free help they are NOT entitled too.
For those unfamiliar, that's a window tied to a show/hide keybinding which when shown floats above all other windows, making a terminal instantly available everywhere - a feature I could live without, but don't care to. I'd love to switch for all of WezTerm's other features, but without that it's simply a nonstarter for me.
---
[0] "old" because there's a new kid in town: wayland.
How long can we call something that’s at least 15 years old “the new kid”?
Thank you.
I don't have a keybinding to hide, but you could easily achieve that by inspecting the active window with `hs.window.focusedWindow()`/`hs.window.frontmostWindow()` and making the behavior conditional based on the application: https://www.hammerspoon.org/docs/hs.window.html#focusedWindo...
In WezTerm, you can control whether the terminal is always on top with the `ToggleAlwaysOnTop` action: https://wezfurlong.org/wezterm/config/lua/keyassignment/Togg...
https://gist.github.com/spartanatreyu/850788a0441e1c5565668a...
The iTerm2 hotkey window, is a floating window, which for example also works in a space with another Fullscreen window/app opened (without moving to another space.)
You could probably even use Hammerspoon to initiate the keyboard shortcut if you didn't want to mark the window manually.
It's described here: https://github.com/wez/wezterm/issues/1751#issuecomment-1973...
I mostly like kitty but I’ve noticed that it takes a couple seconds to start up when I put my cpu down to 400Mhz. (Which might seem like an odd thing to do, but xterm handles it fine and, hey, why do we need billions of clock cycles to start up a terminal? That’s ridiculous).
I have an OLED screen and mostly use black background terminals, so I can get some pretty decent battery life out of it, especially at night when I dim the screen.
Dim/red shift/slow CPU is a nice low-distraction night time mode IMO.
Plus it is keeps my palms comfortable even if I accidentally run a computationally intensive code.
For me, I've found Kitty quite configurable enough to have everything except the remote server thing. I used this as my guide: https://www.reddit.com/r/KittyTerminal/comments/z2p2sh/ditch...
Heh, I switched from Kitty to Wezterm due to the exact same types of comments from the maintainer. It's his project of course, and he's a great programmer, but some humility wouldn't hurt.
The people who had to deal with the Calibre setuid binaries fiasco in 2011 would probably disagree :) ( https://lwn.net/Articles/465311/ )
It's like someone deciding my current skill based on how good I was when I left university.
Both skills and personality can chance a lot over a decade and I'm glad you're not quick to jump the gun. We need more people like that. But given brash comments over the past few years, it does not seem like this part has changed. He's been working on kitty for 8 years and has only accepted minor PRs and is dismissive of user issues.
Oh, and kitty phones home
If you want drama:
tmux:
Phone Home: On a side note: I really don't trust devs who reply to issues and close them. I get wanting to remove the issue from the task list, but just set up an action for stale issues (which has an added advantage of pinging the user who may have just lost the message). Otherwise let the user close because they might have follow-up questions. It's just disrespectful and always a red flag. I know lots of users are dumb (I literally just got an issue on a research project with someone asking how they fine tune our model...), but noobs are wizards in training. You don't have to be nice, but don't be mean either. Plus, you'll just piss off people who could end up helping you. And if you don't want help, I expect your project to decay when you get bored. Definitely not what I want from a terminal"Are you sure you want to close this window", meant to only trigger in interactive scenarios like ssh or htop, triggered on the regular shell sometimes. Not even consistently
Reminds me of something Linus said
Which I think is an important lesson here. About how when you build tools, people build around you and what they have to work with. But I'm surprised this attitude is not more common, because I don't know a single person who is unfazed when changes happen that break their programs/workflow. It's reasonable for someone to be upset. And not a single person is ever like "no worries, I'll go read the commits first, no need for documentation." (Don't get me started on "my code is so clear it doesn't need documentation" people...).I think one big issue with all this is that costs are outsourced either to time or someone who isn't you, and this naively makes people believe that there is no cost (and sometimes fight to reject claims of cost. There is always a cost. There's a cost to everything). I wonder how much time and money would be saved if we recognized this. I just don't know how to motivate solving this, as it's non-obvious.
https://yarchive.net/comp/linux/gcc_vs_kernel_stability.html
Plus, Alacritty just hasn't been a great editor. (I wish foot would build a cross platform version[0]. But I'm not entitled enough to expect someone write code for me, though I might ask)
[0] https://codeberg.org/dnkl/foot
Also saw Wezterm pop up last week and definitely decided I'll give it a go here soon.
https://sw.kovidgoyal.net/kitty/faq/#i-get-errors-about-the-...
https://github.com/kovidgoyal/kitty/discussions/3873
Basically it is how it presents itself as xterm-kitty and then how to make others recognize that. Installing terminfo on the remote is an option, lying and claim it to be xterm-256color is another (with caveats.)
As in other issues with kitty, the author is probably right. But for many people that they have many different kinds of remotes to log into where they don’t have control over, getting around with these issues is tedious.
Making kitty works is possible, and I learnt how to deal with these issues one by one, but hearing comments here on HN points me to wezterm and once I migrated I never looked back. For the simple stuffs wezterm gets out of the way. And there’s some interesting advanced stuffs to pick up, such as multiplexing with ssh: https://wezfurlong.org/wezterm/multiplexing.html?h=ssh#ssh-d...
What problems were you encountering? It's not hard to run tmux (and use all the keybindings with it) in kitty.
Except, when I started using WezTerm at the start of this year... omg, this guy is absolutely fantastic.
I have read scores of his posts and he's struck the perfect tone in every single one. Love this guy, really, he's awesome.
He spent half a day debugging a rather trivial issue with me and even sent me a custom build.
MailMate: https://freron.com/
I’ve tried Kitty a few times, since it has a few features I miss in iTerm2 (e.g. the “i3-gaps” aesthetics if you set the right flags, a plaintext config that is easier to sync, and its graphics and keyboard protocols have a wider ecosystem than iTerm2’s comparable features, and the “layout” feature).
But… I generally find that iTerm2 “just works” and requires little fiddling to get all the everyday stuff to work as I want, but I’ve been down many rabbit holes with my Kitty config. For now I’ve therefore stuck with iTerm2, but imagine that a well-configured Kitty might be nicer.
Is WezTerm a good middle ground?
Curious what sort of features and other things you look for when looking or comparing terminals like WezTerm and the like?
What are your deal breakers and must haves of a terminal emulator?
I left iTerm because I couldn't configure it to my liking, although there are certainly ways to do it, i just couldn't. iTerm2 is certainly a good enough terminal, wezterm just somehow suits my needs better.
I need to look into all the advanced features.
https://tiniri.vlad.studio/
I happened to have stumbled upon here to compare those terminals on this site: https://terminaltrove.com/terminals/
Looks pretty useful to me or anyone else that wants to compare terminals.
That doesn't make it perfect. Mouse themes are applied inconsistently as I use Gnome on Wayland. It also seems to be a problem when using neovim, but I can't prove it clearly enough to want to file a bug with anyone. Besides, everything I need to do still works and I rarely use the mouse unless I am copying random gobs of text.
I am sticking with wezterm for the moment. I have no reason to leave it at this point and it helped me reduce the complexity of my stack a teeny bit.
https://zellij.dev/
maybe less fancy/modern but absolutely rock solid every time.
environment: fedora/wayland/gnome
just throwing this out if anyone wants to test an alternative it out.
My favorite and often overlooked feature is that wezterm is fully cross os, so if you work like me in Linux, macOS and Windows, then you can just learn wezterm and be done. I even share large parts of my terminal config across os:es.
I should wezterm another look ...
I don't have enough evidence to create a good bug report, and I WezTerm has its own terminal multiplexing server ("ssh domains"), so it's probably not important enough to fix anyway. I don't want to install the WezTerm multiplexing server everywhere, and tmux is pretty much on all of the places that I ssh into already.
Other than that, WezTerm is great!
I did some searching and it looks like the issue might be fixed in latest nightly. See https://github.com/wez/wezterm/pull/5396
I switched to Kitty, and while it has its share of issues, at least it works.
Anyone found a good setup that works for them?
It's the first terminal to truly replace urxvt for me in terms of support and speed. Before I was running termite and kept urxvt as a backup for some odd situations where termite got buggy.
I had really started to feel it slow down lately. It hit the breaking point when I was cmd-tab-ing and found myself waiting for more than a second just for the terminal to appear.
Looked around, evaluated a couple alternatives and none of them quite fit my taste. One terminal required an account/login to operate, which is a big no IMO, another was written in {Java,Type}Script so simple commands like `yes` would break it due to the async nature of streams in node.js.
I really like WezTerm so far. It's quite fast, very much configurable and comes with the theme I was configuring with iTerm2 out of the box (OneDark (base16)).
My only trouble with it was in the beginning when I had to add the configs for cmd-left and cmd-right in lua config, I really hoped they'd be in there with the defaults.
Let me guess, that's wrap and Tabby or extraterm respectively?
Wezterm with Zellij becomes amazing with how it just simply gets out of the way, even lets you remove window decorations entirely. I've heard Wezterm has a multiplexer too, but just haven't tried it.
You're in luck, the last half the post is about that.
Given that I do already use a window manager like sway, is there much else worthwhile compared to any other terminal emulator?
(Former avid Alacritty user but needed better modifier support for remote emacs.)
Wes is right about wezterm domains though. The native domains feature and pane support I think will meet the needs of most.
Also in case you wanted to bump up the priority of that bug, he does have github sponsors enabled.
Okay, maybe for just a few minutes.
Granted it’s not meant to be edited directly but rather via the GUI, but yeah it’s possible to persist it if you want.
Does it support all the configurations?
(in case you're wondering, the page I mean is https://wezfurlong.org/wezterm/copymode.html, not https://wezfurlong.org/wezterm/quickselect.html, which sounds like what I was looking for, but is something completely different - also very handy and a great idea, but not what I was after)
It's useful out of the box but the superpower is that you can customise the regexes it matches. I've added one that finds all the filenames output by 'eza --icons' (\p{Co} matches the icon) so I can instantly type (by using shift+the quickselect letters) any filename after doing an ls (aliased to eza).
https://hachyderm.io/@mitchellh
https://mitchellh.com/ghostty
Then again, I should probably try WezTerm first.
Video demonstrating the speedup: https://x.com/fleetwood___/status/1807772624518316495
Personally I don't notice any typing latency in wezterm. I have p10k as a zsh theme and not really any 'plugins' beyond git for the terminal and use neovim+ also pretty much just got and CoC for an editor. I don't notice any latency when typing and, while not instant, still sub 200ms startup latency.
iTerm2 was shockingly bad, for instance, at 44ms vs 6ms for Apple's default Terminal.app. That right there is a deal-killer as far as I am concerned.
I remember being so frustrated with a Mac because of the animations. It would take like a full half second to maximize etc. I tried disabling them but then it would just do a cross fade or something and still be unresponsive when I tried to type/click on the focused window.
That plus cmd+space doing nbsp and Ruby (required by our IaC framework at the time) treating such differently than other whitespace was the end of my experiment, back to Linux lol
(I have no problems with Mac users and get the love for them, but I definitely prefer Ubuntu)
That being said, wezterm is about the only terminal I can use now (besides putty). I'm on a cursed setup, Windows with a Linux VM and whatever terminal I use it has to be able to directly ssh into the VM (NOT via ssh.exe), otherwise there's much worse latency/quirks due to stupid Windows conpty issues.
Currently it does not annoy me too much, but when I finally have time I think I'd try to fix it.
EDIT: Just installed in on my Mac and here, I can't notice any difference between kitty (my current input latency baseline) and WezTerm. Good stuff! Not sure how Windows fares nowadays, though.
You can also use Is It Snappy? from the App Store to test typing latency. It was made by Chad Austin who had problems similar to us.
https://chadaustin.me/2017/04/announcing-is-it-snappy/