https://blog.gripdev.xyz/2025/01/08/wezterm-easily-copy-text...
I had used urxvt forever before and the simple solution that works (even for ssh e.g.) is to ring the terminal bell, and urxvt just sets the window urgency hint upon that. I just do that in shell prompt unconditionally because if it's triggered in a focused window, then nothing happens. But if it's from a different workspace, I get this nice visual cue in my top bar for free.
But features like setting urgency isn't available in wezterm (understandable, as it's not a cross-platform thing). I could patch that in the source, but the Emacser in me chose to do something more unholy. By default Lua is started in safe mode, which means loading shared C module is forbidden. I disabled that, and now use a bunch of missing stuff written in Rust and Zig interfaced with cffi. Don't recall ever having a crash so I am surprised by some of the other comments.
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.
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.
Otherwise, it's awesome and my default terminal everywhere.
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.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.
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.
IIRC the maintainer was moving countries. Not saying that's the main or only reason, but it is likely a factor.
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!
0cf8612b2e1e•6h ago
andai•6h ago
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•6h ago
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•5h ago
pksebben•5h ago
I suppose I'm a bit of an extremist, though.
lordgroff•6h ago
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•4h ago
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•6h ago
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?)
_kb•53m ago
Wezterm runs everywhere, but lets me customise it once and keep that config uniform across all machines.
I can have a single config [0], wrap that in a nix expression [1] for anywhere that runs home-manager / NixOS and then also check it out and symlink on Windows machines as my portal to WSL. As my preferences change, my tooling stays consistent and familiar everywhere it's needed.
[0]: https://git.sr.ht/~kb/env/tree/main/item/dotfiles/wezterm.lu...
[1]: https://git.sr.ht/~kb/env/tree/main/item/programs/wezterm.ni...
foobarqux•6h ago
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•5h ago
prmph•5h ago
gsinclair•5h ago
zeppelin101•5h ago
tcoff91•4h ago
- 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•3h ago
Anecdotally, it feels the fastest to me. Also GPU-accelerated and super configurable. It's amazing how a guy (Mitchell Hashimoto)[2] leaves the company he co-founded before it was sold to IBM.
[1]: https://ghostty.org
[2]: https://www.youtube.com/watch?v=l_qY2p0OH9A
tcoff91•1h ago
throwaway290•2h ago
tcoff91•1h ago
alwillis•4h ago
* 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
* Excellent typeface support, including ligatures, which I liker
* A quality of life issue: you don't have to copy and paste URLs; you just right-click them in the terminal.
* Excellent typeface support
binary132•1h ago