koreader
An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices
Top Related Projects
The official source code repository for the calibre ebook manager
A Java ePub reader and parser framework for Android.
A cross platform desktop reading app, based on the Readium Desktop toolkit
A cross platform desktop reading app, based on the Readium Desktop toolkit
Qt based ebook reader
Read e-books in style
Quick Overview
KOReader is an open-source document viewer primarily designed for E Ink devices. It supports a wide range of document formats, including EPUB, PDF, DjVu, CBZ, and more. KOReader offers a highly customizable reading experience with features like text reflow, dictionary lookup, and cloud synchronization.
Pros
- Supports a wide variety of document formats
- Highly customizable with numerous settings and plugins
- Optimized for E Ink devices, improving battery life and readability
- Active community and regular updates
Cons
- Installation process can be complex for some devices
- Learning curve for new users due to extensive features and settings
- Limited support for DRM-protected content
- May have compatibility issues with some newer e-reader models
Getting Started
To install KOReader on your e-reader:
- Check if your device is supported on the KOReader wiki.
- Download the latest release for your device from the releases page.
- Follow the installation instructions specific to your device model.
- After installation, launch KOReader and follow the on-screen setup wizard.
For development:
git clone https://github.com/koreader/koreader.git
cd koreader
./kodev build
Refer to the development guide for more detailed instructions on setting up a development environment and contributing to the project.
Competitor Comparisons
The official source code repository for the calibre ebook manager
Pros of Calibre
- More comprehensive e-book management features, including library organization, metadata editing, and format conversion
- Cross-platform support for Windows, macOS, and Linux
- Larger and more active community, resulting in frequent updates and extensive plugin ecosystem
Cons of Calibre
- Heavier resource usage and larger installation footprint
- Steeper learning curve due to the abundance of features
- Less optimized for e-ink devices compared to KOReader
Code Comparison
KOReader (Lua):
local InputContainer = require("ui/widget/container/inputcontainer")
local FrameContainer = require("ui/widget/container/framecontainer")
local CenterContainer = require("ui/widget/container/centercontainer")
local ConfirmBox = require("ui/widget/confirmbox")
local UIManager = require("ui/uimanager")
Calibre (Python):
from calibre.gui2.actions import InterfaceAction
from calibre.gui2 import error_dialog, info_dialog
from calibre.constants import iswindows
from calibre.utils.config import JSONConfig
from calibre.utils.icu import sort_key
Both projects use different programming languages, with KOReader primarily using Lua and Calibre using Python. KOReader's code focuses on UI elements and containers, while Calibre's code snippet demonstrates actions, dialogs, and utility functions for e-book management.
A Java ePub reader and parser framework for Android.
Pros of FolioReader-Android
- Specifically designed for Android, offering a native experience
- Includes built-in features like text-to-speech and dictionary lookup
- Active development with frequent updates and bug fixes
Cons of FolioReader-Android
- Limited to Android platform, lacking cross-platform support
- Fewer customization options compared to KOReader
- Smaller community and less extensive documentation
Code Comparison
KOReader (Lua):
local ReaderUI = require("apps/reader/readeruiwidget")
local UIManager = require("ui/uimanager")
function ReaderUI:onReaderReady()
UIManager:setDirty(self.view.dialog, "partial")
end
FolioReader-Android (Java):
public class FolioActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.folio_activity);
}
}
KOReader offers a more flexible, script-based approach using Lua, allowing for easier customization and extension. FolioReader-Android uses Java and follows Android development conventions, making it more accessible for Android developers but potentially less flexible for advanced customizations.
A cross platform desktop reading app, based on the Readium Desktop toolkit
Pros of Thorium-reader
- Cross-platform support (Windows, macOS, Linux)
- Modern, user-friendly interface
- Built with web technologies, making it easier for web developers to contribute
Cons of Thorium-reader
- Limited file format support compared to KOReader
- Less customization options for reading experience
- Newer project with a smaller community and fewer features
Code Comparison
KOReader (Lua):
local ReaderUI = require("apps/reader/readeruiwidget")
local UIManager = require("ui/uimanager")
function ReaderUI:onReadSettings(settings)
-- Handle reading settings
end
Thorium-reader (TypeScript):
import { ReaderConfig } from "./reader-config";
import { ReaderMenuProps } from "./components/ReaderMenu";
export function initializeReader(config: ReaderConfig): ReaderMenuProps {
// Initialize reader with configuration
}
Both projects use different programming languages and architectures. KOReader is primarily written in Lua and focuses on e-ink devices, while Thorium-reader uses web technologies (Electron and TypeScript) for a cross-platform desktop experience. KOReader offers more low-level customization, while Thorium-reader provides a more modern, web-based approach to e-book reading.
A cross platform desktop reading app, based on the Readium Desktop toolkit
Pros of Thorium-reader
- Cross-platform support (Windows, macOS, Linux)
- Modern, user-friendly interface
- Built with web technologies, making it easier for web developers to contribute
Cons of Thorium-reader
- Limited file format support compared to KOReader
- Less customization options for reading experience
- Newer project with a smaller community and fewer features
Code Comparison
KOReader (Lua):
local ReaderUI = require("apps/reader/readeruiwidget")
local UIManager = require("ui/uimanager")
function ReaderUI:onReadSettings(settings)
-- Handle reading settings
end
Thorium-reader (TypeScript):
import { ReaderConfig } from "./reader-config";
import { ReaderMenuProps } from "./components/ReaderMenu";
export function initializeReader(config: ReaderConfig): ReaderMenuProps {
// Initialize reader with configuration
}
Both projects use different programming languages and architectures. KOReader is primarily written in Lua and focuses on e-ink devices, while Thorium-reader uses web technologies (Electron and TypeScript) for a cross-platform desktop experience. KOReader offers more low-level customization, while Thorium-reader provides a more modern, web-based approach to e-book reading.
Qt based ebook reader
Pros of Lector
- Cross-platform support (Windows, macOS, Linux)
- User-friendly graphical interface
- Built-in library management features
Cons of Lector
- Limited device support compared to KOReader
- Fewer customization options for reading experience
- Smaller community and less frequent updates
Code Comparison
KOReader (Lua):
local ReaderUI = require("apps/reader/readeruiwidget")
local UIManager = require("ui/uimanager")
function ReaderUI:onClose()
UIManager:close(self)
return true
end
Lector (Python):
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Lector')
self.init_ui()
def init_ui(self):
self.central_widget = QWidget(self)
self.setCentralWidget(self.central_widget)
KOReader is primarily written in Lua and focuses on e-ink devices, while Lector is developed in Python using PyQt for its graphical interface. KOReader offers more advanced features for e-readers, whereas Lector provides a simpler, multi-platform reading experience with integrated library management.
Read e-books in style
Pros of Foliate
- Modern, sleek user interface with a native GTK design
- Supports a wide range of e-book formats, including EPUB, MOBI, and PDF
- Integrates well with GNOME desktop environment and other Linux distributions
Cons of Foliate
- Limited to desktop platforms, primarily Linux-based systems
- Fewer customization options for reading experience compared to KOReader
- Less active development and smaller community support
Code Comparison
KOReader (Lua):
local ReaderUI = require("apps/reader/readerui")
local ReaderView = ReaderUI:extend()
function ReaderView:init()
self.view_mode = G_reader_settings:readSetting("view_mode") or "page"
end
Foliate (JavaScript):
const { GObject, Gtk } = imports.gi
const View = GObject.registerClass({
GTypeName: 'FoliateView',
}, class View extends Gtk.Stack {
_init(params) {
super._init(params)
this._settings = new Gio.Settings({ schema_id: 'com.github.johnfactotum.Foliate' })
}
})
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
KOReader is a document viewer primarily aimed at e-ink readers.
Download ⢠User guide ⢠Wiki ⢠Developer docs
Main features
-
portable: runs on embedded devices (Cervantes, Kindle, Kobo, PocketBook, reMarkable), Android and Linux computers. Developers can run a KOReader emulator in Linux and MacOS.
-
multi-format documents: supports fixed page formats (PDF, DjVu, CBT, CBZ) and reflowable e-book formats (EPUB, FB2, Mobi, DOC, RTF, HTML, CHM, TXT). Scanned PDF/DjVu documents can also be reflowed with the built-in K2pdfopt library. ZIP files are also supported for some formats.
-
full-featured reading: multi-lingual user interface with a highly customizable reader view and many typesetting options. You can set arbitrary page margins, override line spacing and choose external fonts and styles. It has multi-lingual hyphenation dictionaries bundled into the application.
-
integrated with calibre (search metadata, receive ebooks wirelessly, browse library via OPDS), Wallabag, Wikipedia, Google Translate and other content providers.
-
optimized for e-ink devices: custom UI without animation, with paginated menus, adjustable text contrast, and easy zoom to fit content or page in paged media.
-
extensible: via plugins
-
fast: on some older devices, it has been measured to have less than half the page-turn delay as the built in reading software.
-
and much more: look up words with StarDict dictionaries / Wikipedia, add your own online OPDS catalogs and RSS feeds, over-the-air software updates, an FTP client, an SSH server, â¦
Please check the user guide and the wiki to discover more features and to help us document them.
Screenshots
Installation
Please follow the model specific steps for your device:
Android ⢠Cervantes ⢠Kindle ⢠Kobo ⢠Linux ⢠Pocketbook ⢠reMarkable
Development
Setting up a build environment ⢠Collaborating with Git ⢠Building targets ⢠Porting ⢠Developer docs
Support
KOReader is developed and supported by volunteers all around the world. There are many ways you can help:
- fix bugs and implement new features
- translate the program into your language or improve an existing translation
- document lesser-known features on the wiki
- help others with your knowledge on the forum
Right now we only support liberapay donations.
Contributors
Top Related Projects
The official source code repository for the calibre ebook manager
A Java ePub reader and parser framework for Android.
A cross platform desktop reading app, based on the Readium Desktop toolkit
A cross platform desktop reading app, based on the Readium Desktop toolkit
Qt based ebook reader
Read e-books in style
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot