Skip to main content

Pixel-perfect template generator for e-ink devices like Supernote, reMarkable, and Boox

Project description

Table of Contents

  1. Badges
  2. About
  3. Why This Tool?
  4. What this tool is NOT
  5. Features
  6. Installation
  7. Full Documentation
  8. Supported Devices
  9. Configuration
  10. Usage Examples
    1. Basic Templates
  11. Output
  12. Contributing
  13. License
  14. Credits

Badges

Python CI Python Version License

About

A device-agnostic command-line tool for generating mathematically balanced, pixel-perfect page templates for e-ink devices. Developed with the Supernote Manta, this tool supports millimeter or pixel specifications for human-readable, technically-precise, or true-scale template configurations.

Why This Tool?

This tool was born from the frustration of online generators that fail to handle "half-lines" or pixel alignment, resulting in uneven, blurry, or aliased lines on high-DPI e-ink screens. This generator calculates exact pixel-perfect margins and spacing based on your device's specific resolution and DPI, ensuring every line is crisp and uniform.

Problem: Blurry Lines (Fractional Pixels) "The image on the left (using --true-scale) shows blurry, aliased lines caused by fractional pixels. The image on the right (default) shows the tool's pixel-perfect rounding, which ensures every line is crisp."

"Before" (Blurry) "After" (Pixel-Perfect)
before_pixel_perfect.png after_pixel_perfect.png

Problem: Toolbar/Overlay The image on the left (built-in template) shows the file name and page count overlays displaying over the template. The image on the right shows the lines being automatically adjusted to render within the margins.

"Before" (OEM Template) "After" (Pixel-Perfect)
built-in_9mm.png pixel_perfect_9mm.png

Problem: Half-Spaced Lines and Cells The image on the left (using --enforce-margins) shows lines and cells being cut off abruptly at the exact margin. The image on the right (default) shows the tool's smart grid-centering, which automatically pads the margins to prevent 'half-cells' and create a cleaner, more balanced page.

"Before" (cut-off cells) "After" (Pixel-Perfect)
before_half_cells.png after_adjusted_margins.png

Problem: Grid Misalignment The image on the left (default) shows a grid being awkwardly cut off. The image on the right (--force-major-alignment) shows the margins being automatically adjusted to end perfectly on a major grid line.

"Before" (Misaligned) "After" (Force-Aligned)
problem_before_grid_alignment.png problem_after_grid_alignment.png

What this tool is NOT

  • Calendar/Schedule Generator
  • Task/To Do list Generator
  • Color e-ink Template Generator (yet)
  • Real-Time GUI Editor
  • Monetized or Paywalled Tool

Features

  • Pixel-Perfect Alignment: Automatically adjusts margins and spacing to eliminate blurry lines and aliasing artifacts.
  • Multiple Template Types: Generate lined, dotgrid, grid, manuscript, french ruled, music staff, isometric, hexgrid, and hybrid pages.
  • Flexible Layouts: Create single pages, uniform N x M grids, mixed-type grids, and complex, ratio-based layouts using JSON.
  • Decorative Title Pages: Generate artistic cover pages using Truchet tiles, L-System fractals, noise fields, and more.
  • Powerful Customization: Add major/minor lines, decorative separators, line numbers, and axis labels.
  • Flexible Spacing: Define layouts using millimeters (default), exact pixels, or by fitting an exact line count.

Installation

pip install eink-template-gen

Full Documentation

For detailed guides, feature deep-dives, and advanced examples, please see the docs/ directory:

Supported Devices

Built-in device profiles:

  • Supernote Manta (10.7", 1920x2560, 300 DPI)
  • Supernote A5 X (10.3", 1404x1872, 226 DPI)
  • Supernote A6 X (7.8", 1404x1872, 300 DPI)
  • Supernote Nomad (7.8", 1404x1872, 300 DPI)

Configuration

Set a default device to avoid specifying --device every time:

eink-template-gen util set-default-device manta
eink-template-gen util set-default-margin 10

Configuration is stored locally in config.json.

Usage Examples

Basic Templates

# Simple lined paper
eink-template-gen lined --spacing 7mm

# Dot grid with major crosshairs
eink-template-gen dotgrid --spacing 5mm --major_every 5

# Graph paper with axis labels
eink-template-gen grid --spacing 5mm --major_every 5 --axis-labels

# Manuscript paper for handwriting practice
eink-template-gen manuscript --spacing 8mm

For more complex examples, including multi, layout, and title commands, see the Advanced Usage Examples documentation.

Output

Templates are saved to out/<device_id>/ by default:

out/
├── manta/
│   ├── lined_7mm_0_5px.png
│   ├── grid_5mm_0_5px_h-wavy.png
│   └── title_truchet_10mm_seed42.png
└── a5x/
    └── lined_6mm_71px.png

Use --output-dir and --filename to customize output location.

Contributing

Contributions are welcome! This project uses:

  • Cairo for high-quality 2D graphics rendering
  • Python 3.8+
  • Pure Python implementation (no external dependencies for noise/fractals)

License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.

Credits

Developed for the Supernote community with love for pixel-perfect templates.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eink_template_gen-0.4.0.tar.gz (75.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eink_template_gen-0.4.0-py3-none-any.whl (73.4 kB view details)

Uploaded Python 3

File details

Details for the file eink_template_gen-0.4.0.tar.gz.

File metadata

  • Download URL: eink_template_gen-0.4.0.tar.gz
  • Upload date:
  • Size: 75.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for eink_template_gen-0.4.0.tar.gz
Algorithm Hash digest
SHA256 1f763a5bed2c94f0a1a76681fb229b10d61811cb22341d5ae5e58aa106f00a44
MD5 164f0dfe59641890693f06475be8b186
BLAKE2b-256 5840313f252fb0bf44f9608f4e74108661c21d272c96c4ff2c5d00f70dc40f8c

See more details on using hashes here.

File details

Details for the file eink_template_gen-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for eink_template_gen-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 79467b7bf2dd6503363ea53b75f43f628ebab48a30e72ac15da7a95ff954fc3e
MD5 57f2202bc6df39a610fe385965223f92
BLAKE2b-256 3d8eafed63e5f67f21073bed45795863c0a5f399aeb8dfab6dabbbf7b8f3a63d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page