Bookokrat is a terminal-based EPUB reader with a split-view library and reader, full MathML and image rendering, automatic bookmarks, inline annotations, and customizable themes.
- Browse every EPUB in the current directory, drill into the table of contents, and resume exactly where you left off.
- Search inside the current chapter or across the whole book, jump through a per-book history, and inspect reading statistics.
- Highlight text, attach comments, copy snippets or entire chapters, and toggle the raw HTML source for debugging.
- Open images in-place, follow internal anchors, launch external links in your browser, and hand off the book to your system viewer.
- Customize with multiple color themes, adjustable margins, and zen mode; settings persist across sessions.
- Enter a Vim-style normal mode in the reader for precise motions, visual selection, and yanking to clipboard.
- Load EPUB bundles (exploded
.epubdirectories, including Apple Books exports) without repackaging. - Read complex HTML tables and rich cell content with improved rendering and image support.
brew install bookokratDownload from GitHub Releases:
# x86_64 (Intel/AMD)
curl -LO https://github.com/bugzmanov/bookokrat/releases/latest/download/bookokrat-v0.2.2-x86_64-unknown-linux-musl.tar.gz
tar -xzf bookokrat-v0.2.2-x86_64-unknown-linux-musl.tar.gz
sudo mv bookokrat /usr/local/bin/Build from source. Requires Rust and a C compiler/linker.
Prerequisites (click to expand)
Linux (Ubuntu/Debian):
sudo apt update && sudo apt install build-essentialLinux (Fedora/RHEL):
sudo dnf install gcc makemacOS:
xcode-select --installWindows: Install Visual Studio Build Tools with the "Desktop development with C++" workload.
cargo install bookokratNavigate to a directory with EPUB files and run bookokrat. Use j/k to navigate, Enter to open a book, and ? for help.
Bookokrat follows Vim-style keybindings throughout the interface for consistent, efficient navigation.
q- Quit applicationTab- Switch focus between library/TOC and content panelsEsc- Clear selection/search or dismiss popupsCtrl+z- Toggle zen mode (hide sidebar/status bar)?- Show help screenSpace+t- Open theme selector+/-- Increase/decrease content margins
j/k- Move down/up (works in all lists and reader)h/l- Collapse/expand in TOC; previous/next chapter in readerCtrl+d/Ctrl+u- Scroll half-page down/upgg- Jump to topG- Jump to bottomCtrl+o/Ctrl+i- Jump backward/forward in history
/- Start search (filter in library/TOC; search in reader)n/N- Jump to next/previous matchSpace+f- Reopen last book-wide searchSpace+F- Start fresh book-wide search
Enter- Open highlighted book or headingh/l- Collapse/expand entryH/L- Collapse/expand all
h/l- Previous/next chapterSpace+s- Toggle raw HTML viewSpace+c- Copy entire chapterSpace+z- Copy debug transcriptcorCtrl+C- Copy selectionp- Toggle profiler overlayn- Toggle normal mode (Vim motions, visual selection, yanking)v/V(normal mode) - Enter visual character/line selection;yto yank,Escto exit
a- Create or edit comment on selectiond- Delete comment under cursor
Space+h- Toggle reading history popupSpace+d- Show book statistics popupSpace+a- Open comments/annotations viewerSpace+o- Open current book in OS viewerEnter- Open image popup (when on image) or activate popup selection
All popups (search results, reading history, book stats) support:
j/k- Move up/downCtrl+d/Ctrl+u- Half-page scrollgg/G- Jump to top/bottomEnter- Activate selectionEsc- Close popup
Bookokrat automatically selects the best image protocol for your terminal:
| Terminal | Protocol | Reason |
|---|---|---|
| Kitty | Kitty | Native support |
| Ghostty | Kitty | Native support |
| iTerm2 | Sixel | Native protocol causes flickering; Kitty buggy in recent betas |
| WezTerm | iTerm2 | Kitty is buggy (#986); Sixel broken on Windows (#5758); some flickering expected |
| Alacritty | Halfblocks | No graphics protocol support (#910) |
| Others | Auto-detected | Kitty > Sixel > iTerm2 > Halfblocks |
Experience by terminal:
- Excellent: Kitty, Ghostty, iTerm2
- Good: WezTerm (some flickering)
- Basic: Alacritty, Linux default terminals (Halfblocks fallback)
- No images: macOS Terminal.app (no graphics protocol support)
If images look wrong, check bookokrat.log for the detected protocol. Experiencing issues not covered above? Just open an issue — happy to help!
- Scroll with the wheel over either pane; Bookokrat batches rapid wheel events for smooth scrolling.
- Single-click focuses a pane; double-click in the library opens the selection; double-click in the reader selects a word; triple-click selects the paragraph.
- Click-and-drag to highlight text; release on a hyperlink to open it; drag past the viewport edges to auto-scroll.
- Click images to open the zoom popup; click again or press any key to close; clicking history or stats entries activates them immediately.
This project is based on bookrat by Dmitry Sobolev, licensed under the MIT License.
