MooseReader
Personal
Terminal
Rust
A featherweight terminal EPUB reader in Rust — keyboard-driven, themeable, and built without heavy TUI frameworks for a single-digit-megabyte memory footprint.
Personal project

Idea
A zero-distraction terminal EPUB reader. The brief was minimal: read a book in the same terminal I already live in, with no electron shell, no heavyweight TUI dependency, and a memory footprint measured in single-digit megabytes. Vim-style keybindings throughout (h j k l) so the home row never breaks.
Implementation
- Live layout engine — page rendering recalculates on the fly when reading settings change, so font and width tweaks are immediate.
- TrueColor themes — pre-built color profiles including Dracula, Nord, Solarized, Catppuccin, and Gruvbox.
- Smart state persistence — bookmarks are stored as a percentage position rather than a line or chapter index, so resuming works cleanly even after a layout change.
- Interactive TOC — pop-up TUI pane for chapter navigation.
- Customizable footer — chapter title, reading progress (chapter vs. overall), percentage read, and a visual progress bar.
Configuration lives in a reader_config.json written next to the binary; either edit by hand or use the in-program Settings menu (S).
Stack
Rust, with direct terminal control rather than a heavyweight TUI framework to keep the footprint small.