Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

Sessions that haunt your terminal.

[Install](#install) | [Usage](#usage) | [Automation](#automation) | [Architecture](#architecture)
[Install](#install) | [Usage](#usage) | [Automation](#automation) | [Why](#why-boo) | [Architecture](#architecture)

[![ci](https://github.com/coder/boo/actions/workflows/ci.yml/badge.svg)](https://github.com/coder/boo/actions/workflows/ci.yml)
[![release](https://img.shields.io/github/v/release/coder/boo)](https://github.com/coder/boo/releases/latest)
Expand Down Expand Up @@ -115,6 +115,25 @@ boo kill build # 5. clean up

See `boo help automation` for the full page.

## Why boo?

GNU screen works the same way boo does, 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 are answered while detached so
TUIs don't hang unattended.

Scripting is the other win: `send`, `peek --json`, and
`wait --text`/`--idle` instead of `-X stuff`, hardcopy files, and
sleep loops.

tmux is great, it just solves a different problem. boo keeps screen's
model by design: sessions, a prefix key, and nothing else to learn.
One session per task, with `boo ui` to juggle them.

## Contributing

Requires [Zig](https://ziglang.org) 0.15.2.
Expand Down
Loading