skip to content

tbook

An EPUB reader that lives in the terminal: cover, illustrations as ANSI blocks, and reading resumed at the exact paragraph you left.

year
2026
area
terminal tool
status
published — first release
stack
Go · TUI · ANSI 24-bit · EPUB

tbook view code

the problem

Reading in the terminal is usually a second-class experience: existing readers treat the EPUB as plain text and throw away what makes a book visual — cover, illustrations, typography. Desktop readers solve that at the cost of one more window and an app that wants your attention.

What was missing was simple: open a book in the shell and continue where I stopped, without leaving the terminal and without losing what the file carries inside.

the approach

tbook is a single Go binary: `tbook book.epub` opens the book, the cover comes on the first page, and the EPUB's images are drawn as 24-bit ANSI art, with an automatic fallback to 256 colours when the terminal can't keep up.

Reading is entirely keyboard-driven — arrows change chapters, `/` searches a passage, `n`/`N` jump between matches, `b` marks the spot, `t` switches between the dark, light and sepia themes. The column is adjustable from 40 to 120 characters (76 by default), because reading width is a preference, not a factory setting.

The detail that defined the project was memory: on exit, tbook saves position, bookmarks and reading time per book, and `tbook stats` shows the history. `tbook library` browses the shelf with cover and progress beside it, and `tbook search`/`tbook download` pull Project Gutenberg classics straight into the library — no browser involved.

where it stands

First release published on GitHub (Sep/2026), with cover and illustrations, search, bookmarks, three themes, reading statistics and the Project Gutenberg integration. It's what I use to read in the terminal.

next: Scheduling API