← the estate

Read-only · one binary · no runtime

Feather
opens before you blink.

A document viewer for PDF, EPUB, comics and images. One 9.7 MB binary, no service behind it, no cloud in front of it — a keystroke away, and gone when you close it.

59 tests passing build green on three platforms MIT licence 11 crates three platforms no network

Feather showing page 41 of a French Star Wars comic, a full-page colour illustration of the speeder-bike chase, with a tab strip above it
Page 41 of a 68-page CBR, opened in-process. The whole archive is read by the viewer itself — no helper, no extraction step.

Where it stands

Measured in CI on every push, and the page is checked against those numbers — a stale figure fails the build.

~9.7 MBone file, no runtime
11external crates, ceiling 25
~9 msan A4 page at 2×
3platforms, one codebase

What it opens

Every format goes through one Document trait. The window never learns what a file extension is.

FormatEngineState
pdfhayro — pure Rust, Apache/MITTiled, zoomable
epubown reflow engine, spine-orderedSelectable, searchable
cbz cbrzip, and RAR through the UnRAR decoderRendering
imagespng jpeg gif webp bmp tiff psdRendering
md txtthe same reflow engine as EPUBSelectable, searchable
xlsx xlsmown reader — a zip of XML, drawn as a gridSelectable, searchable
docxown reader — paragraphs and heading styles, reflowedSelectable, searchable, approximate
pptxown reader — shapes carry their own coordinatesText only
odt ods odpOpenDocument — the same three pipelines, another dialectSame as the OOXML above
Office / ODF—Six formats, three pipelines, all read-only

What it refuses to do

A viewer that grows features stops opening before you blink.

No editing

No annotation, no forms, no signing, no saving. Open, read, close.

No cloud

Nothing leaves the machine. No account, no sync, no telemetry, no update check.

No plugins

A format is supported when a pipeline ships with it, not when someone installs one.

And what it does not do yet

The gaps are on the roadmap with their blockers, not in a footnote.

PDF text is not selectable

hayro renders pages but exposes no glyph-to-character mapping. EPUB, Markdown and text are selectable and searchable today.

Latin text only

No shaping yet, so Devanagari, Arabic and Thai come out wrong. The fix is skrifa and harfrust; the plan is written, the code is not.

No tray icon

It needs GTK on Linux. The right answer is a D-Bus status item, which is its own piece of work.

How to run it

Prebuilt archives for Linux, Windows and macOS are on the releases page, each with a SHA-256 beside it.

# from source
cargo run --release -p feather-app -- document.pdf

# look at it without a display
feather-viewer --screenshot out.png --page 41 comic.cbr

# register with the desktop — a candidate, never the default
packaging/linux/install.sh

Keys

Everything is one keystroke; nothing hides in a menu.

↑ ↓ PgUp PgDn scroll
← → Home End page
+ − 1 zoom in, out, fit width
] [ next, previous tab
p · w pin a tab · close a tab
drag · c select text · copy
/ · Enter · Esc search · next hit · close
o open a document
n open in a window of its own
Ctrl Alt F summon from anywhere

Dr. Sohil Momin

Support this work

Everything here is free, offline and accountless. If it earned its keep, there are a few ways to say so — pick whichever is easiest where you are.

UPI · India

drsohilboi@ybl

Open in a UPI app →

QR code for the UPI ID drsohilboi@ybl, payee Dr. Sohil Momin Scan with any UPI app. Payee: Dr. Sohil Momin.

Ko-fi

One-off tip, no account needed.
ko-fi.com/matneo →

PayPal

For outside India, or a card instead of UPI.
paypal.me/drsohilmomin →

My books

The Amazon author store — every title, one shelf.
Amazon bookstore →

More apps

The rest of the estate, all of it offline-first.
drsamonline.github.io →

Say hello

Bugs, corrections, requests.
sohilmomin2000@gmail.com →

No accounts, no tracking, nothing on this page loads from the network. A thank-you is a thank-you; nothing is gated behind it.