Rendered at 14:08:14 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
stereo 2 days ago [-]
You've obviously written this because screen wasn't doing the right thing, but your readme only explains that it's a "young project, not a drop-in GNU screen replacement". What are its advantages over screen or tmux?
kylecarbs 2 days ago [-]
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.
dgnemo 2 days ago [-]
can you share more on the tmux model vs boo?
drzaiusx11 2 days ago [-]
Tmux is n clients to 1 server.
Screen is 1 server to 1 client.
In screen each client session is a fork of the screen server. In tmux there's one server and many client forks iirc.
gguingff 2 days ago [-]
this is incorrect. you can have multiple clients using screen -x instead of screen -a
drzaiusx11 2 days ago [-]
I didn't say you couldn't have multiple clients, I said clients and servers are the same process forked. Or did someone add distinct client/server support to screen finally? I know theres a lot of stuff bolted onto screen over the years but I wasn't aware they dropped forked servers for the tmux model...
drzaiusx11 1 days ago [-]
Did a bit of digging; the first client gets forked to create the "server". The forked server then detaches and runs in the background. You're right that -x creates an entirely new, separate client process, unrelated to the OG client or the forked server.
Without -x though it works as originally described.
Edit: gnu screen 1.0 was originally released in 1987. The -x flag was released in screen 3.0 in the 90s. TIL
kylecarbs 2 days ago [-]
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.
I currently use tmux. Not because I need to multiplex shells in a remote server, but because I like to have my sessions persisted in my local machine. Even between reboots (technically not the same session, but the same tabs and splits I had). I currently have that with tmux and a tmux plugin that restores my sessions. But I think that tmux is overkill for this. And if I'm in a tmux session, then I can't use my terminal emulator's native tabs and splits. Does anyone have a recommendation of how to handle only terminal sessions on Linux?
kylecarbs 23 hours ago [-]
This is the exact use-case Boo is made for!
johnfn 2 days ago [-]
I think Cmux is the incumbent in the "screen-style terminal multiplexer built on libghostty" - any key differentiators here? https://cmux.com/
kylecarbs 2 days ago [-]
Cmux is a standalone terminal. Boo is a command-line similar to screen, backed by libghostty for terminal emulation.
darkteflon 2 days ago [-]
Installed using the curl-to-bash on Sequoia and I’m getting “error: ReadOnlyFileSystem” on ‘boo new’. Can’t see any open issues on gh and nothing in the readme.
Definitely interested in something like this - love ghostty and I’ve been finding Zellij a bit crashy recently (plus I don’t really need tabs).
relyks 2 days ago [-]
How have you been using Zellij? It's been working great for me
kylecarbs 2 days ago [-]
I'll take a look at this now. Thanks for reporting!
kylecarbs 2 days ago [-]
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.
lavaman131 1 days ago [-]
This is super cool. I've been a heavy tmux user for a long time and using it more with my coding agent sessions and prefer ghostty. What was the biggest challenge when it came to building a multiplexer directly on top of libghostty that you ran into?
Interesting choice building on libghostty —
how does it handle session persistence across reconnects?
asar 2 days ago [-]
this looks nice! i've been using herdr the last couple of weeks as a terminal multiplexer for agents, which works amazingly well.
boltguo 2 days ago [-]
Really dig the minimal approach here. Swapping the backend to libghostty is exactly the kind of clean architecture we need. Going to test drive this today.
Scarbutt 1 days ago [-]
One window per session
This no good ;)
Old busted screen can do multiple windows per session.
kseistrup 2 hours ago [-]
You can run `boo ui` and have all your sessions in one terminal window with tabs, sort of.
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.
Screen is 1 server to 1 client.
In screen each client session is a fork of the screen server. In tmux there's one server and many client forks iirc.
Without -x though it works as originally described.
Edit: gnu screen 1.0 was originally released in 1987. The -x flag was released in screen 3.0 in the 90s. TIL
They also compose: a boo session is just a PTY running a program, so you can run tmux inside one if you want.
Of course, it's impossible to know for sure what was LLM processed or not, but some of your posts (like this one) are getting classified that way.
Very similar, based on libghostty
I currently use tmux. Not because I need to multiplex shells in a remote server, but because I like to have my sessions persisted in my local machine. Even between reboots (technically not the same session, but the same tabs and splits I had). I currently have that with tmux and a tmux plugin that restores my sessions. But I think that tmux is overkill for this. And if I'm in a tmux session, then I can't use my terminal emulator's native tabs and splits. Does anyone have a recommendation of how to handle only terminal sessions on Linux?
Definitely interested in something like this - love ghostty and I’ve been finding Zellij a bit crashy recently (plus I don’t really need tabs).
This no good ;)
Old busted screen can do multiple windows per session.