# koreader/koreader

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/koreader-koreader).**

25,465 stars · 1,625 forks · Lua · agpl-3.0

## Links

- GitHub: https://github.com/koreader/koreader
- Homepage: http://koreader.rocks/
- awesome-repositories: https://awesome-repositories.com/repository/koreader-koreader.md

## Topics

`cbz` `djvu` `djvu-reflow` `ebook` `ebook-reader` `eink` `epub` `ereader` `fb2` `kindle` `kobo` `luajit` `opds` `pdf` `pdf-reflow` `pocketbook` `reader` `reflow` `remarkable-tablet` `ubuntu-touch`

## Description

This project is a document-centric e-reader application designed for reading, annotating, and managing digital content across diverse e-ink and mobile hardware platforms. It provides a portable execution runtime and a declarative widget-based toolkit that enables the creation of responsive, hierarchical user interfaces tailored for resource-constrained display environments.

The application distinguishes itself through a robust platform-abstraction layer that maps hardware-specific features—such as haptics, screen orientation, and network connectivity—to a unified interface. It utilizes a modular Lua-based scripting engine to handle application logic and rendering, while a density-independent layout engine ensures consistent interface sizing and widget positioning across varying screen resolutions.

Beyond its core reading capabilities, the software includes comprehensive tools for document workflow management, such as custom highlight exporting and persistent preference storage via sidecar files. It also integrates low-level system utilities for managing hardware resources, including real-time clocks, frontlight brightness, and wireless network authentication, ensuring a cohesive experience across different device architectures.

## Tags

### Programming Languages & Runtimes

