An experiment with the line files for the remarkable tablet. The
stretch goal is to be able to convert a .SVG
file to a .rm
file. Preferably also with the ability to insert it into the tablets
file system.
This project explores AI-assisted development for working with the ReMarkable format. Earlier iterations used Claude 3 and GPT-4; it is now maintained with Codex CLI.
- Runtime deps: installed from
requirements.txt
(kept lean; excludesmanim
). - QA deps (CI/locals): installed from
requirements-qa.txt
and invoked viamake qa
. - Optional dev extras:
requirements-dev.txt
includesmanim
and other extras for local-only workflows. CI does not install these to avoid system packages.
Typical workflows:
- Quick tests:
make test-quick
- Full QA:
make qa
(lint, type-check, tests with coverage, security) - CI pipeline: runs
make ci
(nomanim
)
- Install dev extras: `source .venv/bin/activate && pip install -r requirements-dev.txt`
- You may need system packages for Pango/Cairo bindings:
- macOS (Homebrew): `brew install cairo pango`
- Ubuntu/Debian: `sudo apt-get update && sudo apt-get install -y libpangocairo-1.0-0 libcairo2-dev libpango1.0-dev`
Note: CI intentionally avoids installing `manim` (and `pangocairo`) to keep the pipeline fast and portable. Use local installs when you experiment with `scene.py` or any rendering tasks.
This repo includes a small CLI used for future notebook read/write workflows.
- Install locally (editable): `pip install -e .`
- Run: `rmfiles –help`
If the `rmfiles` command isn’t found, either:
- Run via module (no install needed from repo root): `python -m rmfiles –help`
- Or ensure the console script is installed into your venv and visible on PATH:
- `source .venv/bin/activate && pip install -e .`
- `which rmfiles` should point inside `.venv/bin/rmfiles`
- If your shell caches commands, refresh: `hash -r` (bash) or restart the shell
Examples:
- Create a simple triangle notebook:
- `rmfiles new –out output.rm –label “Triangle Layer” –center-x 200 –center-y 200 –size 150`
- Inspect a file (basic header + optional block counts if `rmscene` is installed):
- `rmfiles inspect output.rm`
Generate a simple .rm file with a visible rectangle using the rmscene-backed helpers in `rmfiles.generate`:
Example (Python):
from rmfiles.generate import create_rectangle_rm create_rectangle_rm(“output/rect.rm”, x=100, y=120, width=300, height=200)
from rmfiles.generate import build_rectangle_blocks, write_rm blocks, author_uuid = build_rectangle_blocks(x=120, y=140, width=160, height=100) write_rm(“output/rect2.rm”, blocks, version=”3.1”)
These helpers assemble a minimal, device-like block sequence (author IDs, migration and page info, scene tree, layer + stroke) using `rmscene` and write with a compatible version string. Coordinates are in pixels (typical page dimensions 1404×1872). For visibility, strokes use a marker tool and thicker width than the default.
Note: writing relies on the `rmscene` package (installed via `setup.py`). If it’s not available, `rmfiles new` will fail with a clear message.