Find a file
2026-08-14 08:16:47 +00:00
.github ci: bump the actions group across 1 directory with 7 updates 2026-08-12 18:50:28 +02:00
build feat: give the app its own icon 2026-08-12 14:17:01 +02:00
Casks chore: point the Homebrew cask at 0.4.0 2026-08-14 08:16:47 +00:00
docs feat: bundle and apply Literata font for reader typography 2026-08-13 05:42:00 +02:00
packaging feat: install with Homebrew 2026-08-12 18:26:13 +02:00
scripts feat: install with Homebrew 2026-08-12 18:26:13 +02:00
src fix: Wait for custom fonts to load before initial page emission 2026-08-13 10:49:36 +02:00
tests fix: compare chapter+page instead of full footer in reader E2E 2026-08-14 10:00:23 +02:00
.gitignore feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
.pre-commit-config.yaml chore: Update pre-commit hook to auto-format code 2026-08-13 04:08:15 +02:00
.prettierignore feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
.prettierrc.json feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
AGENTS.md docs: run the test windows on a screen nobody is using 2026-08-12 17:51:53 +02:00
electron-builder.json feat: bundle and apply Literata font for reader typography 2026-08-13 05:42:00 +02:00
electron.vite.config.ts feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
eslint.config.js chore: check more than formatting before code leaves the machine 2026-08-12 20:35:07 +02:00
LICENSE feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
package.json docs: run the test windows on a screen nobody is using 2026-08-12 17:51:53 +02:00
playwright.config.ts feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
pnpm-lock.yaml feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
pnpm-workspace.yaml chore: make new dependency versions wait two weeks 2026-08-12 15:26:27 +02:00
README.md fix: reach the settings while a book is open 2026-08-12 20:35:07 +02:00
SECURITY.md docs: move design/architecture/performance docs under docs/ 2026-08-12 15:37:23 +02:00
tsconfig.base.json feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
tsconfig.node.json feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
tsconfig.node.tsbuildinfo feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
tsconfig.web.json feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
tsconfig.web.tsbuildinfo feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00
vitest.config.ts feat: initial Liseur Desktop foundation and responsive library prototype 2026-08-12 02:25:59 +02:00

Liseur Desktop

A desktop EPUB reader for Linux, macOS and Windows, and the companion to Liseur for Android.

It is arranged around one goal: reading should feel immediate. The interface answers on the same frame as the keystroke, and the slow parts, parsing a book or querying a library of thousands, happen somewhere you cannot feel them.

Install

Every release has builds for Linux and macOS attached.

On macOS, install it with Homebrew. This repository is its own tap:

brew tap chmouel/liseur https://github.com/chmouel/liseur-desktop
brew install --cask chmouel/liseur/liseur

The build is not signed, so macOS refuses to open the copy Homebrew has quarantined. The cask says how to clear the flag once it is installed, and --no-quarantine on the install line skips the dance altogether:

xattr -dr com.apple.quarantine /Applications/Liseur.app

Taking the .dmg from the release by hand works just as well (arm64 for Apple silicon, x64 for Intel).

On Arch Linux, liseur-desktop-bin is in the AUR:

paru -S liseur-desktop-bin

On other Linux, take the .AppImage, make it executable and run it, or install the .deb on Debian and Ubuntu. There are builds for both Intel and ARM. Where Homebrew is already what you reach for, the same cask installs the AppImage.

Every file in a release is signed by the workflow that built it. If you want to know that a download came from this repository rather than from someone in the middle:

gh attestation verify <file> --repo chmouel/liseur-desktop

The menu bar

There isn't one, until you ask: press Alt and it appears. Everything in it has a shortcut anyway — Ctrl+O to open a book, Ctrl+Shift+O to add a folder, Ctrl+, for the settings, Ctrl+F to search the shelf or the book you are in. On macOS the menu lives in the system bar as usual.

Vim mode

If you already navigate everything else with hjkl, turn on "Vim keys" in Settings and the shelf and the book answer to them: j/k to move, gg and G for the ends, counts like 5j or 12G, ]] and [[ for chapters, 50% to jump halfway, / to search, n and N between matches, m to bookmark, q or Escape to come back. Press ? for the whole list, wherever you are.

It is off by default and changes nothing when it is off. Even with it on, the arrows, space, page keys and menu shortcuts keep working exactly as they did.

DEVELOPMENT

docs/DESIGN.md covers what it is and where it came from. docs/ARCHITECTURE.md explains how the three processes divide the work between them, and docs/PERFORMANCE.md gives the budgets they are held to. docs/DEVELOPMENT.md is for working on the code, and SECURITY.md covers how the project treats its dependencies and how to report a vulnerability.

License

MIT, see LICENSE.