[HN Gopher] How to Obsessively Tune WezTerm
___________________________________________________________________
How to Obsessively Tune WezTerm
Author : todsacerdoti
Score : 51 points
Date : 2025-10-29 19:39 UTC (3 hours ago)
(HTM) web link (rashil2000.me)
(TXT) w3m dump (rashil2000.me)
| 0cf8612b2e1e wrote:
| 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.
| andai wrote:
| I tried a few of them and they were all way slower than
| xfce4-terminal. So I just kept using that.
|
| I don't really dump megabytes of text into the terminal, they
| might have an edge there? (I found that xterm is much faster
| than xfce4-terminal for that.)
| corytheboyd wrote:
| I just recently decided to replace iterm2 with wezterm when I
| started moving macbook over to nix. iterm2 is about the only
| one that didn't work well for this, since you can't source
| control the configuration (import/export doesn't cut it)
|
| Any of the ones you mentioned would probably work good with nix
| too. I don't really care about the config being scriptable at
| all, it was just the first terminal that easily let me set all
| of the keyboard shortcuts I wanted, so I stuck with it.
| jamesgeck0 wrote:
| iTerm2 does support source control; I've got my settings in a
| git repo managed by Chezmoi. In the settings dialog, under
| "General" -> "Settings", there's an "External settings: Load
| settings from a custom folder or URL" option.
| pksebben wrote:
| I've also gone wez from iterm2, and you hit upon why. Don't
| ever make me click on things. I can't script => modify =>
| export clicking on things. When you make me click on
| things, you've defined my interface for me, which I did not
| ask for.
|
| I suppose I'm a bit of an extremist, though.
| lordgroff wrote:
| Kitty and wez both have the ability to present graphics on the
| terminal which may sound like a solution in search of a
| problem, but once you start using the capability, it's hard to
| live without it.
|
| Wez is also cross platform so I get to use it on my Linux and
| Mac and my (Ugh) Windows work machine. Configuration being done
| in Lua is also something I quite like, but your mileage may
| vary on that one.
| daotoad wrote:
| I was using Wezterm because of the cross platform and the lua
| config (let's me reuse my mad lua skilz from keeping my nvim
| config).
|
| The thing that made me switch to Ghostty was the image
| support in wez didn't play well with tmux.
|
| After testing wez, kitty, and Ghostty, I ended up going with
| Ghostty.
|
| I do miss the idea of the whole lua config thing, but since I
| never did anything with it, I can't treat that as a practical
| concern.
| rao-v wrote:
| All I want is terminals to share config across MacOS, Linux and
| ideally Windows and have great support for SSHing into low end
| boxes with some minimal persistence solution like tmux on them.
| In an ideal world I would not have to think about mouse capture
| and scroll modes, they'd work seamlessly across my device and
| the devices I'm SSHed into.
|
| It shocked me when I got back into playing with multiple
| machines after over a decade that this mostly still does not
| exist.
|
| Instead we're finally doing gpu rendering (which is amazing but
| ... surprising for this to be the 2025 topic du jour?)
| foobarqux wrote:
| The main features I use are
|
| 1. quick-select the output in the terminal (select files/paths,
| urls, etc and either copy or paste them at the cursor). This is
| very useful as you often don't have the foresight to pipe the
| command to pipe the output of the command to some selection
| mechanism and even placing text on the line-editor is not that
| easy by default.
|
| 2. view images (sixel or kitty protocol). This is pretty useful
| visual analog to cat that doesn't require opening another
| program and works over ssh. Also for video.
|
| There are some other nice utilities for doing things like
| downloading files directly in the terminal (it2dl for iterm and
| kitten transfer for kitty).
|
| kitty doesn't work out of the box on macos if I remember; you
| have to set configuration for option/command etc.
| fwip wrote:
| To be completely honest, the reason I switched was for true-
| color support in my editor (vim), rather than being limited to
| just 256 colors.
| prmph wrote:
| All I know is that on MacOS iTerm2 is unmatched. Every few
| months I go in search of something similar to it (as a backup),
| and every single time, after trying countless terminals, I give
| up. The closest I've found is WezTerm, and even that is a pale
| shadow of Iterm2
| gsinclair wrote:
| I switched from iTerm to WezTerm and haven't looked back. It
| feels faster and it's simpler to configure. I only have a
| basic use case, though, as tmux does all the heavy work for
| me. People with an appetite for more features might
| legitimately prefer iTerm, but I can't endorse the comment
| "pale shadow of iTerm" for all use cases.
| zeppelin101 wrote:
| I have a very silly primary reason for preferring the Kitty
| terminal - I configured it to look very minimalistic and
| compact. It doesn't even have the customary app titlebar at the
| top. The other benefit is that it's actually a lot faster to
| start up than Terminal.app when you first invoke it. I know
| iTerm2 is really well-liked, but to me, it gave the "Breakin'
| 2: Electric Boogaloo" vibes.
| tcoff91 wrote:
| I really love the following things that I can do with kitty:
|
| - Access the scrollback buffer in neovim
|
| - Access the last command output in neovim
|
| - Animated cursor trails. It sounds dumb at first but I find
| that when sharing my screen, the cursor trails help other
| people keep track of my cursor when using neovim.
|
| Here are my configs to quickly load @screen_scrollback or
| @last_cmd_output in neovim
|
| map kitty_mod+z launch --stdin-source=@screen_scrollback
| --type=overlay /bin/zsh -c "nvim +$ +'nnoremap q ZQ'"
|
| map kitty_mod+v launch --stdin-source=@last_cmd_output
| --type=overlay /bin/zsh -c "nvim +$ +'nnoremap q ZQ'"
| alwillis wrote:
| > Could someone sell me on one of these alternative terminals
| (kitty, ghostty, wez, etc)?
|
| * They're very fast and the scrolling is very smooth,
| especially on a 120 Mhz (ProMotion) refresh rate on MacBook
| Pros.
|
| * While TMUX runs on all of them, they have built-in
| multiplexing, so you terminal sessions without requiring TMUX.
|
| * Super configurable and in some cases programable
|
| * A quality of life issue: you don't have to copy and paste
| URLs; you just right-click them in the terminal.
| gandreani wrote:
| I get the error `Your store is blocked` when trying to load the
| images
| level87 wrote:
| Same
| semiinfinitely wrote:
| It is impossible for me to take seriously someone who puts
| spotify into their command line terminal.
| lawrencegripper wrote:
| Wezterm is a lot of fun. I played around with notifications and
| copy/paste which work even through ssh back to the host.
|
| https://blog.gripdev.xyz/2025/01/08/wezterm-easily-copy-text...
| weinzierl wrote:
| 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.
| keithnz wrote:
| I have zero problem with WezTerm on Windows.
| submeta wrote:
| 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.
| levkk wrote:
| 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.
| keithnz wrote:
| you can configure that...
| levkk wrote:
| Please show me where. It only works for tabs that have a
| running process.
| keithnz wrote:
| oh, you might be doing it via the UI, I turn off all the UI
| elements and hotkey everything, if you use hotkeys you can
| add a thing like :- action = wezterm.action.CloseCurrentTab
| { confirm = true },
| technojamin wrote:
| 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.
| spoaceman7777 wrote:
| 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.
| resonious wrote:
| It's been almost a year for me now but I had also stopped using
| it due to crashes. And since it shares a process for all your
| windows, it would close _all my windows_ which just drove me
| nuts after awhile.
|
| Though for me, I only wanted the absolute bare minimum, which
| Alacritty covers. I was sad to lose ligatures, but Alacritty is
| stable and very fast.
___________________________________________________________________
(page generated 2025-10-29 23:00 UTC)