No project description provided
Project description
RMfuse
RMfuse provides access to your reMarkable Cloud files in the form of a FUSE filesystem. These files are exposed either in their original format, or as PDF files that contain your annotations. This lets you manage files in the reMarkable Cloud using the same tools you use on your local system.
Installation
RMfuse requires Python 3.7 or later. It also requires the FUSE3 library.
This should be available in most Linuxes (fuse3
and libfuse3-3
in
Debian-based distributions) and BSDs. RMfuse may work with
macFuse, but that is untested. Windows
users may try WinFuse, also
untested. Installation of RMfuse and its dependencies will likely
require the FUSE3 headers and a C build system (libfuse3-dev
and
build-essential
in Debian).
RMfuse can be installed with pip:
pip install rmfuse
Alternatively, you may clone this repository. Poetry is used for development, so once that is installed you can run
poetry install
Usage
RMfuse installs the script rmfuse
. The script takes a single argument,
the path at which the filesystem should be mounted. This must be an
existing directory. Any files within that directory will be hidden as
long as RMfuse is mounted.
mkdir ~/remarkable
rmfuse ~/remarkable
(If you installed with Poetry, you may need to run poetry run rmfuse
.)
The first time RMfuse is run, it will need a one-time code to get access to your reMarkable Cloud account. You will be prompted to get that code from https://my.remarkable.com/connect/desktop, which may require logging in to your reMarkable account. RMfuse uses that code to obtain tokens which it uses in the future to authenticate itself.
To unmount and halt RMfuse, use the fusermount
command:
fusermount -u ~/remarkable
Modes
RMfuse offers several modes to display your reMarkable Cloud files. You
can choose the mode with the -m
option.
annot
: Displays all files in PDF format, with your annotations added.
This is the default mode.
orig
: Displays the original file for ebooks and PDF files. Notebooks
are rendered as PDF files, as in the annot
mode.
raw
: Displays all files as ZIP files, reflecting the underlying format
used by the reMarkable Cloud. This may be useful when working with other
tools that expect files in this form.
meta
: Displays metadata about the files in JSON format. Only useful for
debugging.
RMfuse provides a special file named .mode
in root directory. When read,
this file gives the current mode. Writing a valid mode to this file will
switch the mode RMfuse is in. Additionally, writing refresh
to this file
will cause RMfuse to refresh its information from the reMarkable Cloud.
(By default, this happens every five minutes.)
~/remarkable $ cat .mode
annot
~/remarkable $ ls
book.pdf document.pdf notebook.pdf
~/remarkable $ echo orig > .mode
~/remarkable $ ls
book.epub document.pdf notebook.pdf
Capabilities
RMfuse allows reading of all files in the reMarkable Cloud. Since reading
the file requires several HTTP requests, as well as local processing, reads
make take some time. Running RMfuse in verbose mode (-v
or -vv
) will
display information about the actions underway. The most recent file
accessed is cached, to improve performance. More sophisticated caching
is planned for the future.
RMfuse does its best to provide accurate metadata for the files. However,
the reMarkable Cloud provides only modification dates, so that is reported
for creation and access dates as well. File sizes in annot
mode are
only estimates until the file is read for the first time. This metadata
is cached locally to improve responsiveness in the future.
Files can be renamed and moved within the RMfuse filesystem. These changes will be propagated to the reMarkable Cloud. Changes to the file extension will be ignored.
Deleting files from a RMfuse filesystem moves them into the reMarkable
Cloud's trash area. These files are accessible in the .trash
hidden
directory in the root of the file system. Deleting files within the
.trash
folder removes them from the reMarkable Cloud. (N.B. It is
not known if this deletes the files from the cloud, or just hides them
from clients.)
EPUB and PDF files may be copied into the filesystem, and new directories
can be created. These changes are uploaded to the reMarkable Cloud.
Copying other types of files into the RMfuse filesystem will fail silently
(unfortunately). File extensions are ignored by RMfuse, and thus may
change when files are uploaded. For instance, if book.epub
is uploaded
and RMFuse is in annot
mode, it will show up in the filesystem as
book.pdf
.
Existing files cannot be edited; they appear in read-only mode. If you
want to edit the contents of a file, you will need to copy it to your
local filesystem, edit it, and then copy it back to the RMfuse filesystem.
This will cause annotations to be lost (in orig
mode) or flattened into
the document itself (in annot
mode).
Known Limitations
-
The file size for annotated files is just an estimate before the file is first read. This can confuse some tools which use the file size to determine how much to read. After reading the file once, the file size will be correctly reported going forward; rerunning these tools a second time is usually enough to get them working.
-
To try to address this, RMfuse throws an error when a program tries to read past the end of a file. This can cause "No data available" errors to be reported. These are harmless.
-
RMfuse sometimes fails to authenticate with the reMarkable Cloud servers when starting up. Several failures are possible before success is achieved. It is currently unknown what triggers this problem. RMfuse does not handle this gracefully at present.
-
Adding a file other than an EPUB or PDF silently fails. RMfuse does throw an error when it has been given an invalid file, but this comes too late for FUSE to pass the error back to the caller. RMfuse may be able to throw an error earlier, based on the first bytes it receives; this will be investigated in the future.
-
RMfuse caches the most-recently accessed file in memory. This is bad for large files (too much memory used) and small files (we could cache several files). A more sophisticated caching system is planned.
Libraries
RMfuse is powered by rmcl, for accessing the reMarkable Cloud, and by rmrl, for rendering annoated documents. The early development of RMfuse can be found in the rmcl repository
Trademarks
reMarkable(R) is a registered trademark of reMarkable AS. rmrl is not affiliated with, or endorsed by, reMarkable AS. The use of "reMarkable" in this work refers to the company’s e-paper tablet product(s).
Copyright
Copyright 2020-2021 Robert Schroll
RMfuse is released under the MIT license. See LICENSE.txt for details.
Disclaimer of Warranty
RMfuse is provided without any warranty. Users accept the risk of damages, including the loss of data on their local system, on their reMarkable device, and in the reMarkable Cloud.
If it breaks, you get to keep both halves.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file rmfuse-0.1.1.tar.gz
.
File metadata
- Download URL: rmfuse-0.1.1.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.7.3 Linux/5.4.51-v7+
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 358454373e505a56b8645b7f15d42f0ec118ccf28d3e3e8f4530210ddb67cf22 |
|
MD5 | 99fc7c575f224a7ebcb5a32c6a883f69 |
|
BLAKE2b-256 | 831dd68c441f2ac40caa614de38b6e5c04f81fa1bdd5eca2963da9e30e1d6ee1 |
File details
Details for the file rmfuse-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: rmfuse-0.1.1-py3-none-any.whl
- Upload date:
- Size: 8.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.7.3 Linux/5.4.51-v7+
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8e9ba01708749fd479fba97093ebc4b07f310440d7ba075a1fad755d52effb8 |
|
MD5 | 74d533f8f3f44ade5583233cb31cc456 |
|
BLAKE2b-256 | 27e38872eca815750b853c8dcd92e291c6d572d17da58c28be511421b4121243 |