11 ms·
Libghostty is coming
- asadm 1y agoooh a web version would be insanely cool.
- jasonjmcghee 1y agoSuch incredible news. I'm absolutely going to use this.
- jrop 1y agoI've been keeping an eye on this in the hopes that text-reflow (edit: including for scrollback) could be solved in Neovim-based terminals [1]. I'm loving the innovation Ghostty is bringing to the terminal space. 1. https://github.com/neovim/neovim/issues/33155 https://github.com/neovim/neovim/issues/33155
- jez 1y agoDo you consider yourself a neovim terminal power user? I tried a while back to invert my workflow (from tmux driving neovim to neovim driving terminals) because I thought it might be easier to only ever have one buffer open for a given file, instead of attempting to open a file in a given pane only to realize that it's already open in a different neovim instance in a different pane. When I was testing that stuff out I don't think I noticed particular issues with text reflow that would benefit from being solved by swapping to libghostty, rather my pain points were just about how to adjust to the different paradigm. I'd be curious to hear more about someone who is all in on Neovim embedded terminals (and possibly how libghostty might make it better).
- jrop 1y agoI do indeed live in the terminal (all day due to work), but tmux adds too much value for me to do all terminal management in Neovim (tmux session-management being what I use most). I've just encountered too many visual "glitches" in the Neovim terminal to rely on it for everything. That's not to say, however, that I never use the built-in Neovim :terminal. > I thought it might be easier to only ever have one buffer open for a given file, instead of attempting to open a file in a given pane only to realize that it's already open in a different neovim instance This is not a problem in my config: vim.api.nvim_create_autocmd({ 'FocusGained', 'BufEnter', 'CursorHold' }, { pattern = '\*', command = 'silent! checktime', }) Since `'autoread'` is by default `on` in Neovim, this seamlessly reloads the buffer if the underlying file has been updated on disk.
- jez 1y agoI think my problem is when I realize that I had unsaved changes open in a different neovim instance. If the file was not dirty in any other open neovim instances then I don't have the same problem.
- khamidou 1y agoI'd be curious to hear more about how tmux helps you — I tried it and besides keeping a permanent session open on a remote server to me I didn't find much use for it compared to regular terminal tabs
- jrop 1y agoI use it daily locally, and find it amusing how many only think of it as being useful on remote servers (not to invalidate your use-case -- I'm just contrasting my own use). As a precursor, I view UNIX as my IDE, of which tmux is a part: this IDE runs on Windows (WSL2), macOS, Linux, and Android (Termux). That aside, here are a few reasons I find tmux to be useful in this concoction of tools: - Session management. I've written custom scripts for myself around this (zoxide + fzf). If you want to see how this can be used, look at ThePrimagen's workflow. I don't use his scripts but he has a good demo of how he harnesses sessions. - Unified scrollback management - easily search the scrollback, yank it, etc. My favorite thing to do is to yank part of the scrollback, then `Prefix+B,=` to list everything I've yanked (think of this like a "clipboard manager" specific to tmux), select an entry, and press `e` to edit it in `$EDITOR`. - This one might be a stretch, but I tend to try and use only terminal tools (without being utterly insane) because then tmux can be my "tiling window manager" no matter what OS I'm on. Oh, I have to use Windows for work? Not to worry, tmux runs in WSL2, as do most of my preferred tools, so I feel mostly at home even though I normally really dislike Windows. - It's scriptable. Read `man tmux` and use your imagination! Notwithstanding any of that, there are cons, the most apparent one being that I am limited to text-based tools this way. An example of this: getting images to work in tmux, though many modern terminal emulators support them, is a huge pane, so I haven't bothered.
- khamidou 1y ago
- c-hendricks 1y agoI'm all in on Neovim terminals, having a remote development setup means it keeps my terminal with my neovim window (I use nvim-qt). Also not sure how ghostty would help, haven't noticed text reflowing issues. It's not bad, a little awkward getting used to: - you might want a plugin to give you a "persistent" terminal across all tabs - I still haven't found a way to clear scroll back while a command is running - I had to set up mappings for easier exiting terminal mode (c-\ c-n really sucks) - I had to set up events so whenever a terminal buffer is focused it immediately enters insert mode. While I love vim, I've never wanted modal editing in a terminal
- iammrpayments 1y agoI wish they had used something like this in Shopify, instead they decided it was a good idea to embed VScode in the browser in case users want to make a small modification to theme files, it even has a 5 second boot time.
- ComputerGuru 1y agoWhat’s a user-friendly mouse friendly modeless cli text editor you can compile to wasm?
- Wingy 1y agomicro?
- Imustaskforhelp 1y agoYou literally, and I mean literally read my mind dear random stranger down to the wording. Micro is definitely underrated. Micro is a truly goated software. I mean, it can genuinely replace vscode for small scale editing in the context of shopify that the parent comment was referring to. https://micro-editor.github.io/ https://micro-editor.github.io/ It also helped me in physics when I had to remember the units like 10^-6 being micro, 10^-9 being nano etc. and the funny thing is that I used to remember it in the start by seeing I am not sure if it was on micro's github or something but it was a comment on how micro has more features than nano and thus it's name. So like for some time I definitely felt like I was thinking of micro software, then nano and making the feature comparison to find micro to be larger than nano. Might seem kinda niche but I ABSOLUTELY LOVE MICRO. Its the one software that I install everywhere, even on my android phone by using UserLand[1] with alpine linux. I tried writing python code on my phone and it was definitely pleasant thanks to micro. [1]:https://github.com/CypherpunkArmory/UserLAnd https://github.com/CypherpunkArmory/UserLAnd
- cultofmetatron 1y agoI don't think its really practical to do so. wasm can't directly access the canvas or webgpu contexts. it has to route date through js anyways so you will always have js code in the loop here.
- bigwheels 1y agoThis is super cool, it will be so nice to have a truly omni-platform terminal emulator that can even conceivably extend to iOS and Android. Aside: I didn't realize Ghostty was written in Zig, wow. The first Zig-thing I'm aware of using on a regular basis. It's amusing the repository structure looks exactly like a Golang layout, haha. https://github.com/ghostty-org/ghostty https://github.com/ghostty-org/ghostty
- ldemailly 1y agoIt doesn’t (look like a go layout) and that’s a good thing because pkg/ src/ etc aren’t good go directories.
- metaltyphoon 1y agoSince go 1.25 you can declare the what is the “root” of a go module, which is a good thing. Not everyone wants the top level directory filled with go files specially in a multi language repo. So this idea that /src is not good go directory will soon be outdated.
- keaaww 1y agoNot omni-platform if you have macOS < 13. It's the author's prerogative to set minimum requirements, of course, but for something "basic" (note the quotes) like a terminal emulator, not having far-reaching backwards platform compatibility is a deal-breaker for many. Life's hard enough for macOS users who don't want to upgrade the OS every 6 months and/or replace hardware every 2 years. For people like me who prefer to run their systems as purchased until the hardware fails, the "move forward or get left behind" upgrade mentality is very troublesome. Hopefully libghostty will be much more permissive. No dependencies (not even libC) is a good sign that will be true. (written on a 2018 macbook pro running macOS 10.14.6, which still works great in every way)
- nixosbestos 1y agoI would pay money to never have users like you, even if my software incidentally worked on your intentionally terribly out-dated system.
- trial3 1y agoi desperately want to use ghostty but cmd+f support is just such a dealbreaker. excited about this development though!
- jrop 1y agoIt's on the roadmap: https://ghostty.org/docs/install/release-notes/1-2-0#roadmap https://ghostty.org/docs/install/release-notes/1-2-0#roadmap
- trial3 1y agooh, incredible! i'll keep my eyes peeled and will be switching to it from iTerm the moment it's available
- esafak 1y agoCan someone explain why this was not one of the first features added? Who doesn't want to search their history? There must be some complication. Mitchell raised the issue himself two years ago: https://github.com/ghostty-org/ghostty/issues/189 https://github.com/ghostty-org/ghostty/issues/189
- SG- 1y agoprobably because you never volunteered to code it up. but really not all features can make it in 1.0
- przmk 1y agoAs someone who lives in the terminal, I can't say I've ever had the need to do that. It's only by reading the comments that I've realised that there's no search in Ghostty.
- swah 1y agoGuessing its "hard to do it right".
- nhumrich 1y agoI have heard this from a lot of people, yet here I am, using a terminal that supports this, and have yet to ever do it. Can you help me understand what workflows you depend on Ctrl+f for? I wonder if I am missing something big.
- hackitup7 1y agoI love how this guy founds + takes public + sells a multibillion company and then just goes right back to hacking. Legend.
- buildbot 1y agoI love ghostty and use it daily, somehow I missed it was by Mitchell Hashimoto! Very cool to see.
- krferriter 1y agoI had tried it briefly previously but in the last couple months I think I have made the permanent switch from iterm2. It's so much snappier and simpler and also reliably handles text reflowing when a long line wraps, which was a constant problem I had in iterm2, where it would insert fake newlines when copying out text that was wrapped. I also like that I can have my config in a little plaintext file and just drop it onto a new computer and get the same keybindings. I am using the terminator keybindings for creating and navigating between split panes.
- rwmj 1y agoAnd hacking on tty software too, the geekiest corner of the Unix tech stack.
- deleted 1y ago[deleted]
- qaq 1y ago100% Legend love Ghostty btw :)
- kortex 1y agoHashimoto is an absolute wizard, but what I find most compelling about him is his absolutely uncanny ability to segment and abstract systems and interfaces in a way for maximum composability and minimal entanglement. He's like the walking embodiment of Rich Hickey's Simple Made Easy philosophy. It's like he designs software systems in such a way that they have no choice but to operate correctly and predictably. Also I just tried Ghostty for the first time. With iTerm2 and the Zsh/Powerlevel10k theme, there's an extremely brief but perceptible lag from running a command and the render. In ghostty it feels actually instant.
- carwyn 1y agoHow does this compare to https://gitlab.gnome.org/GNOME/vte/ https://gitlab.gnome.org/GNOME/vte/ ?
- loeg 1y agoThe ghostty version probably doesn't write the entire scrollback buffer to disk (given its lack of dependencies).
- Narushia 1y agoVte is GTK-only, while libghostty aims to be cross-platform.
- tristan957 1y agolibghostty will eventually export a Terminal widget that can be used in GTK as well, so in that regard they serve a similar purpose.
- duskwuff 1y agoFor that matter: how does it compare to libvterm (https://www.leonerd.org.uk/code/libvterm/ https://www.leonerd.org.uk/code/libvterm/)?
- mitchellh 1y agolibvterm is great. Ghostty supports many more features, but the most important I hear from other libvterm users are that it's missing scrollback and reflow on resize, which are both pretty major pieces of functionality. Example: Neovim is considering the switch to libghostty-vt when its ready. https://github.com/neovim/neovim/issues/33155 https://github.com/neovim/neovim/issues/33155
- jdorfman 1y agoThe passion and attention to detail Mitchell has for developer experience is beyond me. I remember the first time I used Vagrant (2011, Santa Monica California) like it was yesterday it was that impactful. I never thought in a million years I would even think of ditching iTerm2 but when Ghostty dropped I installed it and fell in love.
- x3n0ph3n3 1y agoWhat exactly does it do better than iTerm2? I gave it a try a few weeks ago and wasn't at all impressed, but maybe I just don't know what I'm missing.
- jdorfman 1y agoGreat question. For me it feels faster (anecdotally) and certain TUI components don’t break. It also is probably my bias of loving his work as well as everyone at work using it. Hive mentality I suppose.
- steve_adams_86 1y agoMy experience is similar. Stuff doesn't break and it feels extremely snappy. I've switched to Zed for the same reason. I came to realize that I work much better with faster, simpler software, even if it's missing some nice-to-haves. It feels like you're closer to the problem you're trying to solve.
- drob518 1y agoKind of surprised that we haven’t created this library before now. But glad to see it coming.
- Biganon 1y agoOn the very day ghostty refuses to load my theme because themes now start with an uppercase letter; the same day I'm no longer able to enter `^` (a caret) for some reason. Not to mention the multiple times where the clipboard suddenly and completely stopped functioning, in the last few weeks. I love ghostty, but if it keeps suddenly failing for no apparent reason I might have to go back to wezterm.
- paraboul 1y agoChill, there was literally one single update since the initial launch. It's not like it's getting breaking changes every day.
- SG- 1y agodamn, you should ask for a refund.
- Biganon 1y agoSorry, I hadn't realized only positive feedback was allowed here.
- ralgozino 1y agoYou seem to be using tip. Switch to using a stable release (1.2 is the latest one) instead if you don't want to be exposed to potential issues. FWIW I've using tip since the closed beta and never had major issues.
- HellsMaddy 1y agoSuper exciting. I hope to be able to embed a Ghostty-backed terminal into my Rust app in the future. Amazing work as always, Mitchell!
- deleted 1y ago[deleted]
- NotaRat 1y agoI love the idea of libghostty making terminal tunnels cleaner and less leaky, because I hate messy pipes.
- x0n 1y agoproblem: we have ten different VT terminal parsers solution: write a new VT terminal parser to replace the other ten result: we have eleven different VT terminal parsers
- hamdouni 1y agoMandatory reference https://xkcd.com/927/ https://xkcd.com/927/
- Pet_Ant 1y agoI really want a little adapter that can plug into a monitor to make it a dumb terminal. Instantly on, no full OS, just a VT100 or something. I've looked into it with a PiZero and some HATs but I'd like something made by smarter people. This would be perfect for that. Ideally just some dip-switchs to set the terminal to emulate and set the display resolution.
- ldemailly 1y agoThen what would you do? serial port? ssh? what is your terminal connected to if you don’t have an OS?
- Pet_Ant 1y agoSerial port or serial port over "ethernet"[1] (technically it's 8p8c[2]). My router doesn't have a video port, but it does have a dummy terminal port. I had to scrounge a video card for my server to set it up, but it does have a serial port [3]. So that would have been nice. Also would be nice for a modern remake of dumb terminal with abandoned monitors. [1] https://www.cabling-design.com/references/pinouts/EIA-TIA-561.shtml https://www.cabling-design.com/references/pinouts/EIA-TIA-56... [2] https://en.wikipedia.org/wiki/Modular_connector#8P8C https://en.wikipedia.org/wiki/Modular_connector#8P8C [3] https://serverfault.com/a/529159 https://serverfault.com/a/529159
- eigencoder 1y agoI was really excited to try ghostty, but the text looks blurry when I place it on my mac's external monitor
- tdhz77 1y agoI enjoy ghostty and zellij. Zig and rust built.
- sigalor 1y agoWill there also be a React component? Or is this not intended for web frontends? I was wondering, because Vercel et al. were mentioned in the beginning.
- PokestarFan 1y agoThey mention it's compiled to WASM.
- zenlot 1y agoI use ghostty daily now. Switched recently. In macOS I can re-map now caps lock to be cmd and it works for cmd+c. Everything else is great, sensible defaults and what's not easily customizable. Gruvbox light theme looks great too. The fact it's written in Zig is awesome too, if you ever question if Zig is ready, ghostty is your answer to that. Not seeing myself going back. It's great experience. Tip: if you combine your ghostty flow with aerospace, it's nearly perfect setup for your keyboard only experience on mac.
- epolanski 1y agoOther huge projects are Clickhouse and Bun.
- nasretdinov 1y agoClickHouse is written in C++ (un)fortunately. Although I do think that Zig would fit it quite well too
- sdairs 1y agoYeah ClickHouse is written in C++, though rust is also possible https://clickhouse.com/blog/rust https://clickhouse.com/blog/rust - would be cool to see zig!
- ordinaryradical 1y agoI think you’re thinking of TigerBeetle, not Clickhouse, which is a quite performant db with a fascinating simulation-tested story and proof of performance / safety.
- doctoboggan 1y agoCan you tell my why I should consider ghostty? (as a daily Terminal.app user)
- PyWoody 1y agoIt's fast. Like, faster than your brain expects it to be. I live in vim and after about 30 seconds of checking ghostty out I switched from iTerm2 to ghostty for good. No regerts.
- Igrom 1y agoI want to use this to modernize vterm in Emacs. If I could only synchronize the terminal cursor and the Emacs point, and preserve lines as lines, not split them...
- kccqzy 1y agoI wasn't aware that vterm need modernizing. Happy user of vterm at work and ghostty at home!
- Karrot_Kream 1y agovterm flickers a lot with any busier TUI. Claude Code sucks in vterm. I'd also really look forward to using libghostty to try an alternative to vterm in emacs.
- Igrom 1y agoMy issues revolve around evil: - motions stop at the terminal "line" (e.g. press "0": it doesn't move to the beginning of the line) - moving from normal to insert mode, or running commands like "r" from normal mode often breaks. Sometimes, a completely different character is replaced elsewhere in the line. - there's often a two-three second lag between entering insert mode from normal mode.
- xz18r 1y agoI am not sure i understand your problem 100% but Emacs’ tty package can solve a lot of cursor issues in a terminal emulator.
- Igrom 1y agoThe packages available through list-packages that contain "tty" in the name or description are: clipetty, crappy-jsp-mode, file-info, glass-tty-theme, hatty, hima-theme, hyperkitty, ipretty, kkp, latex-pretty-symbols, melancholy-theme, mistty, mkdown, nubox, org-pretty-tags, ppp, pretty-hydra, pretty-mode, pretty-sha-path, pretty-speedbar, pretty-symbols, purty-mode and tabbar-ruler. There is no package "tty". Are you talking about emacs' own shell?
- sigbottle 1y agoHow easy would it be to implement a tmux shim application that just has line numbers natively in the pty itself for copying? Tmux copy mode is already great, my one gripe is no line numbers. This script https://gist.github.com/Nimmidev/2cf4d5cc80dce32d0240ec7b3cfe090f https://gist.github.com/Nimmidev/2cf4d5cc80dce32d0240ec7b3cf... is pretty good, but I still get frequent bugs with it, and also it just doesn't work in fullscreen mode (2 panes). The core issue is that it's allocating a new tmux pane with the sole goal of mirroring line numbers; it would be nice if they synced up in the same pane, avoiding the above issue. Piping it into neovim is an option that you can do on both neovim and zellij. zellij loses colors, and neovim is probably the best solution to this problem but then again I don't want to have to remember to turn on/off line numbers every time and I personally like one-off panes. Separation of responsibilities, I guess. Long-winded rant to basically say: would a standard like this solve my issue easier? From what I understand of terminals, I would need to parse the underlying pty, maintain a scrollback buffer internally in the wrapper shim, and also be able to dynamically adjust toggling line numbers on/off. If I'm doing this kind of translation, how "leaky" will the abstraction be until I'm basically re-implementing the logic in my middle layer, assuming that "for free" I can get the translation both in and out from the pty? I've been trying to look closer at TUI tools, but that's what really bothered me. Given just how god awful the VT protocol is, you could get the state machine parsing correct, but the developer still has to learn basically every little quirk that was added over the years, no? (And before someone makes a false equivalence, no, this isn't the case even with languages like c++ - I'm still learning quirks about it to this day, but I don't have to learn the entire thing to build proper, robust code. It does not seem the same with something like the VT protocol. So yes, I'm aware that some learning should take place, but I'm wondering how structured of a developer experience this will end up being.)
- on_the_train 1y agoI have a confession: I don't know the difference between a console, terminal (-emulator?!?), shell, bash and all these things. It's all just a black window with text for me. I've never understood why people talk so much about git shell when my normal windows cmd/Powershell can do just the same git commands. I'm also a prolific and successful software engineer. These two things shouldn't mix. So please tell me what I missed in life when these things are completely alien to me.
- senkora 1y agoI think that you might enjoy this (paid) zine: https://store.wizardzines.com/products/terminal https://store.wizardzines.com/products/terminal > The terminal seems simple at first (you type in commands and run them! no big deal!), but the more you learn, the more you notice a million little inconsistencies (why does pressing the arrow keys sometimes print out "^[[D"? why does selecting text sometimes not work? why are the colours sometimes unreadable?) that make it feel like an inscrutable black box. And it often doesn’t feel worth it to learn more because documentation about the terminal is so fragmented and full of obscure jargon. > But! Understanding just a little more about the terminal can make your experience WAY better. You can quickly recognize what’s causing a problem (“oh, my arrow keys aren’t working because this is one of those annoying REPLs that doesn’t support arrow keys!”) and immediately fix it (“I’ll use rlwrap!). Or you can turn “wow, this text is unreadable” into “oh, my terminal emulator is responsible for colours! I’ll just go into the settings and reconfigure my colours!”.
- metaltyphoon 1y agoOld but amazing good small series. https://youtu.be/07Q9oqNLXB4?si=FthNcZSYQSNnT0mP https://youtu.be/07Q9oqNLXB4?si=FthNcZSYQSNnT0mP
- vinceguidry 1y agoReally looking forward to this, writing my own personal editor in Ruby and not having a library for parsing terminal input is leading me to write my own kitty keyboard protocol parser (which ghostty implements) and having to hand-code lookup tables is driving me batty. I really don't like the idea of using an existing TUI framework as none of them actually implement the kitty protocol. * https://sw.kovidgoyal.net/kitty/keyboard-protocol/# https://sw.kovidgoyal.net/kitty/keyboard-protocol/#
- Imustaskforhelp 1y agoHave you released the project? I am somewhat curious! Also I just went from a somewhat (niche?) languages rabbit hole and I refound crystal / crystal is in my mind currently.. So what are your thoughts on using something like crystal instead of ruby because they are similar in what I know and crystal can create a static binary while being (faster?) than ruby I am just somewhat curious to know!
- vinceguidry 1y agoIt's nowhere near ready but I made a gist: https://gist.github.com/VinceGuidry/b44f02117d452bde7471dae2effb709a https://gist.github.com/VinceGuidry/b44f02117d452bde7471dae2... I like crystal but without pure OO and the fact that the community is so far behind Go or even Scala it's hard for me to see a good use for it. You can create static binaries with ruby, just use mruby. I had a bunch of small scripts in crystal that I replaced with mruby and never noticed the difference. You don't get runtime reflection or ruby's enormous library base, but it could fill the need. I may end up transcribing my editor, or perhaps just the parser, to mruby once it's ready. https://mruby.org/docs/articles/executing-ruby-code-with-mruby.html https://mruby.org/docs/articles/executing-ruby-code-with-mru... For a fully-static binary, the option you want is at the bottom,
- Imustaskforhelp 1y agoIf mruby can make static ruby then that is actually kinda great, I didn't knew that. I was thinking more of in terms of performance for some similar developer experience Pardon me but isn't crystal OOP? i feel like it was because I was introduced to crystal lang via some youtuber some long time ago and the comments said that they didn't use because it was OOP Also if mruby is so great (which it sounds here), then surely most ruby contributers can migrate over to mruby if that has these gains. I think mruby compiles to C as the intermediate right? So there are definitely some limitations as compared to being a interpreted langauge but that can be somewhat mitigated, no? I am not a ruby expert or a crystal expert. Because If I was, I would be telling you your future (a slight pun ofc of being a future teller but yes I don't know much about it except the puts syntax or that 100 seconds video from fireship which gives me 10 year experience in ruby :p )
- dagi3d 1y agoI recently ditched VS Code in favor of Neovim and thanks to Ghostty transition has been a success. As a Mac user I use the cmd key in tons of shortcuts and it just worked out of the box, no need to send weird escape sequences
- AceJohnny2 1y ago> excellent feature compatibility such as parsing Kitty Graphics Protocol or Tmux Control Mode, and more Oh oh oh!!! > https://github.com/ghostty-org/ghostty/issues/1935 https://github.com/ghostty-org/ghostty/issues/1935 awww... (while ghostty can parse Tmux Control Mode stuff, it doesn't actually implement the full feature. My dependence on iTerm2 remains...)
- mitchellh 1y agoGhostty has the capability to parse Tmux control mode (and this blog post is about libghostty-vt). Ghostty the GUI is missing the capability to map that to GUI elements. But Ghostty understands Tmux control mode today: https://github.com/ghostty-org/ghostty/blob/main/src/terminal/tmux.zig https://github.com/ghostty-org/ghostty/blob/main/src/termina...
- phkahler 1y agoLicense: This is a perfect example of a project I think should be LGPL licensed and not MIT. Why? Let's suppose he's successful and libghostty become ubiquitous. What happens then? At some point you will be using a closed source version of it on Windows or MacOS or whatever - how do you know it's not logging in the background? The potential for this exists today in every commercial terminal emulator, but why make it easy to take something ubiquitous and backdoor it? On the flip side, what's a good reason for it to be MIT licensed?
- valadaptive 1y agoAm I missing something? The LGPL only applies to the library itself--you can dynamically link to it from proprietary code. So in this hypothetical scenario, someone could just write a terminal emulator (or IDE, or what have you) that dynamically links to libghostty and put as much telemetry in it as they wanted, couldn't they?
- phkahler 1y ago>> Am I missing something? No, you're not but I did! So GPL then. Maybe I just wanted to make up a scenario. I'm not sure why MIT/BSD have become so popular, they have their place but I don't think they have any place in software infrastructure.
- deleted 1y ago[deleted]
- yunohn 1y agoI truly don’t understand nor follow what you mean? What makes MIT/BAD bad for software infra?
- phkahler 1y ago>> I truly don’t understand nor follow what you mean? What makes MIT/BAD bad for software infra? You should have access to the source for your infra as a user of it. MIT/BSD allow people to deploy without offering source, so they can do whatever they want with it and then you get to use it. TiVoisation is more than possible among many other user-hostile options. "But you can always get the source!" is not a valid response - you can't get the source for this thing that's running right now. Freedom to deny other peoples freedom is no part of "Free Software" but it goes on all the time with "Open Source".
- 10000truths 1y agoSounds like a feature-complete successor to libtmt: https://github.com/deadpixi/libtmt https://github.com/deadpixi/libtmt
- MonkeyClub 1y agoThrough TFA I ended up perusing Hashimoto's blog, and from that moved on to "The Tao of HashiCorp". Curiously, it hasn't been discussed on HN before, so I started a thread to get HNers' thoughts on it: https://news.ycombinator.com/item?id=45351378 https://news.ycombinator.com/item?id=45351378
- tennysont 1y agoInteresting! The nix package for ghostty is broken/unavailable on MacOS at the moment, but installing the brew cask (`brew install --cask ghostty`) and a basic config file: ``` font-family = Monaco theme = dark:Catppuccin Frappe,light:Catppuccin Latte ``` Got me almost everything I used from iTerm2. Nerdfont just worked (in iTerm I think you have to use the `Use a different font for non-ASCII text` setting)
- tambourine_man 1y agoI 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.
- Imustaskforhelp 1y agoI use ghostty on (my?) air mac that my brother gifted to me which was his previous device for coding / general purpose etc. Ghostty is really good and I genuinely appreciate this. Honestly, Might seem like a small thing but the fact that this doesn't even depend on libc seems to be a really great thing to me and I kinda cherish it! Thanks! Have a nice day!
- Phelinofist 1y agoWhy is not depending on a libc a good thing? Aren't they then rolling their own syscall wrappers?
- the_real_cher 1y agoHow is he such an absolute chad of a developer? He has side projects that would make careers for most of us.
- Imustaskforhelp 1y agoMitchell and bellard and to somewhat degree fwsgonzo (you might not know him but I absolutely like his work on libriscv, the game he's working and the kvm sandbox which he's working on too) are my definitions of literal coding chads. People should really measure coding proficiency as being 10% of these guys or some fraction instead of whatever metric they are using now (slightly kidding ofc) They are the 10x developers and I feel like this sentiment is echoed all across the industry
- the_real_cher 1y agoIve worked with 10x people before. All these people you mention and Torvalds too seem to be 100x developers.
- Imustaskforhelp 1y agoHow could I've forgotten the legendary torvalds! Sqlite team also seems to be one of the 100x people imo. Maybe I just cherish sqlite's simplicity and its hyperfocus and it delievers exactly what it says (somewhat), a lot! Definitely feel like we need a forum where we can all compile a list of 100x developers and vote who is the best 100x developer I feel like although Mitchell is up in the top three. To me bellard/torvalds tops it all of if you consider it from a pure software perspective and not that Mitchell went back from a billion $ empire to hacking again Bellard has created qemu and ffmpeg and tcc/jslinux/ I think even xterm js kind of came somehow due to bellard so a lot of terminal emulators and their recent work is just as fascinating. Torvalds with linux and git are two back to back things which we know and love and use today. Bellard is just a little less known because unlike linus torvalds who named the os as linux ie. after himself. Ffmpeg and qemu don't really tell them that they are created by the same guy.
- threecheese 1y ago
- siavosh 1y agoTotal newb here - but lets say i want to make a terminal based video game (think old school text / visuals / menus), will something like Libghostty be something relevant to that?
- beepbooptheory 1y agoI imagine if you wanted to make a self-contained application so non-command-line users can play it, then maybe you could use it. Otherwise, probably out of scope of the game itself.
- esseph 1y agoThis is for terminal/ttys, this isn't something you'd use for game dev. There are tons of other tools out there for that
- amiga386 1y agoNo, you would use ncurses, or a library built on it (like Curses Development Kit, CDK)
- JdeBP 1y agoTo expand on the other replies: There are two very different tasks here. This library would be for the task of taking a received ECMA-48 character stream and turning that into a series of actions on some sort of model of a terminal's display, keyboard, and mouse. You are looking at a library for the (roughly) inverse task of taking a model of UI widgets and turning that into a transmitted ECMA-48 character stream. Here's an example of the former: * https://github.com/jdebp/nosh/blob/trunk/source/ECMA48Decoder.h https://github.com/jdebp/nosh/blob/trunk/source/ECMA48Decode... * https://github.com/jdebp/nosh/blob/trunk/source/SoftTerm.h https://github.com/jdebp/nosh/blob/trunk/source/SoftTerm.h Here's an example of the latter: * https://github.com/jdebp/nosh/blob/trunk/source/ECMA48Output.h https://github.com/jdebp/nosh/blob/trunk/source/ECMA48Output... * https://github.com/jdebp/nosh/blob/trunk/source/TUIDisplayCompositor.h https://github.com/jdebp/nosh/blob/trunk/source/TUIDisplayCo... * https://github.com/jdebp/nosh/blob/trunk/source/TUIVIO.h https://github.com/jdebp/nosh/blob/trunk/source/TUIVIO.h * https://github.com/jdebp/nosh/blob/trunk/source/TUIVIOWidgets.h https://github.com/jdebp/nosh/blob/trunk/source/TUIVIOWidget...
- kelvinjps 1y agoHow does Ghostty compares to kitty and alacrity?
- deleted 1y ago[deleted]
- piannucci 1y agoSomeone call @keithw. He put a tremendous amount of brainpower into getting the Unicode side of this puzzle "right" (or, as "right" as it is possible to be) when he wrote mosh. I'm sure he and Hashimoto could have a grand old (but zero-width non-joining) conversation!
- j1elo 1y agoOfftopic, formatting related, and always a fun discussion: The function signature of [1] ... ghostty_input_mods_e ghostty_surface_key_translation_mods(ghostty_surface_t, ghostty_input_mods_e); (^^^ probably not readable in small screens) ... is the perfect example of why "align continuation lines to the open bracket" is the absolute worse option versus the simpler, consistent and only logical choice of "align continuation lines with an extra indentation", aka AlignAfterOpenBracket: DontAlign in Clang-Format [2]. [1]: https://github.com/ghostty-org/ghostty/blob/f97518cc100599186846282457be520fda11f467/include/ghostty.h#L946 https://github.com/ghostty-org/ghostty/blob/f97518cc10059918... [2]: https://clang.llvm.org/docs/ClangFormatStyleOptions.html#alignafteropenbracket https://clang.llvm.org/docs/ClangFormatStyleOptions.html#ali...
- mitchellh 1y agoIndeed. Also note this isn't the real public C API. This is, as I noted in the blog post as a disclaimer, an internal-only C API so it is admitedly very ugly. (I assume you know this, just adding context for other readers)
- j1elo 1y agoYep, sorry in my mind I was going to mention it (with "even if it's only me seeing private code like this" or something similar) and later forgot after some edits to fix the formatting... Anyway, I hope it doesn't get lost that this comment was only meant to be half informative, half public statement, and half a light joke :)
- orobus 1y agoI can’t figure out how to get the visidata frequency analysis histograms to render properly. Some render as blocks as expected but others are those diamond-question marks. I know it’s a silly hang up but it’s what’s keeping me on iterm. It’s seemingly impossible to search for (or at least I haven’t figured out the right keywords) to troubleshoot too.
- icecheese 1y agoSounds like perhaps your main and fallback fonts are missing the Code Points in question. I am not a ghostty user, but I think it has a setting for that, if you can figure out which font iTerm2 is rendering those glyphs with.
- leonim 1y agoTry asking on https://github.com/saulpw/visidata https://github.com/saulpw/visidata the community there can help. I am seeing this issue on a Mac with ghostty but not with wezterm, from the same binary. Ghostty shows some correct characters and some diamond-question marks, and a line usually contains one or the other. The ghostty inspector shows the diamonds are not the blocks.
- deleted 1y ago[deleted]
- sylens 1y agoghostty and atuin are two of the first things I put onto any new macOS or Linux machine I use
- stogot 1y agoNewb question: what’s the difference between a terminal and terminal emulator? I’ve never figured that out
- kelsey98765431 1y agoidk why i am the only person that dislikes ghostty, i just have a tendency to put my machines under heavy load and keep using the cli and ghostty chugs super super badly when there's any gpu or cpu load, especially compared to "slow" terminals. zero issues with iterm2 on macos or gnome terminal on linux under load but that plus zero bells or whistles makes ghostty seem like a purposeless toy to me.
- SafeDusk 1y agoTerminal and shell are becoming more and more important with the advent of coding agents, the graphical progress bar is a super nice touch too
- bmurphy1976 1y agoI'm really digging Ghosty's shaders. It finally feels like a gimmicky terminal done right. Want a Fallout or CRT theme without compromising on other features? You can finally have it. It brings back memories of the early days of Linux when everything was fun and not trying to mimic the most bland OS out there. Think Enlightenment before everything got gnomified.
- mmaunder 1y agoGreat project for anyone creating a hobbyist OS.
- zeeqeen 1y agoIt is Ghostty that makes me believe Zig is ready for industry, and I also want to make a game engine targeting Android and iOS first, however, JNI is really annoying and I hate Google Android. I have tried Bevy for Android and as you can see it's not the fault of game engine but Google. So, use Unity or challenge it. Just do it, thanks Gostty!
- jasonm23 1y agoWezTerm seems to be missing from the list, and is a superset of those listed.
- dismalaf 1y agoI'm excited for libghostty. Ghostty has a few design decisions I'm not a fan of, but being able to make my own terminal program or embed a terminal into any app with libghostty is a potential gamechanger.
- jwr 1y agoGhostty is amazing. The attention to detail means that the basics work right, which I couldn't say about any other "modern" terminal apps. I still wish for xterm-like text selection, but otherwise this is the best terminal out there, at least on macOS (Apple Terminal.app is second).
- Hnus 1y agoI would love to use Ghostty but it renders fonts so ugly on external monitors its impossible to use https://github.com/ghostty-org/ghostty/issues/4504 https://github.com/ghostty-org/ghostty/issues/4504
- vidarh 1y agoI love the idea, and I'm doing something similar in Ruby (which, yes, means it will be far less universal than a compiled library; that's an intentional tradeoff - I don't need it to be universal, and even less so when someone is willing to invest far more effort into something that is universal) inspired by AmigaOS, where a terminal window was easily accessible to any application whether it was started from the terminal or not, by opening a file handle to "CON:" (which meant e.g. scripts could also pipe this directly into a newly opened terminal window). It's one of a few "lost capabilities" of AmigaOS I'm glad to see getting addressed. You can of course fix this today by using one of a variety of terminal widgets, but the ease of being able to just spin up a full terminal window from "anywhere" was very powerful for simple utilities etc.
- emadda 1y agoI built a macOS app [1] (to fuzzy search Apple Notes) using Ghostty as a base so that I could use its fast rendering for large lists. I think there is space for an Electron-like framework but for standalone terminal apps. Looking forward to using Ghostty as a library. [1]: https://enzom.dev/hot-notes/ https://enzom.dev/hot-notes/
- unmotivated-hmn 1y agoI've been meaning to build something with this[1], maybe you'll use it before I get to it. [1]: https://github.com/charmbracelet/bubbletea?tab=readme-ov-file#bubble-tea https://github.com/charmbracelet/bubbletea?tab=readme-ov-fil...
- greg7mdp 1y ago> All of this is packaged up into a single zero-dependency C API (it doesn't even rely on libc), allowing it to be easily embedded into any popular language ecosystem. @mitchellh That's super exciting. I'm wondering how easy it would be to integrate in the debugger frontend I'm working on. Do you already know what the C API will look like?
- znpy 1y agoI love this. I've been thinking about writing a clone of SecureCRT (great terminal emulator, sadly greatly expensive as well) for years. If I could "just" use libghostty, that would be great!
- mrinterweb 1y agoI want to like Ghosty, but not being able to search has been a deal breaker. Guess the alternatives to search are use tmux or grep the ghosty log, but tmux and I have never clicked, and searching the log is not user friendly for how often I find myself wanting to search terminal history. Ghosty has a lot of features I would want, but somehow it is missing search. https://www.reddit.com/r/Ghostty/comments/1i0g2ge/how_to_find_in_ghostty/ https://www.reddit.com/r/Ghostty/comments/1i0g2ge/how_to_fin... Maybe this concern doesn't apply to libghostty, as I think search would be more of a UI concern.
- grogers 1y agoSeveral years ago I was crazy frustrated with how slow 'less' is for some things (regex search and handling long lines) and was slowing down my day to day operations work. I very briefly entertained an idea to write my own pager to fix those problems but it would have been way too complex to do in my spare time. If libghostty existed then it might have been a different story. If libghostty is done well I think it could be an enabler for many types of terminal applications. I'm excited to see where it goes.