MCPcopy Index your code
hub / github.com/johnfactotum/foliate

github.com/johnfactotum/foliate @3.3.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 3.3.0 ↗ · + Follow
451 symbols 1,166 edges 24 files 0 documented · 0% updated 2mo ago3.3.0 · 2025-04-01★ 8,460280 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Foliate

Read books in style.

Screenshot

Installation

Run Time Dependencies

  • gjs (>= 1.76)
  • gtk4 (>= 4.12)
  • libadwaita (>= 1.7; gir1.2-adw-1 in Debian-based distros)
  • webkitgtk-6.0 (webkitgtk6.0 in Fedora; gir1.2-webkit-6.0 in Debian-based distros)

Optional Dependencies

To enable auto-hyphenation, you will need to install hyphenation rules, e.g., hyphen-en for English, hyphen-fr for French, etc. (which strictly speaking are optional dependencies for WebkitGTK, not Foliate itself).

For text-to-speech support, install speech-dispatcher and output modules such as espeak-ng.

If installed, tracker (>= 3; gir1.2-tracker-3.0 in Debian-based distros) and tracker-miners can be used to track the locations of files.

Obtaining the Source

The repo uses git submodules. Before running or installing, make sure you clone the whole thing with --recurse-submodules:

git clone --recurse-submodules https://github.com/johnfactotum/foliate.git 

Or download the tarball (the .tar.xz file) from the Releases page.

Run without Building or Installing

It's possible to run directly from the source tree without building or installing. Simply run

gjs -m src/main.js

This can be useful if you just want to quickly try out Foliate or test a change.

But note that this will run it without using GSettings, so settings will not be saved. To solve this, you can compile the schema by running

glib-compile-schemas data

Then you can set the schema directory when running the app:

GSETTINGS_SCHEMA_DIR=data gjs -m src/main.js

Building and Installing from Source

The following dependencies are required for building:

  • meson (>= 0.59)
  • pkg-config
  • gettext

To install, run the following commands:

meson setup build
sudo ninja -C build install

To uninstall, run

sudo ninja -C build uninstall

Installing to a Local Directory

By default Meson installs to /usr/local. You can install without root permissions by choosing a local prefix, such as $PWD/run:

meson setup build --prefix $PWD/run
ninja -C build install

You can then run it with

GSETTINGS_SCHEMA_DIR=run/share/glib-2.0/schemas ./run/bin/foliate

Flatpak

Foliate is available on Flathub.

For developement with Flatpak, use GNOME Builder to open and run the project.

Snap

Foliate is available on the Snap Store. To install:

sudo snap install foliate

Screenshots

Dark mode

Wikipedia lookup

Book metadata

Annotations

Popup footnote

Vertical writing

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

The following JavaScript libraries are bundled in this software:

  • foliate-js, which is MIT licensed.
  • zip.js, which is licensed under the BSD-3-Clause license.
  • fflate, which is MIT licensed.
  • PDF.js, which is licensed under Apache License 2.0.

Buy Me A Coffee

Core symbols most depended-on inside this repo

connect
called by 137
src/speech.js
error
called by 53
src/tts.js
#exec
called by 43
src/book-viewer.js
get
called by 30
src/utils.js
set
called by 26
src/utils.js
close
called by 17
src/annotations.js
show
called by 17
src/library.js
emit
called by 17
src/reader/reader.js

Shape

Method 273
Function 136
Class 42

Languages

TypeScript100%

Modules by API surface

src/book-viewer.js91 symbols
src/utils.js56 symbols
src/library.js43 symbols
src/opds/main.js30 symbols
src/reader/reader.js27 symbols
src/annotations.js24 symbols
src/app.js23 symbols
src/webview.js22 symbols
src/speech.js22 symbols
src/tts.js16 symbols
src/navbar.js15 symbols
src/format.js15 symbols

Dependencies from manifests, versioned

@eslint/js9.9.1 · 1×
globals15.9.0 · 1×

For agents

$ claude mcp add foliate \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact