Thanks to visit codestin.com
Credit goes to danielstoiber.com

rePlace

rePlace

Started on 10/25/2023

Last updated on 05/07/2025

76 hours in total

A cross-platform app for customizing a reMarkable tablet's various state screens.

Details

Links

What is it?

rePlace is a standalone application that lets you easily customize your reMarkable tablet’s state screens through an intuitive UI.

What are state screens? These are the images your device displays during various system states like when it’s sleeping, powering off, rebooting, overheating or running out of battery.

Depending on your reMarkable’s firmware version, there are typically 7–8 of these screens you can modify, including:

  • Suspended / Hibernate (sleep mode)
  • Powered Off
  • Out of Battery
  • Overheating
  • Rebooting
  • Starting

The Factory Reset screen is not customizable as it only appears during a reset, which would erase any custom screens you’ve added anyway.

Motivation

I created rePlace because I wanted an easy way to customize my reMarkable tablet’s screens. At first, I just uploaded custom files directly, but they kept getting wiped every time the device updated. I built this tool to make the process simple, reliable, and safe — not just for myself, but for my mom and anyone else who wants to personalize their device without the risk of breaking something.

How does it work?

TL;DR

Simply put, using the connection details you provide, the application will take your new screen and upload it to your device's file system, replacing the existing file.

Technical Details

Built on Electron
rePlace leverages Electron, the same framework behind apps like Slack and Discord, to deliver a true cross-platform desktop application. By bundling Chromium and Node.js together, Electron lets us maintain a single JavaScript/HTML/CSS codebase that runs on Windows, macOS, and Linux without the need of native development.

Security Boundary: Context Isolation
To keep powerful device APIs safe from malicious web content, Electron enforces Context Isolation. This separation prevents UI code (render process) from directly accessing Node.js or OS-level calls.

Bridging the Gap: IPC
Instead, Electron provides Inter-Process Communication (IPC), a secure channel between the UI and background (main) processes. UI events trigger IPC messages, which in turn invoke privileged background scripts.

Uploading a Screen

  1. Establish SSH Connection
    • When you add or select a device, a background script receives your device details and opens an SSH session.
  2. Send the Image
    • Upon uploading, the UI sends the image as a Data URL plus the target filename via IPC.
    • The background script decodes this Data URL and streams the resulting image over SSH, replacing the existing file on your reMarkable.
  3. Live Device Monitoring
    • While you’re using the app, the UI regularly pings each device in the background. This keeps your connection statuses up to date on the main screen and alerts you if a device drops offline.

🏛️ History

v0 (Nov 2022 - Jan 2024)

Version 0 was a basic Bash script using scp for file transfers. Users had to input device details into a .env file, requiring command-line knowledge and making the setup unclear. As a result, this version failed to simplify the process enough to be practical.

v1 (Jan 2024 - Nov 2024)

Version 1 built an interactive UI around the command from v0. It was written in Next.js and required the user to run the project on their machine for the server to be able to connect to the device. This meant that it couldn’t be hosted, and also provided technical knowledge and an established development environment.

v2 (Nov 2025 - Present)

Version 2 is designed to be a standalone, cross-platform application that seamlessly manages screens for multiple reMarkable devices over WiFi or USB. Users can either upload their own screens or create them using the integrated screen creation tool. This application strives to address the shortcomings of versions 0 and 1 by making it user-friendly.

Note: reMarkable Pro devices require an extra step to use the application. I am working on automating this extra step. The issue is that I don't physically have a reMarkable Pro, so I can't exactly test it. If you have a reMarkable Pro and are interested in helping me out, please get in touch: [email protected].

reDockable

While developing version 2 of rePlace I identified a need for a reMarkable sandbox. Originally I was planning on adding a demo mode to the app which would load dummy data. Writing and maintaining that would have been more effort than is worth it. So instead I thought about how I could best emulate a reMarkable device with ssh and all. It was very apparent that the devices are Linux-based, so my first thought was to copy the files from my reMarkable to a Raspberry Pi. This would absolutely work, but it requires an additional piece of hardware.

Instead I looked into how difficult it would be to create a Docker container that I can ssh into and has an identical file structure. Turns out it is remarkably easy to do. Using an existing Docker ssh example as I guide, I wrote a couple scripts that installs ssh, enables root access, and copies the contents of the repository's remarkable directory into a new directory in the Docker image to match the file structure of a reMarkable tablet. This super simple approach enables me to create and delete reMarkable sandboxes with ease to protect from bricking my own device if something goes wrong during development.

If you would like to use this Docker container to setup your own reMarkable sandbox for development you can learn more about it on the reDockable repository.

Images

Swipe for more...

© 2026 Daniel Stoiber

Built with ❤️ and purpose.