Skip to content
t21devPublic

About

A desktop reader for PDF, books and Markdown, written in Rust and drawn on the GPU with GPUI. MuPDF renders the pages. There is no browser engine inside.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Kitab Reader

Kitab Reader

Your library has a fast lane now.

Rust underneath, a calm page on top. Kitab never makes you wait.

A desktop reader for PDF, books and Markdown, written in Rust and drawn on the GPU with GPUI. MuPDF renders the pages. There is no browser engine inside.


A t21 dev project, by TriptoAfsin, from the team behind Turbo Reader.

Licence: AGPL-3.0 Latest release Built with Rust and GPUI


Download

Get the latest version from Releases.

System Download
Windows 10 and 11 (Intel, AMD) Kitab_*_x64_setup.exe, or Kitab_*_x64_portable.zip to run without installing
Windows on Arm The x64 downloads, which Windows runs through its emulation
macOS, Apple silicon Kitab_*_aarch64.dmg
macOS, Intel Kitab_*_x86_64.dmg
Linux .flatpak, .AppImage, .deb, .rpm or .tar.gz (x86_64; all but the Flatpak also for aarch64)

Or install with a package manager:

# macOS, Homebrew
brew install --cask t21dev/tap/kitab

# Windows, Scoop
scoop bucket add t21dev https://github.com/t21dev/scoop-bucket
scoop install t21dev/kitab

Unsigned builds. The downloads aren't code-signed yet. On Windows, SmartScreen may say "Windows protected your PC": choose More info, then Run anyway. On macOS, the first time, right-click Kitab in Applications and choose Open. Every release lists the SHA-256 checksum of each file.

Flatpak. Install the bundle with flatpak install --user Kitab_*_x86_64.flatpak; Flatpak fetches the Freedesktop runtime from Flathub. Kitab can read and save files in your home folder and on external drives, and has no network access: Flatpak brings the updates. To make it the default app for PDFs, use your system's Default Applications settings.

AppImage. chmod +x Kitab_*.AppImage and run it. The .deb, .rpm and .tar.gz also install a thumbnailer, so file managers show page 1 of your documents.

Screenshots

Three tabs open, a PDF with its contents in the sidebar, the quick dock and the status bar

Books, set in your typeface Math in Markdown
An EPUB in sans with wide margins and roomy lines Fractions, an integral, a matrix and a sum, typeset
Mermaid diagrams Command palette
A flowchart drawn in the theme's colours The palette filtered to the zoom commands

Why it is fast

Kitab is a native program. The window, the tabs and every page are drawn by GPUI, the GPU UI framework the Zed editor is built on, and the pages come from MuPDF, the engine behind SumatraPDF. Nothing in between is a web page.

The speed comes from a few rules the code is held to (AGENTS.md):

  • Nothing extra before the first page. On Windows the first page is painted with plain GDI while the GPU window starts up behind it, so a double-clicked PDF shows its page straight away. Update checks, keymaps, thumbnails and the library wait until after.
  • The UI thread never waits. Opening, rendering, searching and saving run on a pool of MuPDF workers. Several threads render one document's pages at once, and a quick soft render stands in while the sharp one draws.
  • Only what you can see. Pages and thumbnails outside the view are skipped, and the page cache is capped in bytes, not pages, so memory stays bounded however long the document is.
  • Measured against SumatraPDF. kitab-bench times start-up, first page, scrolling and memory against SumatraPDF on the same machine, from the app's own window. The 0.1.0 numbers will be published with the release, measured, not estimated.

What it opens

Format Notes
PDF Password-protected files too. Links, contents, text selection, annotations already in the file
EPUB Flowing and fixed-layout, right-to-left books, every script your system has fonts for
MOBI, FB2, TXT Flow like EPUB, in your typeface and text size
CBZ Comics, page by page
XPS Pages at their own size
Markdown Tables, task lists, footnotes, code with syntax colours, math, Mermaid diagrams, frontmatter

Kitab is a document reader, so it leaves image files to your image viewer.

Features

Reading

  • Each page keeps its own size and shape, so mixed portrait and landscape PDFs look right
  • Fit width, fit page, actual size, Ctrl+wheel zoom and rotation
  • Remembers the page, zoom and layout of every file, and reopens your tabs after a restart
  • Find (Ctrl+F) with match case and whole word, hits highlighted on the page
  • Contents, page thumbnails, bookmarks (Ctrl+D) and your marks, all in the sidebar
  • Back and forward through where you've been, with Alt+Left and the mouse's side buttons
  • Presentation mode (F5): one page at a time, full screen on black
  • Minimal mode (F11) hides everything but the page

