87 lines
3.2 KiB
Markdown
87 lines
3.2 KiB
Markdown
<table>
|
|
<tr>
|
|
<td><img src="screenshot1.jpg" width="100%"/></td>
|
|
<td><img src="screenshot2.jpg" width="100%"/></td>
|
|
</tr>
|
|
</table>
|
|
|
|
# xteink-plugins
|
|
|
|
A plugin system for customizing and extending [CrossPoint Reader](https://github.com/crosspoint-reader/crosspoint-reader) firmware on your xteink device. Plugins are applied as source-level patches before the firmware is compiled and flashed.
|
|
|
|
## Plugins
|
|
|
|
### Dark Mode
|
|
|
|
Adds a **Dark Mode** option to the Plugins settings tab. When enabled, the screen is inverted after each page render, producing white-on-black text across all reader formats (EPUB, TXT, and XTC).
|
|
|
|
| State | Effect |
|
|
|-------|--------|
|
|
| **Disabled** | Normal display (default) |
|
|
| **Enabled** | Screen inverted — white text on black background |
|
|
|
|
### Smaller Fonts
|
|
|
|
Adds a **Smaller Fonts** option to the Plugins settings tab. When enabled, your chosen reader font is transparently substituted with a smaller variant — no need to change your font preference.
|
|
|
|
| Mode | Effect |
|
|
|------|--------|
|
|
| **Disabled** | No change (default) |
|
|
| **Smaller** | Drops the current font size down by one step (e.g. Bookerly 16 → 14) |
|
|
| **Smallest** | Drops the current font size down by two steps (e.g. Bookerly 16 → 12) |
|
|
|
|
Supports Bookerly, Noto Sans, and OpenDyslexic. The plugin also generates and embeds Bookerly at 8pt and 10pt — sizes not included in the stock firmware.
|
|
|
|
## Requirements
|
|
|
|
- Python 3.10+
|
|
- [PlatformIO](https://platformio.org/) (`pio` on your PATH)
|
|
- `git`
|
|
- Your xteink device connected via USB
|
|
|
|
Install Python dependencies with:
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Usage
|
|
|
|
From the root of this repository, run:
|
|
|
|
```bash
|
|
python install.py
|
|
```
|
|
|
|
The installer will:
|
|
|
|
1. Clone the CrossPoint Reader source repository
|
|
2. Prompt you to select which plugins to install and apply them as patches
|
|
3. Build the firmware with PlatformIO
|
|
4. Auto-detect your device's serial port and flash the firmware
|
|
|
|
> **Note:** This script modifies and flashes custom firmware to your device. The author accepts no responsibility for any damage that may occur to your device as a result of using this installer.
|
|
|
|
## Repository Structure
|
|
|
|
```
|
|
xteink-plugins/
|
|
├── install.py # Interactive installer: clone → patch → build → flash
|
|
└── plugins/
|
|
├── darkmode/
|
|
│ ├── patch.py # Patch script applied to the CrossPoint source
|
|
│ ├── DarkModePlugin.h/.cpp # Dark mode state and screen inversion logic
|
|
│ └── DarkModeSettingsPage.h/.cpp # Settings UI activity
|
|
└── smallerfonts/
|
|
├── patch.py # Patch script applied to the CrossPoint source
|
|
├── SmallerFontsPlugin.h/.cpp # Font resolution logic
|
|
└── SmallerFontsSettingsPage.h/.cpp # Settings UI activity
|
|
```
|
|
|
|
## Adding a Plugin
|
|
|
|
1. Create a new directory under `plugins/` with your plugin's name.
|
|
2. Add a `patch.py` file with a `patch(repo_dir: str)` function. This function receives the absolute path to the cloned CrossPoint repository and should make all necessary modifications.
|
|
|
|
The installer will automatically discover and offer to install any directory under `plugins/` that contains a `patch.py`.
|