$ gtpv paper.pdf
> THE_PROBLEM
# Current state of PDF viewing in terminals: $ brew install imagemagick ghostscript lua luarocks $ luarocks install magick $ convert -density 150 doc.pdf[0] -quality 90 /tmp/page.png $ kitty +kitten icat /tmp/page.png # Dependencies: 847 packages # Disk usage: 2.3 GB # Time to first page: 4.7 seconds # Maintenance burden: HIGH
> THE_SOLUTION
# GTPV: $ gtpv doc.pdf # Dependencies: 0 (zero) # Binary size: 5.6 MB # Time to first page: ~150ms # Maintenance burden: NONE
> FEATURES
Single static binary. No ImageMagick. No Ghostscript. No runtime libraries. Download. Run. Done.
Rust + PDFium (statically linked). GPU-optimized rendering. ~150ms to first page. ~30ms cached navigation.
Kitty graphics, iTerm2 inline, Sixel protocol. Falls back to Unicode art. Works EVERYWHERE.
First-class Neovim integration. Stdin/stdout protocol. LRU cache. Prefetch. Memory control.
macOS (ARM + Intel), Linux (x64 + ARM), Windows. Pre-built binaries. Native everywhere.
Configurable LRU cache. Explicit eviction. ~3MB per page at 150 DPI. You control the footprint.
> QUICK_START
// Try GTPV in 30 seconds - no installation required:
# Download binary (macOS ARM)
$ curl -L https://github.com/Eris-Margeta/good-terminal-pdf-viewer/releases/latest/download/gtpv-macos-arm64 -o gtpv && chmod +x gtpv
# Download sample PDF
$ curl -L https://raw.githubusercontent.com/Eris-Margeta/good-terminal-pdf-viewer/main/tests/fixtures/testing.pdf -o test.pdf
# View it
$ ./gtpv test.pdf
KEYS: j/k navigate | g/G first/last | q quit
> BENCHMARKS
| METRIC | TARGET | ACTUAL | STATUS |
|---|---|---|---|
| Time to first page | < 200ms | ~150ms | [PASS] |
| Cached navigation | < 50ms | ~30ms | [PASS] |
| Memory per page | < 5MB | ~3MB | [PASS] |
| Binary size | < 30MB | 5.6MB | [PASS] |
| Runtime dependencies | 0 | 0 | [PASS] |
> TERMINAL_SUPPORT
// Graphics Protocols (Best Quality)
- Kitty kitty-graphics
- WezTerm kitty-graphics
- Ghostty kitty-graphics
- iTerm2 iterm2-inline
- foot sixel
- mlterm sixel
// Text Fallback (Universal)
- halfblock truecolor/256
- braille monochrome
- block grayscale
Works in: Alacritty, Terminal.app, Windows Terminal, SSH, tmux, screen...
> NEOVIM_INTEGRATION
// Stream API for memory-efficient editor integration
| METRIC | TRADITIONAL | GTPV STREAM |
|---|---|---|
| Time to first page | 2-5 seconds | ~150ms |
| Page navigation | 1-2 seconds | ~30ms (cached) |
| Memory management | Uncontrolled | Explicit LRU |
| Temp file I/O | Yes (slow) | None |
| Process spawning | Per page | Single instance |
$ gtpv stream document.pdf
> goto 5
> render
> prefetch 1-10
> evict 20-30
> info
> quit