Not Another Rust Clipboard (Manager) For Omarchy / Wayland Linux
Find a file
2026-09-26 10:17:53 -05:00
docs Add technical specification and traceability 2026-09-26 10:17:53 -05:00
README.md Initial NARCFOWL architecture and requirements 2026-09-25 17:23:18 -05:00

NARCFOWL

Not Another Rust Clipboard (Manager) For Omarchy / Wayland Linux

Technical name: narcfowl. Native plugin identity: narcfowl.clipboard.

A planned Rust clipboard backend with a native Omarchy/Quickshell interface, forked from Alan's MIT clipboard-history plugin. Quick retrieval, durable snippets, explicit power actions, and optional trusted-device synchronization share one data model and one capture owner.

Current state: architecture/requirements bundle only. No application binary, source implementation, service installation, or live clipboard change is included. All implementation acceptance requirements remain unimplemented/unverified by this documentation task. The product name and Rust/native-fork direction were explicitly chosen by the user; detailed defaults in this bundle are the proposed engineering baseline.

Read in this order

Document Purpose
ADR 0001 Decisions so far, alternatives, provenance/licences, boundaries, consequences, and integration proof gates
Observable behaviors B-001–B-036 contracts and concrete acceptance scenarios, including errors and cancellation
Technical specification Rust/QML responsibilities, store/search/IPC, platform adapters, action/workflow contracts, configuration, and resource limits
Security, backup, and sync specification Threat model, key custody, encrypted archives, pairing/transports, causal conflicts, deletion, revocation, and recovery
Complete implementation plan M0–M9 dependency order, work packages, real smoke-run exit gates, risks and complete-release definition
Requirements matrix R-001–R-036 mapped to behaviors, milestones, verification methods and explicit NOT RUN status

Read the ADR and behaviors before implementing the spec. Decisions constrain the design; observable behaviors define acceptance; the spec defines interfaces and mechanisms; the plan and matrix organize delivery. If these disagree, fix the documents explicitly before implementing an accidental interpretation. No downstream document silently overrides a privacy, licence, or data-preservation requirement.

Agreed direction

  • Real Rust backend: capture, MIME handling, SQLite/FTS5, search, retention, snippets, transformations, jobs, queues, migration, backup and sync.
  • Native QML frontend: keep Omarchy theme/shortcut/plugin integration and useful MIT-fork UI, rather than introduce a webview or a different GUI toolkit.
  • One model: quick picker and expanded library use the same backend; saved material survives history cleanup.
  • Local first: no account, activation, quotas, telemetry, mandatory network, or unsolicited link/AI requests.
  • Best workflows, not a source-code mashup: borrow product ideas from TieZ/PasteBar/Qopy; reuse MIT components with notices; do not import differently licensed code under an MIT label.
  • Wayland-capability-aware: Omarchy/Hyprland is the full integration target; other supported Wayland data-control environments get backend/CLI capabilities, not an untested universal GUI or paste promise.

Proposed runtime shape

flowchart TD
    UI[Native Omarchy QML picker and library] --> Bridge[narcfowl bridge over private IPC]
    CLI[narcfowl CLI] --> Core[Rust daemon: one policy and state owner]
    Bridge --> Core
    Core --> Wayland[Wayland capture and clipboard serving]
    Core --> Focus[Qualified compositor focus and paste adapter]
    Core --> Store[SQLite FTS5 and immutable payload blobs]
    Core --> Jobs[Bounded local OCR preview editor and action jobs]
    Core --> Transfer[Opt-in paired peers and encrypted WebDAV]

The normal local database is plaintext with private file permissions. It is not a password vault, and masking is not encryption. Encrypted backups and end-to-end-encrypted remote objects have separate, explicit key/recovery contracts. Same-user compromised processes and root are outside the local confidentiality boundary.

Complete means complete

The final implementation includes the picker, library/boards/tags, templates, queues, transformations, editors, OCR/QR, screenshot/color integration, explicit form/HTTP/AI actions, migration, encrypted backups, paired LAN/VPN sharing, encrypted WebDAV sync, packaging, recovery and qualified native UI behavior.

Features labelled opt-in are required to be implemented but disabled until enabled; they are not deferred features. Milestones are dependencies and proof gates, not an MVP/reduced-scope release agreement. A cleanly compiling backend or mock-driven interface is not sufficient.

The implementation plan protects the user's active clipboard and original history: all qualification uses synthetic fixtures and isolated profiles plus a dedicated supported desktop session for actual clipboard/focus/UI proof.

Evidence basis and limits

The initial research used source/document inspection for TieZ, PasteBar, Qopy and the native alternatives, plus the earlier isolated Clipsy runtime investigation. The observed native fork starting revision is 32792dd4f4ee696268b97e78e00e550256612471; see the ADR for primary sources and licensing boundaries. Source availability, screenshots, roadmap checkboxes and marketplace approval are not proof that an application or this fork meets these requirements.

No implementation tests, performance benchmarks, or application security claims are marked passed in this bundle. The only validation appropriate to this delivery is document coverage, consistency and reference checking; real application evidence is required during implementation.