Skip to main content

A set of tools to interact with reMarkable tablets

Project description

remarkable

Utilities for interacting with a reMarkable tablet and post-processing exported PDFs.

This project installs two command-line scripts:

  • remarkable: terminal UI and automation commands for browsing, downloading, and uploading documents.
  • remarkable-hlfix: PDF post-processing tool that reduces highlight opacity.

Installation

Install from PyPI:

pip install remarkable-tools

or with uv:

uv add remarkable-tools

To install as a standalone tool (makes remarkable and remarkable-hlfix available globally without a project):

uv tool install remarkable-tools

For development, install the package in your current environment:

uv sync

Then run scripts with uv run:

uv run remarkable --help
uv run remarkable-hlfix --help

If installed as a tool or package entry point, you can call remarkable and remarkable-hlfix directly.

Script: remarkable

remarkable connects to the tablet over the reMarkable local interface (http://10.11.99.1) and supports both interactive and one-shot modes.

Usage

Start the interactive browser:

remarkable

Start in a specific folder title path:

remarkable "Work/Meetings"

Download newest document and exit:

remarkable --get-newest

Download newest document matching a tag suffix:

remarkable --get-newest --tag _notes

Upload a file and exit:

remarkable --upload-file ./document.pdf

Disable highlight fixing for downloaded PDFs:

remarkable --no-hl-fix

Show installed/runtime version:

remarkable --version

Show where config files are searched (in load order):

remarkable --show-config-paths

Interactive keys

Global:

  • q: quit
  • F5: refresh listing
  • h: toggle highlight fix for PDF downloads
  • t: set a tag filter used by downloads (Enter confirms, Esc cancels)
  • /: filter the current view (type to narrow, Enter to apply, Esc to clear)
  • / or Tab / Shift+Tab: move between the folder and document panes
  • Backspace: go up one folder

Selecting a folder (Enter or click) opens it. With a document selected:

  • d: download as PDF (honours the HL Fix toggle)
  • D: download as .rmdoc
  • u: upload a file from disk (opens a file picker)

The status bar above the panes shows the current location (/ Books / Papers), the active filter as a filter: /…/ chip (only visible while filtering), the highlight-fix state, and the active tag. Pane titles show item counts, and switch to matched/total while a filter is active.

Downloads and uploads run in the background; a toast notification reports success or failure so the UI stays responsive. you can always confirm active settings before downloading.

Script: remarkable-hlfix

remarkable-hlfix rewrites a PDF so reMarkable-style highlights are no longer fully opaque.

Default behavior:

  • Targets known reMarkable highlight colors.
  • Reduces fully opaque highlight fill and stroke opacity from 1.0 to 0.4.
  • Preserves graphics-state scoping (q/Q) so opacity changes do not leak between sibling drawing blocks.

Usage

Basic conversion:

remarkable-hlfix input.pdf output.pdf

Run with default filenames (input.pdf -> output.pdf):

remarkable-hlfix

Apply to all fully opaque filled shapes instead of only known highlight colors:

remarkable-hlfix input.pdf output.pdf --all-colors

Tune minimum stroke width required before applying stroke transparency:

remarkable-hlfix input.pdf output.pdf --min-stroke-width 4.0

Detect highlight palette from one page and print a paste-ready color block:

remarkable-hlfix input.pdf --calibrate-palette --calibration-page 1

Show installed/runtime version:

remarkable-hlfix --version

Show where config files are searched (in load order):

remarkable-hlfix --show-config-paths

Configuration

Both scripts load defaults from the same config files (later files override earlier ones).

To see the exact search order on your machine, run:

remarkable --show-config-paths

or:

remarkable-hlfix --show-config-paths

This works both in project environments (uv run ...) and for globally installed tools (uv tool install ...).

Expected format:

[general]
hl_fix = true
tag = ""
url = "http://10.11.99.1"

[highlight]
alpha = 0.4
alpha_threshold = 0.999
min_stroke_width = 0.1
color_tolerance = 0.1

All fields are optional and fall back to the defaults shown above. Command-line arguments override config values.

[general] options

Option Default Description
hl_fix true Whether to apply highlight fixing when downloading PDFs via remarkable.
tag "" Tag suffix filter used by --get-newest.
url "http://10.11.99.1" URL of reMarkable (do not change unless reMarkable changes standard endpoint).

[highlight] options

These control remarkable-hlfix behavior. Command-line flags (where available) override config values.

Option Default Description
alpha 0.4 Target opacity applied to highlight fill and stroke.
alpha_threshold 0.999 Minimum opacity for a shape to be considered fully opaque and eligible for reduction.
min_stroke_width 0.1 Minimum stroke width (in PDF units) required before stroke opacity is reduced. Raise this to leave thin lines untouched.
color_tolerance 0.1 Per-channel tolerance when matching fill colors against the known highlight palette.

Troubleshooting

remarkable cannot connect to device

Symptoms:

  • Requests fail or time out.
  • You see connection errors when listing folders or downloading files.

Checks:

  1. Ensure the tablet is connected over USB and USB web interface access is enabled.
  2. Verify the endpoint is reachable:
curl -I http://10.11.99.1/documents/
  1. If needed, retry after reconnecting the cable and restarting the tablet's USB web interface.

config-related startup failure

Ensure the config file uses the correct TOML structure (see Configuration above).

If you are testing quickly, run with explicit flags to avoid relying on config values.

downloaded PDF highlights look unchanged

Try one of these:

  1. Make sure highlight fixing is enabled (--hl-fix or toggle h in the UI).
  2. Run a direct pass with remarkable-hlfix.
  3. If your document uses non-standard colors, run calibration first:
remarkable-hlfix input.pdf --calibrate-palette --calibration-page 1
  1. If highlights are very thin, lower the stroke threshold:
remarkable-hlfix input.pdf output.pdf --min-stroke-width 1.0

remarkable-hlfix input errors

Common causes:

  • Input path is wrong.
  • File is encrypted or malformed.
  • Calibration page number does not exist in the PDF.

Checks:

  1. Confirm file paths are correct.
  2. Start with the basic command:
remarkable-hlfix input.pdf output.pdf
  1. If that fails, try opening and re-saving the PDF with another tool, then run again.

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

remarkable_tools-0.4.1.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

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

remarkable_tools-0.4.1-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file remarkable_tools-0.4.1.tar.gz.

File metadata

  • Download URL: remarkable_tools-0.4.1.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for remarkable_tools-0.4.1.tar.gz
Algorithm Hash digest
SHA256 6896904df9cc68d5be9a7892a16af9699eb2b9db1cc8c5b7d43b59f8e23d2e79
MD5 ea61e2e4b0eb635d9181c13c2beb261c
BLAKE2b-256 851cc5536e26130c59a79d9e776059f072f8c83c8ed668d0e734dda375472498

See more details on using hashes here.

File details

Details for the file remarkable_tools-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: remarkable_tools-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for remarkable_tools-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d7ad14c7eca7b7bd7c296e8b10eaeaecf667e37e3014ba26146602e536f71a17
MD5 db94dfe8136d94c1444a08e827bd86c7
BLAKE2b-256 cd057056abbfb06a1adcefa890bafdb3391a3bcae8066851142f314e6b2f8a4e

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