Threads for pachungulo

    1. 19

      Does anyone on the beta here have some opinions on how it compares to WezTerm which seems to have similar goals?

      1. 22

        I daily drove WezTerm for a bit, and now use Ghostty. I think they’re both very similar in that they’re terminal emulators that both aim to be fast while having a lot of features, and either is very good to use if you don’t care about the details too much. The main differences IME are:

        • WezTerm doesn’t aim to be “truly” native and integrate with the host OS as much. My favourite example of this is that Ghostty uses macOS’s native tabs, while WezTerm draws its own tab bar.
        • WezTerm is configured with lua, so you can go wild and have a truly dynamic configuration. Ghostty’s config file is just key/value and doesn’t have as many knobs to turn. The flipside is that Ghostty is planning on having a GUI configurator, something I don’t think WezTerm can easily do.
        1. 2

          Does Ghostty offer multiplexing?

          1. 2

            Ghostty offers splits, but it doesn’t support persistence like WezTerm. I’d say you’re better of using zellij either way if you want persistence.

          2. 1

            That was basically what I was coming here to post. I’m a current WezTerm user, and the main advantage I see of Ghostty over it is native (GTK, for me) tabs, splits, &c, rather than the cross-platform non-native tabs and TUI menus that WezTerm has.

          3. 13

            I’ve used both a lot. Ghostty is my daily driver now. WezTerm would be my go to if not for Ghostty, then it would be a tossup between Terminal.app and Kitty.

            WezTerm has a feel like emacs or nvim-as-blogged-about-on-internet – you are kind of expected to do a lot of coding as configuration to turn it into a tool carefully crafted around the nuances of what you want. If you do that, it is great.

            Ghostty is more opinionated and gives you fewer knobs, but the knobs are well chosen. Analogizes to OS X whereas WezTerm is a crunchy Linux (Arch or such).

            In my personal journey, well, I declared .emacs bankruptcy a few years ago and wiped my accumulated configs from over two decades and moved to using defaults everywhere as much as I can bring myself to, as I don’t have the cycles to spend hand customizing all my tools and keeping everything up to date and so on :-/ YMMV

            1. 10

              WezTerm is easily the best terminal emulator I tried so far and it too checks all the boxes in that list:

              https://mitchellh.com/_next/image?url=https%3A%2F%2Fstatic.mitchellh.com%2Fghostty%2Fzig-showtime%2Fslide-7.png&w=3840&q=75

              1. 13

                WezTerm does not check the native UI/integration boxes.

                1. 4

                  Thanks! I configured WezTerm to show very little window decorations and totally forgot about them being not native.

                  1. 2

                    What would be today’s definition of “native”?

                    1. 8

                      using the platform’s gui toolkit to draw tabs, right click menus etc

                2. 5

                  In terms of font weight, Wezterm renders thinner text than iTerm or Terminal.app does, enough to keep bothering me. I tried to tweak the configuration, but nothing helped enough.

                  To be fair, I faced the same problem with Kitty and Alacritty too.

                  I will see how Ghostty fares when I can.

                  1. 3

                    Wezterm has many options for font customization. For example, it’s possible to disable anti-aliasing for even thinner fonts

                      font = wezterm.font_with_fallback({
                        "Monaco",
                      }),
                      freetype_load_target = "Mono",
                      freetype_load_flags = "NO_AUTOHINT",
                    
                    1. 2

                      I don’t think I’m after anti-aliasing.

                      Look at this screenshot that compares rendering of Cascadia Code fonts in iTerm with that of wezterm.

                      You should see that the characters marked with a red circle in the WezTerm window are rendered better visibly in iTerm than in WezTerm.

                      I wonder how ghostty compares to these two.

                      For what it’s worth, the only font-related config in .wezterm.lua is:

                      config.font = wezterm.font('Cascadia Code')
                      config.font_size = 18
                      
                      1. 1

                        Interesting, I just tried Cascadia Code and it looks like the rendering is the same in iterm2 and wezrerm, maybe we have different font versions or something.

                          font = wezterm.font_with_fallback({
                            "Cascadia Code",
                            "Monaco",
                          }),
                          font_size = 18.0,
                          line_height = 1.01,
                        

                        https://imgur.com/a/sh7Grk0

                        1. 1

                          Yeah the results are almost identical. Can you share your config? Are you running wezterm on Sonoma on MacBook Pro M1?

                          1. 2

                            Sure, here is wezterm config: https://pastebin.com/KChBQ2yW I tested on Sonoma on MacBook Pro M2, wezterm version is ‘wezterm 20240922-151228-2b76c63b’ and the latest version of Cascadia Code (2404.23).

                            1. 1

                              Nope. I used your config verbatim with the latest wezterm. But I still get cut-off characters, and thinner fonts than on iTerm.

                              Thank you for your efforts though!

                        2. 1

                          I think there are some global Fontconfig settings you can apply that will get you exactly the rendering you want. Unfortunately, I’m not at any of my Linux machines right now to share it here.

                      2. 3

                        Yeh, same for me: https://federate.me.uk/@jperkin/112574990612338660

                        It’s such a small issue but makes applications unusable for me, there’s just something wrong with Linux-style rendering. It’s especially noticeable with “anything and everything” near the top of my first screenshot, the “y” is clearly rendered incorrectly.

                        1. 1

                          I haven’t tried wezterm on Linux, so can’t speak to that experience. My problem is on macOS.

                          In general, though, while fonts on Linux (NixOS) are less crisp than on macOS, they don’t zig-zag as your y.

                          1. 3

                            Yeh, this is on macOS. What I mean by Linux-style rendering is that wezterm uses harfbuzz rather than native macOS.

                            1. 1

                              I see. I wasn’t aware of that. So if ghostty uses CoreText instead of harfbuzz on macOS, only then its font rendering will be comparable to that of iTerm.

                        2. 1

                          I had the same annoyance with WezTerm and at least IME Ghostty looks functionally identical to iTerm. I did manage to get WezTerm to behave better by using the WebGpu frontend with a medium font weight, so you can try that if you haven’t already.

                          1. 2

                            Thank you for the tip! I’m not a terminal emulator aficionado enough to have another go at wezterm. I will just stick to iTerm for the time being.

                            at least IME Ghostty looks functionally identical to iTerm

                            I remember mitchellh’s posts (on Twitter?) talking about the pains he took to implement font rendering in ghostty. I appreciate the efforts.

                        3. 2

                          It’s really good! Ironically, I’d call Wezterm vs Ghostty to be emacs vs neovim despite wezterm being the one with Lua. Wezterm is far more flexible, one of if not the only terminal who’s config is a programming language. The sky is the limit with Wezterm, letting you even customize the UI.

                          Ghostty on the other hand is much more streamlined. It has less potential for ricing, but feels much lighter while still keeping the important stuff. Imagine alacritty, but with a 10% speed nerf, but with 90% of the features of wezterm, and all the ones anyone could ever want.

                          1. 1

                            Recently got invited to the beta, making the switch from Wezterm. I mostly use CLIs and Helix / Vim though, so I don’t know if I’m as qualified to answer as, say, a power user would be.