HackerTrans
TopNewTrendsCommentsPastAskShowJobs

kylecarbs

no profile record

Submissions

Show HN: Boo – Screen-style terminal multiplexer built on libghostty

github.com
95 points·by kylecarbs·เดือนที่แล้ว·28 comments

Ghostty compiled to WASM with xterm.js API compatibility

github.com
393 points·by kylecarbs·7 เดือนที่ผ่านมา·115 comments

Show HN: ai-tokenizer – 5-7x faster than tiktoken with AI SDK support

coder.github.io
1 points·by kylecarbs·9 เดือนที่ผ่านมา·0 comments

comments

kylecarbs
·29 วันที่ผ่านมา·discuss
This is the exact use-case Boo is made for!
kylecarbs
·30 วันที่ผ่านมา·discuss
Apologies, half of this indeed was. As I was iterating on the README this seemed apt, but I will refrain!
kylecarbs
·30 วันที่ผ่านมา·discuss
Cmux is a standalone terminal. Boo is a command-line similar to screen, backed by libghostty for terminal emulation.
kylecarbs
·30 วันที่ผ่านมา·discuss
Just published v0.5.13 which should fix this! It seems to be a path issue. Now boo falls back to tmpdir for storing sockets.
kylecarbs
·30 วันที่ผ่านมา·discuss
I want boo to be a screen replacement, not a tmux replacement. tmux gives you a whole workspace: layout, scrollback, copy mode, a status bar. screen's appeal was that it did almost none of that: sessions, a prefix key, done. boo keeps that model and swaps the emulation for libghostty so reattach actually redraws correctly.

They also compose: a boo session is just a PTY running a program, so you can run tmux inside one if you want.
kylecarbs
·30 วันที่ผ่านมา·discuss
I'll take a look at this now. Thanks for reporting!
kylecarbs
·เดือนที่แล้ว·discuss
Fair. Adding a section for this now.

screen actually works the same way architecturally: it parses all output through its own built-in terminal emulator and redraws from that state on reattach. But that emulator is decades old and lags far behind what modern programs emit. Whatever it doesn't understand gets dropped or mangled on redraw. boo swaps that layer for libghostty-vt, Ghostty's VT core, so the saved state matches what your terminal would actually display, and terminal queries get answered while detached so TUIs don't hang unattended.

tmux is great, it was just never the model I wanted. I really liked screen's simplicity, sessions and a prefix key and nothing else to learn, and boo keeps exactly that.
kylecarbs
·7 เดือนที่ผ่านมา·discuss
Bun has completely changed my outlook on the JS ecosystem. Prior to Bun, there was little focus on performance. Now the entire space rallies around it.

Congrats to Jarred and the team!
kylecarbs
·7 เดือนที่ผ่านมา·discuss
Taking a look now - thanks!
kylecarbs
·7 เดือนที่ผ่านมา·discuss
I'll take a look - not sure what's going on. I'll remove it from the README for now since it's not working in the demos.

Thank you for letting me know!
kylecarbs
·7 เดือนที่ผ่านมา·discuss
Thanks for being a user :)
kylecarbs
·7 เดือนที่ผ่านมา·discuss
They are approximations but Ghostty has intentional effort towards correctness, more than I've seen from other terminal emulators.
kylecarbs
·7 เดือนที่ผ่านมา·discuss
Agreed. I removed "not a JavaScript approximation of one" from the README.
kylecarbs
·7 เดือนที่ผ่านมา·discuss
This is awesome, thank you!
kylecarbs
·7 เดือนที่ผ่านมา·discuss
It should work! Our demo may not (as I haven't tested it, so don't want to advertise it).
kylecarbs
·7 เดือนที่ผ่านมา·discuss
Added it to the README! Thanks again :)
kylecarbs
·7 เดือนที่ผ่านมา·discuss
See the comparison: https://github.com/coder/ghostty-web?tab=readme-ov-file#comp...

Ghostty has much better VT100 compatibility. It should have much better performance as well once we optimize.
kylecarbs
·7 เดือนที่ผ่านมา·discuss
Let me know if you encounter any issues! I'm working on performance benchmarks now.
kylecarbs
·7 เดือนที่ผ่านมา·discuss
Will do this!
kylecarbs
·7 เดือนที่ผ่านมา·discuss
That would be great!

`npx @ghostty-web/demo@next` starts an HTTP server on `localhost:8080`, so you could just wrap a basic Dockerfile with NPM installed (and maybe a variety of fun Linux tooling, ala vim).

Feel free to shoot me an email: [email protected]. I'll happily add it to the README.