Books

  • Pages re-flow to fill the window, and zoom changes the text size
  • Typeface (the book's own, serif, sans or mono), line spacing and margins
  • Right-to-left books turn the other way, and fixed-layout books keep their spreads

Markdown

  • Reads like a document, not a code file, with an outline in the sidebar
  • Math typeset natively, Mermaid diagrams drawn in your theme's colours
  • Edit beside a live preview (Ctrl+E), and it reloads when another editor saves the file

Marks and notes

  • Highlight, underline or strike through text, add notes and text boxes
  • Pen, highlighter, lines, arrows, rectangles and ellipses, in any colour you can type as hex
  • Ctrl+S saves marks into the PDF as standard annotations, which other readers show too
  • Export your marks to Markdown or CSV

PDF tools, on your machine

  • Save pages as a new PDF, merge PDFs, save a page as PDF, image or text
  • Split view: two documents side by side

Keyboard and look

  • SumatraPDF's shortcuts where it has one, a command palette (Ctrl+K), and a keymap.json for your own
  • Seven themes (Dark, Light, Paper, Ink, Nord, Noctua, Vampire), any accent colour, three densities
  • A quick dock you can move to any edge, choose the buttons of, or tuck away

Windows

  • One window: double-clicking another file opens it as a tab
  • Page thumbnails in File Explorer, and Settings to make Kitab the default app per file type

Coming next: native printing, verifying and signing PDFs, more page tools, and library search. The roadmap has the order.

Privacy

Your files stay on your computer, and there is no account, no analytics and no telemetry. Kitab connects to one service on its own: GitHub, shortly after start-up and every six hours, to ask for the latest version number. Settings › About turns that off. Links you click open in your browser. The details are in PRIVACY.md.

Build from source

You need Rust stable (see rust-toolchain.toml) and libclang for the MuPDF bindings.

cargo run -p kitab -- tests\fixtures\pdf\01-text-outline.pdf
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
python tools/check_source.py     # licence headers, no colour literals outside kitab-theme
cargo deny check

Release packages: python tools/build_release.py, then python tools/package.py <version> (an installer, portable zip, dmg, or on Linux the .tar.gz, .deb, .rpm and .AppImage). The Flatpak builds offline from packaging/flatpak/dev.t21.kitab.yml; its header lists the steps.

The tests read a corpus of PDF, EPUB and Markdown fixtures with an expected.json oracle. To rebuild it:

python -m venv tests\fixtures\tools\.venv
tests\fixtures\tools\.venv\Scripts\pip install -r tests\fixtures\tools\requirements.txt
tests\fixtures\tools\.venv\Scripts\python tests\fixtures\tools\generate_fixtures.py --large
tests\fixtures\tools\.venv\Scripts\python tests\fixtures\tools\verify_fixtures.py

Repository

crates/
  kitab          the app: start-up, first frame, adapters
  kitab-ui       GPUI views: shell, tabs, reader, sidebar, settings
  kitab-mupdf    MuPDF on a pool of worker threads
  kitab-md       Markdown parsing, sanitising, highlighting, math
  kitab-store    the library database (SQLite), forward-only migrations
  kitab-theme    colour tokens and the themes
  kitab-os       Windows, macOS and Linux glue: data folder, file types, single instance
  kitab-shell    the File Explorer thumbnail provider
  kitab-bench    start-up and scroll benchmarks against SumatraPDF
docs/PLAN.md     decisions, architecture, performance budgets, roadmap
DESIGN.md        the design system: tokens, depth, type, components, motion
AGENTS.md        rules for changing the code

Contributing

Read AGENTS.md first. Commits follow Conventional Commits, every user-visible change adds a line to CHANGELOG.md, and a bug fix comes with a test that fails without it.

Licence

Kitab is free software under the GNU AGPL 3.0 or later.

Built on MuPDF by Artifex (AGPL), GPUI by Zed Industries, pulldown-cmark, syntect, mermaid-svg and resvg. The Nord theme's colours come from Nord. The full list is in NOTICE.

Kitab Reader is made by t21 dev and TriptoAfsin.

About

A desktop reader for PDF, books and Markdown, written in Rust and drawn on the GPU with GPUI. MuPDF renders the pages. There is no browser engine inside.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages