Bookokrat
Bookokrat is a terminal-based EPUB and PDF reader with a split-view library and reader, full MathML and image rendering, automatic bookmarks, inline annotations, and customizable themes.
Demo
What You Can Do
- Browse every EPUB & PDF in the current directory or automatically detect and read from your Calibre library with proper metadata.
- 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, export annotations to Markdown, copy snippets or entire chapters, and toggle the raw HTML source for debugging.
- Read PDFs with a dedicated renderer (TOC navigation, page/scroll modes, bookmarks, and annotations) in graphics-capable terminals.
- Open images in-place, follow internal anchors, launch external links in your browser, and hand off the current document 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.
Installation
Homebrew (macOS)
Arch Linux
Install from the AUR using your preferred AUR helper:
or
Nix/NixOS (via Flakes)
If you have Nix with Flakes enabled, you can run Bookokrat directly:
To install it into your Nix profile:
Pre-built Binaries (Linux)
Download from GitHub Releases:
# x86_64 (Intel/AMD)
# arm64 (AArch64)
Cargo (all platforms)
Build from source. Requires Rust and a C compiler/linker.
Linux (Ubuntu/Debian):
# For PDF to work:
Linux (Fedora/RHEL):
macOS:
Windows: Install Visual Studio Build Tools with the "Desktop development with C++" workload.
Note: PDF support is enabled by default. If you want to build without PDF support:
If you need symbols for profiling or debugging, build with the debug release profile:
Vendored Dependency Notice
Important: tui-textarea is vendored in vendor/tui-textarea because the upstream
repository (https://github.com/rhysd/tui-textarea) is currently unmaintained and out of
step with the latest ratatui. Our vendored copy is based on PR #118:
https://github.com/rhysd/tui-textarea/pull/118/changes
Getting Started
Navigate to a directory with EPUB files and run bookokrat. Use j/k to navigate, Enter to open a book, and ? for help.
You can also open a specific file or start in zen mode, but this is not the main flow:
Keyboard Reference
Bookokrat follows Vim-style keybindings throughout the interface for consistent, efficient navigation.
Global Commands
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 selectorSpace+s/Ctrl+s- Open settings (PDF support + render mode)+/-- Increase/decrease content margins
Navigation (Vim-style)
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
Search
/- 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
Library & TOC Panel
Enter- Open highlighted book or headingh/l- Collapse/expand entryH/L- Collapse/expand all
Reader Panel
h/l- Previous/next chapterss- Toggle raw HTML viewSpace+c- Copy entire chapter (EPUB) / extract current page text (PDF)Space+z- Copy debug transcriptz(PDF) - Zoom to fit heightZ(PDF) - Zoom to fit widthi(PDF) - Toggle image inversioncorCtrl+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 exitEnter(normal mode) - Open link under cursor
Comments & Annotations
a- Create or edit comment on selectiond- Delete comment under cursorSpace+e- Export all annotations to Markdown (in comments viewer)
Popups & External Actions
Space+h- Toggle reading history popupSpace+d- Show book statistics popupSpace+a- Open comments/annotations viewerSpace+o- Open current document in OS viewerEnter- Open image popup (when on image) or activate popup selection
Popup Navigation
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
Image Rendering
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)
PDF viewing requires a graphics-capable terminal. For the best PDF experience, Kitty or Ghostty are strongly recommended—they support SHM-based image transfer for smooth 60fps rendering. WezTerm and iTerm2 work but with reduced performance and some feature limitations. Use the settings popup (Space+s or Ctrl+s) to disable PDF mode if your terminal does not support graphics.
If images look wrong, check bookokrat.log for the detected protocol. Experiencing issues not covered above? Just open an issue — happy to help!
Mouse Support
- 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.
Attribution
This project is based on bookrat by Dmitry Sobolev, licensed under the MIT License.
License
This project is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). See LICENSE for details.