Terms
July 21, 2026 · View on GitHub
Short definitions for Writerdeck and its editor fork.
Product
- Writerdeck for reMarkable: A typewriter for reMarkable 1 with a Bluetooth or USB keyboard. Bluetooth pairs via the user's phone. USB connects with an OTG cable. Made primarily in Go (server), QML & C++ (editor), and HTML/CSS/JavaScript (phone page).
- Writerdeck-server: Always-on program on the tablet: files, sync, PIN, launching the editor. No screen of its own. Made primarily in Go. The phone page it serves is HTML, CSS, and JavaScript.
- Writerdeck (app): The full-screen editor you see. Built from our fork of Singleton’s keywriter: Writerdeck-keywriter. Made primarily in QML & C++.
- keywriter: Singleton’s original Qt Markdown notepad — the project that fork started from. Made primarily in QML & C++. Uses Qt’s TextEdit.
- Lobby: In-app home on the tablet — files, settings, sleep — not the stock reMarkable UI. Made primarily in QML.
- About: Lobby tab that shows one product version for server and editor together, and whether GitHub has a newer stamp. Why: decisions.md §38.
- VERSION: Repo-root date stamp (
YYYY-MM-DDor.N) kept byscripts/product-version.shon build/publish — not hand-edited for routine work. Baked into both binaries; About compares the tablet to this file on GitHubmain. - lobby-ui.json: On-tablet file (
/home/root/.Writerdeck/lobby-ui.json) for Lobby language, borders, colors, sizes, optional string overrides, and shortcut chords (Ctrl-letters, plusenter/hardware_home). Edit over SSH; no binary rebuild. Repo default:config/lobby-ui.json. Source of truth for Lobby chords. Label packs live beside it inlobby-ui-i18n/<lang>.json(en/no/es/de/fr). Keycap borders usebadgeBorderColor. Settings landscape scroll strip:settingsLandscapeScrollGutter. The phone page follows the samelanguage(daemon/phone-ui-i18n/,GET /api/phone-ui). Why: decisions.md §36. - Phone page: Browser UI on port 8000 — keyboard bridge with the gray Writerdeck mark, paste, sync token, and “Download here?” when Lobby offers a file. Not a notes browser. Labels follow Lobby language.
- qmap: Qt USB keyboard map (
.qmapunderkeymaps/and/home/root/keymaps/). Lobby → Keyboard picksus/no/es/de/fr; applies on the next editor launch. How: ../keymaps/README.md. - Document: A Markdown file you write for concentrated work — not a throwaway scrap. On disk under
Writerdeck-user-documents/. The Documents tab lists them. Code and APIs may still say “note”. - Document integrity: Your prose must survive as plain Markdown on disk.
Editor
- QML (the screen file): Screen language — layout and applying edits on screen (the main file is
main.qml). - C++ / EditHelper: Startup, display, socket keys, and the math behind shortcuts, wrap, and undo. Made primarily in C++.
- TextEdit (Qt’s on-screen text box): Fine for drawing; weak for “which wrapped row am I on?” Shipped with Qt (C++); not ours.
- Shortcut (chord): A key held with Ctrl, Alt, or Shift. Phone ⌘ is sent as Ctrl (decisions.md §3). Lobby action chords are usually Ctrl+letter;
lobby-ui.jsonalso allowsenterandhardware_home(physical middle button, not keyboard Home) (decisions.md §36–§37). - Visual line: Layout unit — one soft-wrapped row on screen. ⌘←/→ and Home/End go to its ends (Apple line ends; CodeMirror Home/End).
- Logical line: Meaning unit — text between newline characters. Jumping to its end on a wrapped paragraph is not “line end.”
- Paragraph: Meaning unit — Apple
\n-delimited segment, including empty lines. Option+Up/Down. - Layout vs meaning: Screen appearance vs Markdown structure (Finseth). Shortcuts and tests must say which; see scenario-catalog.md.
- Goal column: The horizontal spot Up/Down tries to keep across uneven lines.
- assemble-qml.sh: In the fork: builds committed
main.qmlfrom modular pieces. Run it after changing helpers or Lobby; CI does not stitch QML. Made primarily in shell. - uinput (fake keyboard device): Not used here — keys arrive on a unix socket instead. A Linux feature, not something we wrote.
Testing and ops
- Automated typing tests (
test-keyboard-harness.sh): Scripted typing on the real tablet. Reaching the editor using the WebSocket, the mechanism used for Bluetooth keyboard typing. Made primarily in Go (the scenarios) and shell (the wrapper). - Basic set / full set: Forty-two critical checks for “basic editing works”; the full harness list before calling typing work done (scenario-catalog.md).
- Edit-session check: Opens a note and checks the editor stays up — catches broken QML that crashes on launch. Made primarily in shell.
- Known-good commit: A Writerdeck-keywriter revision that last passed those typing tests. Everyday builds usually follow
master. - Deploy: Copy a new binary to the tablet and relaunch the editor. Restarting the server alone does not reload the editor. Done with shell scripts.
- OTA (over-the-air update): Tablet software update from reMarkable — may reset the SSH password and wipe our boot service. From reMarkable, not us.
- The original / shared history: Singleton’s remarkable-keywriter repo, and the shared git starting point that makes ordinary merges possible. Developers often nickname Singleton’s remote
upstream; it still means the original. Made primarily in QML & C++ (same as keywriter).