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.3.0.tar.gz (78.3 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.3.0-py3-none-any.whl (76.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: eink_template_gen-0.3.0.tar.gz
  • Upload date:
  • Size: 78.3 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.3.0.tar.gz
Algorithm Hash digest
SHA256 16a639dd7475dbbf22502baac219139c1c2d76399581b3e803450c6134e58369
MD5 a1d1f35ab988ae4dbdaad36501e69f8b
BLAKE2b-256 a94487ec4f37f99f02ddffc29b98ecedc57ec3767eb0e307b64dbc67b0f8ad49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for eink_template_gen-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 43ac7f1cec52688f389c8011905076f6eb4e7424b1c467b97b1e6d88c614f694
MD5 434f11eff0ab9f6ceba4d199f7587a4a
BLAKE2b-256 d4a76d20f2eb51c30694668e60a0dc993c3d659bb3d8d120085452e07cf47cdd

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