- [Embedded Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/embedded-runtimes.md) — A portable execution layer that abstracts hardware-specific features like screen orientation, haptic feedback, and power management for consistent cross-device performance.
- [Scripting Engines](https://awesome-repositories.com/f/programming-languages-runtimes/scripting-engines.md) — A modular architecture that utilizes an embedded scripting language to handle application logic, interface rendering, and custom user-defined extensions.
- [Module Loaders](https://awesome-repositories.com/f/programming-languages-runtimes/module-loaders.md) — The application loads external script modules from assets by implementing a custom loader that searches the file system for dependencies. ([source](http://koreader.rocks/doc/modules/android.html))

### User Interface & Experience

- [Widget Frameworks](https://awesome-repositories.com/f/user-interface-experience/widget-frameworks.md) — Constructs hierarchical user interfaces using nested menus and interactive components that respond to touch input through registered callbacks.
- [Declarative UI Toolkits](https://awesome-repositories.com/f/user-interface-experience/declarative-ui-toolkits.md) — A widget-based interface framework that manages complex hierarchical menus, touch interactions, and responsive layout scaling for constrained display environments.
- [Embedded User Interfaces](https://awesome-repositories.com/f/user-interface-experience/embedded-user-interfaces.md) — Creating responsive graphical user interfaces that adapt to varying screen resolutions, orientations, and hardware input methods on resource-constrained devices.
- [Layout Engines](https://awesome-repositories.com/f/user-interface-experience/layout-engines.md) — Calculates UI dimensions and widget positioning by scaling logical units to physical pixels based on detected display resolution.
- [Nested Navigation Menus](https://awesome-repositories.com/f/user-interface-experience/nested-navigation-menus.md) — The application builds nested touch-based menus that allow users to navigate through complex option trees within the user interface. ([source](http://koreader.rocks/doc/modules/ui.widget.touchmenu.html))
- [Display Scaling Utilities](https://awesome-repositories.com/f/user-interface-experience/display-scaling-utilities.md) — The application converts density-independent pixels into physical pixel values to ensure consistent interface sizing across different screen resolutions. ([source](http://koreader.rocks/doc/modules/ffi.framebuffer.html))

### Mobile Development

- [E-Reader Frameworks](https://awesome-repositories.com/f/mobile-development/e-reader-frameworks.md) — Building feature-rich document reading software that supports diverse file formats, custom typography, and advanced annotation management for mobile devices.

### Content Management & Publishing

- [Document Readers](https://awesome-repositories.com/f/content-management-publishing/document-readers.md) — A specialized software environment designed for reading, annotating, and managing digital documents across various e-ink and mobile hardware platforms.
- [Document Reading Utilities](https://awesome-repositories.com/f/content-management-publishing/document-reading-utilities.md) — Developing extensible reading tools that allow users to manage personal preferences, export highlights, and integrate external dictionary or reference resources.

### Software Engineering & Architecture

- [Abstraction Layers](https://awesome-repositories.com/f/software-engineering-architecture/abstraction-layers.md) — Maps hardware-specific features like haptics, screen orientation, and network supplicants to a unified interface for cross-device compatibility.

### Testing & Quality Assurance

- [Pull Request Automation](https://awesome-repositories.com/f/testing-quality-assurance/pull-request-automation.md) — The application fetches and checks out code from specific pull requests to verify proposed changes without performing manual merges. ([source](http://koreader.rocks/doc/topics/Collaborating_with_Git.md.html))

### Development Tools & Productivity

- [Repository Synchronization](https://awesome-repositories.com/f/development-tools-productivity/repository-synchronization.md) — The application synchronizes local code with official project sources by adding upstream references and pulling the latest commits or rebasing. ([source](http://koreader.rocks/doc/topics/Collaborating_with_Git.md.html))
- [Version Control Utilities](https://awesome-repositories.com/f/development-tools-productivity/version-control-utilities.md) — The application merges external developer branches into local testing environments by adding remote repositories and pulling specific code changes. ([source](http://koreader.rocks/doc/topics/Collaborating_with_Git.md.html))
- [Configuration Handlers](https://awesome-repositories.com/f/development-tools-productivity/configuration-handlers.md) — The application reads, writes, and deletes persistent configuration values from a central settings file to maintain application state across sessions. ([source](http://koreader.rocks/doc/modules/luadefaults.html))

### Operating Systems & Systems Programming

- [System Resource Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/system-resource-interfaces.md) — Accesses low-level hardware functions including real-time clocks, frontlight brightness, and wireless network stacks via direct system calls.
- [System Clock Utilities](https://awesome-repositories.com/f/operating-systems-systems-programming/system-clock-utilities.md) — The application interfaces with the hardware real-time clock to schedule wakeups, manage interrupts, and retrieve timestamps using standard epoch time. ([source](http://koreader.rocks/doc/modules/ffi.rtc.html))

### Hardware & IoT

- [Hardware Abstraction Layers](https://awesome-repositories.com/f/hardware-iot/hardware-abstraction-layers.md) — Bridging software logic with low-level hardware components like haptic engines, system clocks, and display controllers to enable responsive user interactions.

### Security & Cryptography

- [Permission Managers](https://awesome-repositories.com/f/security-cryptography/permission-managers.md) — The application checks for necessary system permissions to modify device settings before attempting to apply configuration changes. ([source](http://koreader.rocks/doc/modules/android.html))

### Data & Databases

- [Configuration Storage](https://awesome-repositories.com/f/data-databases/configuration-storage.md) — Persists user preferences and document-specific settings in local metadata files that mirror the structure of the primary content.

### Networking & Communication

- [Network Authentication](https://awesome-repositories.com/f/networking-communication/network-authentication.md) — The application connects the device to a specific wireless network by performing authentication through the standard system supplicant interface. ([source](http://koreader.rocks/doc/modules/ui.network.wpa_supplicant.html))
- [Network Management Interfaces](https://awesome-repositories.com/f/networking-communication/network-management-interfaces.md) — The application displays a network management interface that allows users to view available connections and trigger connection attempts via callbacks. ([source](http://koreader.rocks/doc/modules/ui.widget.networksetting.html))
