19 comments

[ 139 ms ] story [ 706 ms ] thread
Could someone sell me on one of these alternative terminals (kitty, ghostty, wez, etc)? There is probably something I am missing not using GPU backed rendering, but I don’t know what I don’t know.
I get the error `Your store is blocked` when trying to load the images
It is impossible for me to take seriously someone who puts spotify into their command line terminal.
WezTerm is great. When I switched back to Linux from Apple there were very few things I missed. iTerm2 was one of them, but since I found WezTerm I am pretty happy.

I tried to use it on Windows as well but unfortunately the Antivirus freaks out on it. When I looked into it it was because of a small utility `strip-ansi-escapes` which is so simple that even I could see that it is a false positive. I tried to report it to Microsoft and other Antivirus companies with some success but in the end I gave up an this Sisyphus task.

WezTerm is an absolute joy to use: Scriptable (in Lua), allows creating your own shortcuts, has a command palette, has something like tmux (called mux) for which I have created lua scripts to setup my workspace for different projects. Something like tmuxinator impelemented in WezTerm. - I still use tmux, but mux is nice as well, and I can use splits and navigation natively in WezTerm, no need for prefix-{command} like in tmux. But can have workspaces in WezTerm.

It allows adding a custom background image, also transparent background, and I can toggle all of that via my custom shortcuts: Transparent on/off, background image on/off/rotate randomly.

It is such a joy to use and so beautiful. That plus neovim, yazi file browser, and lazygit: Dreamteam. Best dev environment I ever had.

The only thing I want from WezTerm is a warning when I'm about to close a tab. The tabs are too small and the x is easy to hit by accident... thousand lines of bash history and temp env vars gone in an instant.

Otherwise, it's awesome and my default terminal everywhere.

I love WezTerm! In the author's spirit of obsessive tweaking, here's a completely inconsequential configuration change I made.

By default, WezTerm doesn't have a scrollbar, but you can easily enable it with:

  config.enable_scroll_bar = true
But now you always have a scrollbar, just a big line on the side when there's no scrollback or you're in alternate screen mode. Horrible! So, here's an event handler that will automatically hide the scrollbar when not needed, giving it the same behavior as scrollbars in modern applications:

  -- Hide the scrollbar when there is no scrollback or alternate screen is active
  wezterm.on("update-status", function(window, pane)
    local overrides = window:get_config_overrides() or {}
    local dimensions = pane:get_dimensions()

    overrides.enable_scroll_bar = dimensions.scrollback_rows > dimensions.viewport_rows and not pane:is_alt_screen_active()

    window:set_config_overrides(overrides)
  end)
And that kinda sums up the development philosophy of WezTerm. It has basically all the building blocks you'd ever need with nice APIs. It's set up quite usably by default, but anything that's missing you can probably implement yourself.
Wezterm was great, but I had to stop using it recently because it keeps crashing immediately (across two different computers) on CachyOS/Arch :/

It's just broken on KDE permanently I guess :/ There have beem tickets about it, and there is an AUR repo with a patch that used to fix it... but :/

Was already worried about the project given that it hasn't seen a new release in quite a long time. Got the feeling that the maintainer has mostly moved on.

I was really excited for it, because I didn't know about it, but seems to scratch every terminal itch I've got.

Except it didn't run on my Windows VDI because "The OpenGL implementation is too old to work with glium". There's a config workaround here https://github.com/wezterm/wezterm/issues/1813 though. I don't know if this setting, or the implementation per se, makes rendering slow, but it's unusable for me. I can't wait a couple of seconds for every keystroke inside mc, rendering text is supposed to be lightning fast.

I love WezTerm! The cross-platform config is easy to version control (unlike iTerm2) and I've added a couple integrations that I use constantly:

The first is hashing the working directory / (or remote hostname if I'm SSH'd into a host) to set tab title colors- much easier to find the right tab that way.

The second is writing a script to open tabs with in a certain order and set their titles. I don't use tmux, but this let's me recreate my preferred layout for projects quite easily.

See https://github.com/bbkane/dotfiles/tree/master/wezterm if any of this sounds useful to you!

This post would be a lot better if all the images weren't broken.
I found wezterm pane resizing to be very glitchy, and using native panes along with the muxing server was about 80% of the reason I wanted to use it. But for whatever reason, maybe font related, the resizing logic is unstable and it gets into weird states, glitching and flickering etc. Nightly vs stable made bo difference.
The thing I love most about wezterm is the `wezterm cli list --format json`, and being able to get various values like the cwd of any terminal by window id. While I don't much tweak my actual wezterm config at all. I use that a lot for various scripts to launch other terminals/file managers in the same directory as the currently active terminal...
WezTerm on nix here, it just works, it's very fast and combined with spaceship it shows everything I need. And nix makes sure in whichever environment I'm in, it will be installed
I'm having two issues with WezTerm.

1. When I split the terminal in 2 (left/right) and drag the slider around it glitches out and lags. On Linux at least. Like, I can release my mouse button and it'll just glitch back and forth between its old position and new position for a minute before settling down. (It also mangles any text that was already on the screen, but I'm guessing that's an artifact of the underlying shell, not wezterm)

2. I have a bunch of hyperlink regexes configured, but if there's a very long URL being displayed, WezTerm breaks the link. It's like it doesn't want to match URLs across multiple lines except the weird part is that the URL is literally only one line, it's WezTerms wrapping that makes it take multiple lines. So the regex is matching on displayed lines not on \ns, which is weird and breaks me constantly.

Other than those two things, it's pretty good.

Another issue I have with all terminals I've found so far is sometimes a program will just hang and no amount of Ctrl+C will kill it. And it drives me bonkers. I don't understand why the terminal can't take over and kill the entire shell and respawn it if it has to. In Wez I have to kill the pane or close the whole app. I tried digging in the Lua if I could "respawn pane" with a hotkey or something but I couldn't figure anything out that would keep my split-pane positioning.

I wish I could use Wezterm because it's the only true cross platform terminal with nice features, but on Windows it's buggy, when moving the terminal from one screen to another, when they have different scaling. It's the only bug preventing me from using it.
I recently made a list of "features I actually use in iTerm 2", while I was looking at alternatives that were cross-platform. The extensibility that WezTerm and others (Kitty takes the cake, it seems) looks promising, but after reading the docs, I don't think any of the trendy terminal emulators can do these two specific features:

1. Custom escape sequences that trigger my own code. iTerm 2 and Kitty support this (Kitty calls them "kittens"), but I don't think any other terminal emulators do. WezTerm appears not to. User variables do come close, but are not quite the same, since a user variable is "declarative" and this behavior is "imperative".

2. Show timestamps for each scrollback line. This is a feature you don't miss until you need it, but I use it, for example, to match log output timestamps to the time I ran a command in mysql console on a remote server.

I don't really care about streaming 134.55 MB/s of text to my terminal emulator; I do care about features that make me productive.

Is there a way to have words highlighting? Like in MobaXterm it color words like ERROR,WARNING,sucfessfully etc.

I got used to it and cannot make the switch to Wezterm because everything is unreadable to me now.