logoalt Hacker News

dakratoday at 1:46 PM2 repliesview on HN

Hi! Maintainer of Ghostel here.

baokaola and I actually wanted to do a "Show HN" next week, but looks like someone was faster submitting the link.

Have a look at the GitHub repo which is a bit nicer for a quick overview: https://github.com/dakra/ghostel

To add some context, Ghostel is a terminal emulator for Emacs powered by libghostty-vt.

There's a feature comparison vs vterm and eat: https://dakra.github.io/ghostel/#ghostel-vs-vterm

And here is a gist with images to compare performance and correctness: https://gist.github.com/dakra/4a0b76ebcf5d52338e134864378465...

But for me personally, it has not only replaced vterm/eat but also any other external terminal like kitty/Ghostty.

Having your terminal text just like a normal Emacs buffer opens up so many possibilities and extension points that are just not available on any other terminal.

Even simple stuff like searching in the scrollback, then navigating and selecting+copying a paragraph only with the keyboard. For every Emacs user that's so natural and fast in Ghostel while often cumbersome in other Terminals where I just reach to the mouse because it's easier.

Happy to answer any questions and also like to hear feedback positive or negative.

If you're an Emacs user and tried Ghostel and are still using Ghostty (or another external Terminal), is there something Ghostel is missing or is it just because you want some processes to run outside of Emacs?

baokaola and I are also very active on GitHub, so feel free to open an issue if you have any.


Replies

b3ntoday at 3:31 PM

Hi dakra!

> is there something Ghostel is missing

eshell allows me to manipulate text as I would in any other Emacs buffer. If I have a function which wraps a word in quotes, and bind it to a key, I can be confident it will work in eshell like it does anywhere else. It's a real killer feature. If I use evil-mode, or xah-fly-keys, or simply want to use ispell to correct the spelling of a word, it all works.

Unfortunately with Ghostel none of this works. It's not integrated in the same way. There are extensions like evil-ghostel-mode, but they are limited.

Are there any plans to improve this, or is it a limitation Ghostel has to live with?

A Ghostel equivalent of eat-eshell-mode would be amazing.

show 1 reply
sigbottletoday at 3:50 PM

How was integration for you guys? Was the integration easier for you guys since you have an established emacs system consuming terminal output with reasoned semantics over what goes where for existing subsystems (rendering, osc codes, etc)?

For libghostty-vt, since you're targeting a terminal TUI instead of an external subsystem (for example; for ghostty, you hit libghostty-vt -> GPU rendering, which is external), you still have to buy into terminal semantics. in my experience, since I was trying to replicate mosh with libghostty-vt as the parser, what happened was that my optimized re-rendering kept getting increasingly coupled to terminal semantics (and the UDP state update model too), otherwise I'd have to send the entire terminal grid over the network like, every time.

What are the tricks for making this both performant and not like, utter cancer? You have a harder issue here too (similar to tmux) in that certain optimizations are just not available to you, or you have to translate (literally geometrically) certain instructions

show 1 reply