A fast, native GNOME document viewer built on MuPDF and DjVuLibre. Framework is engineered for performance, utilizing aggressive pre-caching and a modern libadwaita UI to provide a "SumatraPDF-like" experience for Linux.
Linux document viewers often fall into two categories: feature-heavy clients (like Okular) that bring extensive dependencies to GNOME, or minimal MuPDF wrappers that lack a functional UI. Framework fills the gap by providing a native, high-performance GNOME solution that prioritizes rendering speed and kinetic scrolling without the bloat of an editor.
| Feature | Description |
|---|---|
| Velocity Engine | Dynamic cache management that throttles render jobs based on scroll speed. |
| Two-Tier Cache | Separates parsed page objects from rendered surfaces to minimize I/O. |
| Parallel Rendering | Independent MuPDF instances render pages across multiple CPU cores. |
| Zero-Copy DjVu | Full DjVuLibre support with zero-copy rendering into Cairo surfaces. |
| HiDPI Scaling | Native device pixel ratio rendering for sharp text on Wayland. |
gtk4(4.16+),libadwaita(1.7+)mupdf(1.24+),djvulibre(3.5.28+)meson(1.4+)
meson setup builddir
meson compile -C builddirFramework is strictly a viewer. It is not an editor (no annotations), not a library manager, and not an image viewer. It focuses on doing one thing exceptionally well: opening and displaying documents.
| Action | Shortcut |
|---|---|
| Next page | Page Down |
| Previous page | Page Up |
| First page | Home, Ctrl+Home |
| Last page | End, Ctrl+End |
| Go to page | Ctrl+G |
| Action | Shortcut |
|---|---|
| Zoom in | Ctrl+Plus, Ctrl+=, Ctrl+Scroll Up |
| Zoom out | Ctrl+Minus, Ctrl+Scroll Down |
| Fit width | Ctrl+1 |
| Fit page | Ctrl+2 |
| Actual size (100%) | Ctrl+0 |
| Action | Shortcut |
|---|---|
| Toggle sidebar | F9 |
| Fullscreen | F11 |
| Find | Ctrl+F |
| Invert colors | Ctrl+I |
Build dependencies:
| Dependency | Purpose |
|---|---|
| gtk4 (4.16+) | UI toolkit |
| libadwaita (1.7+) | GNOME design patterns |
| mupdf (1.24+) | PDF rendering |
| djvulibre (3.5.28+) | DjVu rendering |
| cairo (1.18+) | Surface management |
| glib (2.82+) | Data structures, threading |
| json-glib (1.10+) | State persistence |
| meson (1.4+) | Build system |
On Fedora:
sudo dnf install gtk4-devel libadwaita-devel mupdf-devel djvulibre-devel \
cairo-devel glib2-devel json-glib-devel meson gccWe standardize on builddir as the output directory. Do not use build to avoid confusion.
meson setup builddir
meson compile -C builddir# Open a PDF
framework document.pdf
# Open a DjVu file
framework book.djvuOne document per window. Multiple files open multiple windows.
- Not an editor. No annotations, no form filling, no signatures
- Not a converter. No export, no save-as, no format conversion
- Not a file manager. No recent files, no library, no collections
- Not a browser. No tabs, no multi-document within a single window
- Not an image viewer. No JPEG, PNG, TIFF, SVG support
If this saved you time, consider buying me a coffee.