btw i use nix
1#!/usr/bin/env sh
2# adapted from https://github.com/adaerr/reMarkableScripts/blob/master/pdf2remarkable.sh
3
4XOCHITL_DIR=${XOCHITL_DIR:-.local/share/remarkable/xochitl/}
5
6if [ $# -lt 1 ]; then
7 echo "usage: $(basename $0) [ -r ] path-to-file [path-to-file]..."
8 exit 1
9fi
10
11RESTART_XOCHITL_DEFAULT=${RESTART_XOCHITL_DEFAULT:-0}
12RESTART_XOCHITL=${RESTART_XOCHITL_DEFAULT}
13if [ "$1" = "-r" ] ; then
14 shift
15 if [ $RESTART_XOCHITL_DEFAULT -eq 0 ] ; then
16 echo Switching
17 RESTART_XOCHITL=1
18 else
19 RESTART_XOCHITL=0
20 fi
21fi
22
23# Create directory where we prepare the files as the reMarkable expects them
24tmpdir=$(mktemp -d)
25
26# Loop over the command line arguments,
27# which we expect are paths to the files to be transferred
28for filename in "$@" ; do
29
30 # reMarkable documents appear to be identified by universally unique IDs (UUID),
31 # so we generate one for the document at hand
32 uuid=$(uuidgen | tr '[:upper:]' '[:lower:]')
33
34 extension="${filename##*.}"
35
36 # Copy the file itself
37 cp -- "$filename" "${tmpdir}/${uuid}.${extension}"
38
39 # Add metadata
40 # The lastModified item appears to contain the date in milliseconds since Epoch
41 cat <<EOF >>${tmpdir}/${uuid}.metadata
42{
43 "deleted": false,
44 "lastModified": "$(date +%s)000",
45 "metadatamodified": false,
46 "modified": false,
47 "parent": "",
48 "pinned": false,
49 "synced": false,
50 "type": "DocumentType",
51 "version": 1,
52 "visibleName": "$(basename -- "$filename" ".$extension")"
53}
54EOF
55
56 if [ "$extension" = "pdf" ]; then
57 # Add content information
58 cat <<EOF >${tmpdir}/${uuid}.content
59{
60 "extraMetadata": {
61 },
62 "fileType": "pdf",
63 "fontName": "",
64 "lastOpenedPage": 0,
65 "lineHeight": -1,
66 "margins": 100,
67 "pageCount": 1,
68 "textScale": 1,
69 "transform": {
70 "m11": 1,
71 "m12": 1,
72 "m13": 1,
73 "m21": 1,
74 "m22": 1,
75 "m23": 1,
76 "m31": 1,
77 "m32": 1,
78 "m33": 1
79 }
80}
81EOF
82
83 # Add cache directory
84 mkdir ${tmpdir}/${uuid}.cache
85
86 # Add highlights directory
87 mkdir ${tmpdir}/${uuid}.highlights
88
89 # Add thumbnails directory
90 mkdir ${tmpdir}/${uuid}.thumbnails
91
92 elif [ "$extension" = "epub" ]; then
93
94 # Add content information
95 cat <<EOF >${tmpdir}/${uuid}.content
96{
97 "fileType": "epub"
98}
99EOF
100
101 else
102 echo "Unknown extension: $extension, skipping $filename"
103 rm -rf ${tmpdir}/*
104 continue
105 fi
106
107 # Transfer files
108 echo "Transferring $filename as $uuid"
109 scp -r ${tmpdir}/* "${XOCHITL_DIR}"
110 rm -rf ${tmpdir}/*
111done
112
113rm -rf ${tmpdir}
114
115if [ $RESTART_XOCHITL -eq 1 ] ; then
116 echo "Restarting Xochitl..."
117 systemctl restart xochitl
118 echo "Done."
119fi