KOReader is a document viewer application primarily designed for e-ink readers, supporting a wide range of formats including PDF, EPUB, DjVu, CBZ, and more. It provides a full-featured reading experience with file management, annotation, dictionary lookup, OPDS catalog browsing, Calibre integration, cloud storage, and extensive customization through a plugin system. The architecture is a monolithic Lua application built on a custom widget toolkit with an event-driven UI manager, platform-specific device abstraction layers (Kindle, Kobo, PocketBook, reMarkable, Android, SDL), and a robust caching and rendering pipeline. Key entry points are `reader.lua` for the main application and `kodev` for development/testing. The codebase is large and mature, with a strong emphasis on performance and e-ink optimization, but shows some technical drift in the form of deprecated code paths, platform-specific hacks, and a fragmented keyboard layout system.
This repository provides a native printing solution for the reMarkable tablet. It consists of a Go-based daemon that listens on TCP port 9100 for incoming print jobs, processes them to extract the PDF data and job name, and saves the document to the reMarkable's filesystem along with metadata. The solution includes CUPS integration via a PPD file and a filter script to send print jobs to the device. The daemon supports systemd socket activation for efficient resource usage. The code is straightforward and functional, focusing on doing one thing well.
This repository contains a Go application designed to run as a service on the reMarkable tablet. It automatically downloads images from various sources (news sites, comics, etc.) and sets them as the device's suspend screen. The application waits for WiFi connectivity, respects a configurable cooldown period to avoid excessive requests, processes images by resizing and centering them to the screen, and optionally overlays text extracted from the source HTML or provided via command line. The architecture is a simple single-threaded service that uses a loop to wait for network events (via dbus) and then fetches and processes an image. Key components include HTTP clients with error handling, XPath-based data extraction from HTML and JSON, image resizing and centering, and text rendering using TrueType fonts. While the application is tailored to the reMarkable's screen size and specific use case, it contains reusable utilities for font loading, text rendering on images, and URL manipulation with XPath extraction. However, some utilities are coupled to global state (such as HTTP headers and log level) which limits their reusability without modification.