Markdown writing for the pi suite, built with GPUI Kit — a focused writing surface for Raspberry Pi 5-class hardware (and happy on any Linux desktop). Syntax-colored Markdown, draft recovery, and an editor that stays out of the way.
- Writing surface: Markdown editor with syntax coloring, smart
enter(continues lists and quotes, stays plain inside code fences), word count in the status bar, andCtrl+B/Ctrl+I/Ctrl+Kto wrap the selection in bold, italic, or link Markdown (a URL on the clipboard fills the link). - Files: open and save Markdown through the desktop file picker, save as,
and
Ctrl+Nfor a second window. Registered as the system handler fortext/markdown. - Find and replace: incremental search with match counting, find-and-replace with replace-all, case-insensitive by default.
- Safety net: unsaved drafts are recovered after an abnormal exit; open files are watched and a prompt appears before an external change (or a delete) can replace local work; saves are atomic.
- Printing:
Ctrl+Psends the document to CUPS (lp), or opens a preview file when no printer is configured. - Aesthetic: keyboard-first, follows the desktop dark/light mode and text scale, and live re-tints from the Omarchy theme palette.
User-local install from a tagged release (no root, Ed25519-verified, fail-closed):
curl -fsSL https://raw.githubusercontent.com/raythurman2386/piwrite/main/scripts/netinstall.sh | bashOr build and install from source:
cargo build --release
./scripts/install.shUninstall with ./scripts/uninstall.sh. The netinstaller accepts a --prefix
directory, an optional version argument, and --force; the source install
honors PREFIX=DIR.
Tagged v* releases also build x86_64 + aarch64 tarballs on GitHub Actions
(glibc 2.39+ — e.g. Raspberry Pi OS / Debian 13). Unpack the one for your
architecture and run ./install.sh inside.
Releases are authenticated with Ed25519 signatures over checksums.txt; the
public key is committed as piwrite-signing-key.pub and pinned in the
installer, which refuses anything it cannot verify.
| Keys | Action |
|---|---|
Ctrl+S / Ctrl+Shift+S |
Save · save as |
Ctrl+O / Ctrl+N |
Open · new window |
Ctrl+F |
Find (Enter / Ctrl+G next, Shift+Enter previous) |
Ctrl+H |
Find and replace |
Ctrl+B / Ctrl+I / Ctrl+K |
Bold · italic · link |
Ctrl+P |
Print (CUPS lp, or a preview file) |
Ctrl+Z / Ctrl+Y |
Undo · redo (editor defaults) |
F11 / Super+F |
Fullscreen |
Ctrl+Shift+/ |
Shortcut reference · Ctrl+Q quit |
- Settings live in
~/.config/piwrite/settings.json; recovery drafts in~/.local/share/piwrite/. Recovery slots are claimed by a lock-file scheme, so a crashed session's draft is picked up on the next start. - Colors follow the desktop theme —
~/.local/state/omarchy/current/theme/colors.tomlwhen present — re-tinting live on theme switches; text follows the desktop text scale (gsettingstext-scaling-factor). The default scale of1.0is the size the layout is designed around.
The iA Writer Mono font is bundled under the SIL Open Font License 1.1; see
fonts/OFL.txt. The font is copyright Information Architects Inc. and based
on IBM Plex, copyright IBM Corp.
cargo fmt --check # formatting
cargo clippy --all-targets -- -D warnings
cargo test # 18 tests
cargo run --release # write
cargo run --release -- path/to/notes.mdCI runs fmt, clippy, and tests on every push; tagged v* releases build
x86_64 + aarch64 tarballs (glibc 2.39+) with an install smoke test, and the
netinstall integrity harness can be run locally with
bash scripts/test-netinstall.sh.
MIT — see LICENSE. Bundled fonts: SIL OFL 1.1 (see above).