Multi-platform ebook reader
An ebook reader application supports PDF, DJVU, EPUB, FB2 and many more formats, running on Kindle, Kobo, PocketBook, Ubuntu Touch and Android devices.
Modules
android | FFI bindings for android native APIs and Java Native Interface (JNI). |
apps.filemanager.filemanagerbookinfo | This module provides a way to display book information (filename and book metadata) |
apps.filemanager.filemanagerconverter | This module is responsible for converting files. |
apps.filemanager.filemanagerutil | This module contains miscellaneous helper functions for FileManager |
apps.filemanager.lib.md | Stream Utils |
apps.reader.modules.readerlink | ReaderLink is an abstraction for document-specific link interfaces. |
apps.reader.modules.readerview | ReaderView module handles all the screen painting for document browsing. |
apps.reader.readerui | |
baseexporter | Base for highlight exporters. |
cache | It's apparently unusable, purge it and refresh the snapshot. |
cacheitem |
NOTE: As far as size estimations go, the assumption is that a key, value pair should roughly take two words, and the most common items we cache are Geom-like tables (i.e., 4 key-value pairs). |
datetime | This module contains date translations and helper functions for the KOReader frontend. |
dbg | This module provides development-only asserts and other debug guards. |
depgraph | DepGraph module. |
device.generic.device | Generic device abstraction. |
device.gesturedetector | This module detects gestures. |
device.input | An interface to get input events. |
device.kindle.mockrtc | Checks if the alarm we set matches the current time. |
device.kobo.nickel_conf | Access and modify values in Kobo eReader.conf used by Nickel. |
device.sysfs_light | |
device.wakeupmgr | RTC wakeup interface. |
dispatcher | This module is responsible for dispatching events. |
docsettings | This module is responsible for reading and writing metadata.lua files
in the so-called sidecar directory
(Wikipedia definition). |
document.doccache | ...otherwise, effectively disable the cache by making it single slot... |
document.documentregistry | This is a registry for document providers |
document.koptinterface | Interface to k2pdfoptlib backend. |
dump | A simple serialization function which won't do uservalues, functions, or loops. |
ffi.blitbuffer | Generic blitbuffer/GFX stuff that works on memory buffers |
ffi.crypto | LuaJIT FFI wrapper for libcrypto (OpenSSL). |
ffi.framebuffer | Framebuffer API. |
ffi.freetype | Freetype library interface (text rendering) |
ffi.jpeg | Module for JPEG decoding/encoding. |
ffi.koptcontext |
Leptonica cheatsheet: -- Data structures: PIX -- basic data structure - stores image BOX -- stores rectangle (x, y, w, h) BOXA -- array of BOX NUMA -- array of numbers |
ffi.loadlib | Helper for loading native libraries. |
ffi.md5 | MD5 hash library. |
ffi.mupdf | MuPDF API
This is a FFI wrapper for what was a Lua-based API in the past Some kind of C wrapper is needed for muPDF since muPDF uses a setjmp/longjmp based approach to error/exception handling. |
ffi.png | Module for PNG decoding/encoding. |
ffi.rtc | Module for interfacing with the RTC (real time clock). |
ffi.sdl2_0 | Module for interfacing SDL 2.0 video/input facilities |
ffi.utf8proc | Module for utf8 string operations. |
ffi.util | Module for various utility functions. |
ffi.webp | Module for WebP decoding. |
ffi.zipwriter | Zip packing workflow & code from luarocks' zip.lua : https://github.com/luarocks/luarocks/blob/master/src/luarocks/tools/zip.lua Modified to not require lua-zlib (we can wrap zlib with ffi) cf: http://luajit.org/extffitutorial.html, which uses zlib as an example ! Simplified to take filename and content from strings and not from disk |
ffi.zlib | LuaJIT FFI wrapper for zlib. |
ffi.zstd | LuaJIT FFI wrapper for ZSTD. |
gettext | A pure Lua implementation of a gettext subset. |
koplugin.HelloWorld | This is a debug plugin to test Plugin functionality. |
koplugin.QRClipboard | This plugin generates a QR code from clipboard content. |
koplugin.autodim | Plugin for automatic dimming of the frontlight after an idle period. |
koplugin.autowarmth | Plugin for setting screen warmth based on the sun position and/or a time schedule |
koplugin.calibre.metadata | This module implements functions for loading, saving and editing calibre metadata files. |
koplugin.coverimage | |
koplugin.exporter | Export highlights to different targets. |
koplugin.japanese | Japanese language support for KOReader, modelled after Yomichan. |
koplugin.japanese.deinflector | Yomichan deinflector implementation in pure Lua. |
koplugin.patchmanagement | Plugin for managing user patches |
koplugin.terminal | module used for terminal emulator to override InputText |
koplugin.terminal | This plugin provides a terminal emulator (VT52 (+some ANSI and some VT100)) |
koplugin.vocabbuilder | This plugin processes dictionary word lookups and uses spaced repetition to help you remember new words. |
koplugin.wallabag | |
languagesupport | Language-specific handling module. |
logger | Logger module. |
luadata | Handles append-mostly data such as KOReader's bookmarks and dictionary search history. |
luadefaults | Subclass of LuaSettings dedicated to handling the legacy global constants. |
luasettings | This module handles generic settings as well as KOReader's global settings system. |
optmath | Simple math helper functions |
random | A set of functions to extend math.random and math.randomseed. |
socketutil | This module contains miscellaneous helper functions specific to our usage of LuaSocket/LuaSec. |
sort | This module contains a collection of comparison functions (or factories for comparison functions) for table.sort. |
suntime | -- Author: Martin Zwicknagl (zwim) -- Date: 2021-10-29 -- The current source code of this file can be found on https://github.com/zwim/suntime. |
time | A runtime optimized module to compare and do simple arithmetic with fixed point time values (which are called fts in here). |
ui.bidi | Bidirectional text and UI mirroring setup and helpers. |
ui.data.css_tweaks | CSS tweaks must have the following attributes: - id: unique ID identifying this tweak, to be stored in settings - title: menu item title (must not be too long) - css: stylesheet text to append to external stylesheet They may have the following optional attributes: - description: text displayed when holding on menu item - priority: higher numbers are appended after lower numbers (if not specified, default to 0) - conflictswith: a string with the id of another tweak that should be disabled when this tweak is enabled, or an array/table of tweaks ids, or a function(otherid) return true for ids conflicting. |
ui.data.keyboardlayouts.generic_ime | Generic input method engine -- |
ui.data.keyboardlayouts.ja_keyboard | Japanese 12-key flick keyboard layout, modelled after Android's flick keyboard. |
ui.data.keyboardlayouts.ja_keyboard_keys | |
ui.data.keyboardlayouts.ko_KR_helper | |
ui.data.keyboardlayouts.zh_keyboard | Chinese stroke-based input method for Lua/KOReader. |
ui.data.optionsutil | This module contains miscellaneous helper functions for the creoptions and koptoptions. |
ui.downloadmgr | This module displays a PathChooser widget to choose a download directory. |
ui.event | Events are messages that are passed through the widget tree. |
ui.font | Font module. |
ui.geometry | Utilities for 2D geometry. |
ui.hook_container | HookContainer allows listeners to register and unregister a hook for speakers to execute. |
ui.menusorter | This module is responsible for constructing the KOReader menu based on a list of menu_items and a separate menu order. |
ui.network.wpa_supplicant | WPA client helper for Kobo. |
ui.otamanager | Checks for updates on the specified nightly build server. |
ui.plugin.background_task_plugin | BackgroundTaskPlugin creates a plugin with a switch to enable or disable it and executes a background task. |
ui.plugin.switch_plugin | SwitchPlugin creates a plugin with a switch to enable or disable it. |
ui.quickstart | This module is responsible for generating the quickstart guide. |
ui.renderimage | Image rendering module. |
ui.rendertext | Text rendering module. |
ui.size | This module provides a standardized set of sizes for use in widgets. |
ui.translator | This module translates text using Google Translate. |
ui.trapper | Trapper module: provides methods for simple interaction with UI, without the need for explicit callbacks, for use by linear jobs between their steps. |
ui.uimanager | This module manages widgets. |
ui.viewhtml | This module shows HTML code and CSS content from crengine documents. |
ui.widget.bboxwidget | BBoxWidget shows a bbox for page cropping. |
ui.widget.button | A button widget that shows text or an icon and handles callback when tapped. |
ui.widget.buttondialog | A button dialog widget that shows a grid of buttons. |
ui.widget.checkbutton | Button widget that shows a checkmark (✓ ) when checked and an empty box (□ )
when unchecked. |
ui.widget.checkmark | Widget that shows a checkmark (✓ ), an empty box (□ )
or nothing of the same size. |
ui.widget.confirmbox | Widget that shows a confirmation alert with a message and Cancel/OK buttons. |
ui.widget.container.alphacontainer | AlphaContainer will paint its content (a single widget) at the specified opacity level (0..1) |
ui.widget.container.bottomcontainer | BottomContainer contains its content (1 widget) at the bottom of its own dimensions |
ui.widget.container.centercontainer | CenterContainer centers its content (1 widget) within its own dimensions |
ui.widget.container.framecontainer | A FrameContainer is some graphics content (1 widget) that is surrounded by a frame |
ui.widget.container.inputcontainer | An InputContainer is a WidgetContainer that handles user input events including multi touches and key presses. |
ui.widget.container.leftcontainer | LeftContainer aligns its content (1 widget) at the left of its own dimensions |
ui.widget.container.movablecontainer | A MovableContainer can have its content moved on screen with Swipe/Hold/Pan. |
ui.widget.container.rightcontainer | RightContainer aligns its content (1 widget) at the right of its own dimensions |
ui.widget.container.scrollablecontainer | ScrollableContainer allows scrolling its content (1 widget) within its own dimensions
This scrollable container needs to be known as widget.cropping_widget in the widget using it that is passed to UIManager:show() for UIManager to ensure proper interception of inner widget self-repainting/invert (mostly used when flashing for UI feedback that we want to limit to the cropped area). |
ui.widget.container.topcontainer | TopContainer contains its content (1 widget) at the top of its own dimensions |
ui.widget.container.underlinecontainer | An UnderlineContainer is a WidgetContainer that is able to paint a line under its child node. |
ui.widget.container.widgetcontainer | WidgetContainer is a container for one or multiple Widgets. |
ui.widget.datetimewidget | Widget for setting the date or time. |
ui.widget.eventlistener | The EventListener is an interface that handles events. |
ui.widget.horizontalgroup | A layout widget that puts objects besides each other. |
ui.widget.htmlboxwidget | HTML widget (without scroll bars). |
ui.widget.iconbutton | Button with a big icon image! Designed for touch devices. |
ui.widget.iconwidget | |
ui.widget.imageviewer | ImageViewer displays an image with some simple manipulation options. |
ui.widget.imagewidget | ImageWidget shows an image from a file or memory. |
ui.widget.infomessage | Widget that displays an informational message. |
ui.widget.inputdialog | Widget for taking user input. |
ui.widget.keyboardlayoutdialog | This widget displays a keyboard layout dialog. |
ui.widget.keyvaluepage | Widget that presents a multi-page to show key value pairs. |
ui.widget.linewidget | Widget that displays a line. |
ui.widget.listview | Widget component that handles pagination for a list of items. |
ui.widget.multiconfirmbox | Widget that shows a message and cancel/choice1/choice2 buttons |
ui.widget.multiinputdialog | Widget for taking multiple user inputs. |
ui.widget.networksetting | Network setting widget. |
ui.widget.notification | Widget that displays a tiny notification at the top of the screen. |
ui.widget.numberpickerwidget | A customizable number picker. |
ui.widget.openwithdialog | This widget displays an open with dialog. |
ui.widget.overlapgroup | A layout widget that puts objects above each other. |
ui.widget.progresswidget | Widget for displaying progress bar. |
ui.widget.qrmessage | Widget that displays a qr code. |
ui.widget.radiobuttontable | A button table to be used in dialogs and widgets. |
ui.widget.radiobuttonwidget | Widget that allows selecting an entry from a RadioButton list. |
ui.widget.scrollhtmlwidget | HTML widget with vertical scroll bar. |
ui.widget.scrolltextwidget | Text widget with vertical scroll bar. |
ui.widget.textboxwidget | A TextWidget that handles long text wrapping |
ui.widget.textviewer | Displays some text in a scrollable view. |
ui.widget.textwidget | A TextWidget puts a string on a single line. |
ui.widget.toggleswitch | Displays a button that toggles between states. |
ui.widget.touchmenu | TouchMenu widget for hierarchical menus. |
ui.widget.trapwidget | Invisible full screen widget for catching UI events. |
ui.widget.verticalgroup | A layout widget that puts objects under each other. |
ui.widget.widget | This is a generic Widget interface, which is the base class for all other widgets. |
userpatch | Allows applying developer patches while running KOReader. |
util | This module contains miscellaneous helper functions for the KOReader frontend. |
version | This module helps with retrieving version information. |
Topics
Collaborating_with_Git.md | |
DataStore.md | |
Development_guide.md | |
Events.md | |
Hacking.md | |
Porting.md | |
README.md | |
Unit_tests.md |