5 ms·
I really want to like Ghostty but: - Still no ⌘F for find. - No way (that I know of) to select previous output or specific string and copy with only keyboard
by tambourine_man 1y ago
I really want to like Ghostty but:
- Still no ⌘F for find.
- No way (that I know of) to select previous output or specific string and copy with only keyboard shortcuts.
- No ⌘. sending CTRL-C (muscle memory and being advertised as native to the Mac is what one would expect).
- Fonts still don't render as nicely as in Terminal.app. I've fiddled with `font-thicken-strength` and it's close, but not quite. Probably impossible or very hard to replicate due to its Metal rendering nature, but when all you do is look at text all day, it matters.
- azertify 1y agoSearch in scroll back is coming in 1.3, unfortunately that's going to be 6 months away. There's a lot happening in the Ghostty app though, check out the 1.2 release notes
- sbrother 1y agoIs there a blog post anywhere that explains why it has taken so long to get search working? Ghostty is such a nice app but that's such a fundamental feature that there has to be a good reason... It's the only thing keeping me on iTerm2.
- esseph 1y agoDoes nobody use grep?
- threecheese 1y agoHow can you use grep to search the scrollback/screen buffer?
- vulcan01 1y agoGhostty has a write_scrollback_file action you can use to write the scrollback to a temporary file. I have this set to cmd+shift+f, so I simply less [cmd+shift+f] [enter] You can use grep similarly.
- lytedev 1y agoI don't want to presume your use case, but Ghostty has a command for dumping the buffer to a file, which I use for processing output "too late" to use grep. keybind = ctrl+alt+shift+o=write_scrollback_file:open
- deleted 1y ago[deleted]
- godelski 1y agoTry a pager instead. Batcat is more feature rich but there's always the good old less (and more) command. Both work great with grep. I do things like the following multiple times a day $ cat foo.log | less $ cat foo.log | $PAGER $ cat foo.log | grep 09-23-2025 | less Side note / pro tip: on a new line in the terminal press control-x control-e. If you're in zsh you need to edit your config but this will work out of the box for bash.
- jdub 1y agoYou can leave the cat at home. less foo.log grep 09-25-2025 foo.log | less
- hamandcheese 1y agohttps://mrmr.io/cat https://mrmr.io/cat
- asimovDev 1y agobut he will feel lonely if he doesn't participate :(
- 9dev 1y agoWhat good is grep if you want to search the build log on your screen that took an hour in the making? Should have thought of tee-ing it, well duh.
- esseph 1y agoYou just rawdog that to stdout without a log file?
- wewtyflakes 1y agoI do. Setting up log files for each and every command seems tedious. I would rather just cmd+f to search and have it work for everything, as it is a property of the terminal, rather than a specific command.
- tom_ 1y agoOf course. Why not? I can use the terminal's search facility to search its infinite scrollback buffer.
- 9dev 1y agoIf I don't anticipate problems, or things are slower than I thought? Sure
- ikiris 1y ago"Do you not have phones?"
- quantisan 1y agoTry Cmd-Shift-J. It dumps your buffer to a temp file, with the file path made ready for you. I do that and then open the temp file with vi.
- sbrother 1y agoThat's the workaround I've used. I still want to be able to just press command F and see "error" highlighted throughout the scrollback.
- scosman 1y agoBest news I've heard all day.
- sisk 1y ago> No ⌘. sending CTRL-C This comment sounded familiar[0]. :) For what it's worth, still possible with: keybind = "cmd+.=text:\x03" [0]: https://news.ycombinator.com/item?id=42889411 https://news.ycombinator.com/item?id=42889411
- tambourine_man 1y agoHaha, thanks again :) I've been delaying a major migration to NeoVim on [modern-terminal-I-can-never-decide-which] for years. Wezterm, Ghostty, iTerm2. None is exactly perfect, so I just keep watching them develop.
- godelski 1y agoI recently migrated from vim to neovim and you can just migrate everything. I forgot where I found this but put this in ~/.config/nvim/init.vim " Load vim configs set runtimepath^=~/.vim runtimepath+=~/.vim/after let &packpath = &runtimepath source ~/.vimrc Then in my zshrc (well... I organize differently) I have the function function _exists() { command -v "$1" &> /dev/null } alias_vim() { if (_exists nvim) then alias vi='nvim' alias vim='nvim' elif (_exists vim) then alias vi='vim' fi }
- JNRowe 1y agoFWIW, zsh has a commands hash to make stuff like this potentially easier and cleaner. The following isn't quite how I'd do it, but is functionally equivalent. (( $+commands[vim] )) && alias vi=vim (( $+commands[nvim] )) && alias vi{,m}=nvim
- godelski 1y agoI wasn't aware of +commands, thanks. Though I'm not sure this is easier and you can translate mine to bash trivially Yours isn't technically equivalent though it is functionally. If we have both vim and nvim then we'll alias vi twice. Also, your program provides less clarity. It saves lines but at a large cost to readability. I tend to share my dotfiles with newbies a lot so readability is very meaningful. I wrap mine up in functions too because at the end of my alias file I can add something like this # aliases.zsh main() { alias_ls || echo "ls aliasing failed" alias_vim || echo "vim aliasing vailed" } main It's a bit overkill and I never expect a simple alias like that to fail but there are three distinct advantages I get for being just a tad more verbose: 1) I have more complicated versions to deal with things like fd and batcat which have different names different operating systems (`fd` vs `fd-find` / `bat` vs `batcat`) and some additional configurations. 2) I can disable the alias by commenting out one line 3) knowing exactly where the alias is being loaded and thus what aliases are loaded. Bonus) fails loudly but continues (it's an alias, I don't want you fail fail) A few extra keystrokes are worth this advantage imo. Especially since I'm using vim so it's actually not any additional typing lol It's style, so the choice is up to you and they'll accomplish the same things, but I'm just explaining why I use this design pattern. I've only given a stripped down snippet of code so I hope this context helps explain the larger pictures and how it can be used for larger needs.
- tambourine_man 1y agoBy the rollercoaster of points this post is experiencing, I may have expressed myself poorly. To be clear, the concept of a modern, cross-platform Terminal core with native GUI implementations for each major vendor is amazing and I'm very glad it exists. It's just not quite there yet for me and I don't know if it ever will be. But I'm very excited by it and hopeful.
- mixmastamyk 1y agoI was also downvoted for mentioning a few other minor things it is missing as well. While I'm holding out, it's getting there however.
- Biganon 1y agoSame here. Mentioned 3 different bugs that happened to me recently, but it looks like it's deemed uncalled for or something.
- WhyNotHugo 1y agoIt’s weird to me that they consider GTK a “native” implementation — GTK is a whole [opinionated] layer of abstraction on top of the native interfaces. It’s native in the sense that it’s not Electron, or Java, but it’s still a layer of abstraction which introduces all sorts of quirks.
- shoo_pl 1y agoNot to mention that every time you ssh to another server your keyboard stops working correctly. The solution is on their website: > infocmp -x xterm-ghostty | ssh YOUR-SERVER -- tic -x - I mean... I could learn what it does, but no way on earth I am going to be typing something like that every time I want to ssh somewhere. (This is somehow fixed in 1.2 but it requires additional entry in the config for whatever reason. Can't it just work?)
- mitchellh 1y ago> (This is somehow fixed in 1.2 but it requires additional entry in the config for whatever reason. Can't it just work?) "For whatever reason": because it requires modifying `ssh` and doing that by default is a really sketchy thing to do because it is a very security sensitive tool. No program (Ghostty included) should be mucking with that by default. We want users to be aware. "Can't it just work?": No, because the entire mechanism is flawed, and I didn't invent the mechanism. It's like asking, "why must I drive to my destination, can't I just teleport?" The entire premise of the question is silly, and it's not the car's fault (Ghostty is the car in this example). For those who want to learn more about "the mechanism": read Ghostty's terminfo page, but also just do some light web searching on how terminfo works. Its a total nightmare. I really wish that weren't the case, I really do. I promise its just as annoying to me as a user and more annoying to me as a maintainer to have to hear people complain about this repeatedly when I'm not doing anything wrong, personally. I'm playing by the rules. The rules are just bullshit. We'll continue to make enhancements to improve this while we wait for Ghostty's terminfo to propagate to every machine in the world. It will, it'll just take... a long time. Next up we plan on introducing a `ghostty +ssh` command that you can drop-in replace most `ssh` usage with and it'll automagically just work.
- shoo_pl 1y agoOuch, I did not expect my complaining would get a response from the author! Just to be clear, I do think Ghostty is amazing piece of software and it's so fast that it's hard to believe, so thank you for the hard work. > read Ghostty's terminfo page, but also just do some light web searching on how terminfo works. Its a total nightmare. Oh, yea, I totally get that. I actually _did_ try to understand what the issue is, but gave up on that time-sink rabbit hole and decided I might give it another try once the xterm-ghostty is more popular.
- FridgeSeal 1y ago> No ⌘. sending CTRL-C Wait wait wait, this is a shortcut in Mac??
- sib 1y agoSeriously. I've been using Macs since... ahem... 1985... and did not know this.
- tambourine_man 1y agoIt means cancel, stop. You can use it to stop progress bars, dismiss dialog boxes, terminate some well-behaved spinning beach balls, cancel a drag before dropping, etc. It's been on the platform since the classic Mac OS days.
- asimovDev 1y agoI was wondering why the shortcut for stopping a running program in Xcode was cmd+. Now I know
- mi_lk 1y agothe second bullet single-handedly keeps me in WezTerm (copy/select mode)
- swah 1y agoShould be soon: https://ghostty.org/docs/install/release-notes/1-2-0#roadmap https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
- WhyNotHugo 1y agoA few other ugly quirks in Linux: - It doesn’t respect the user’s configured fonts. - Clipboard support is inconsistent. - The GTK4 UI is quirky, and has silly slow animations in situations which don’t make sense. The first two sound like more serious issues, and I’m surprised that others haven’t found them dealbreakers.
- ykonstant 1y agoInteresting, are there issues on the tracker pertinent to those problems?
- Ghoelian 1y ago> - No ⌘. sending CTRL-C (muscle memory and being advertised as native to the Mac is what one would expect). For what it's worth, that shortcut also doesn't work in the Jetbrains terminal, Alacritty, Kitty, and even iTerm2. The only terminal emulator I've tried so far where that works is the built-in Terminal.app.
- riddley 1y agoI want to like it too. I even joined the Discord I was so excited about it. Unfortunately even at version 1.2.0, which I understand is a total rewrite on Linux, it's only usable for minutes before this bug kicks in https://github.com/ghostty-org/ghostty/issues/2210 https://github.com/ghostty-org/ghostty/issues/2210
- steve_adams_86 1y agoInteresting, I really prefer the font rendering in Ghostty! I'm with you on the first two items, though. Despite these shortcomings I still use it daily since the first time I tried it, and have come to really love the project in general. I often won't hop to new software if it offers friction like this, but Ghostty pulled me in despite some snags. Zed is also wonderful software, though it took me way longer to commit to using it daily.