QR decode support (zbarimg) with searchable payload + preview panel; restructure repo root as installable omarchy plugin; plain-text safety for QR payloads
This commit is contained in:
@@ -10,6 +10,9 @@ rides on the system theme, fonts, and layer-shell infrastructure.
|
||||
type, byte size, source app (via `hyprctl`), timestamp, and image dimensions.
|
||||
Text, images, and `file://` URI lists (file-manager copies) are supported;
|
||||
password-manager clips and binary payloads are skipped.
|
||||
- **QR codes** — copied QR images are decoded with `zbarimg`; the payload shows
|
||||
in the list title, the preview pane (copy-selectable), and a metadata chip,
|
||||
and is fuzzy-searchable like any text clip.
|
||||
- **Fuzzy search over everything** — fzf-style scoring over content, source
|
||||
app, and type, plus recency, pin, and usage boosts. Query tokens:
|
||||
- `type:image|link|text|files|code|json|color|email|html|number` (prefix match)
|
||||
@@ -46,22 +49,34 @@ rides on the system theme, fonts, and layer-shell infrastructure.
|
||||
./install.sh
|
||||
```
|
||||
|
||||
This symlinks `plugin/` into `~/.config/omarchy/plugins/tank.clipboard`,
|
||||
rescans + enables the plugin (the built-in `omarchy.clipboard` is replaced —
|
||||
revert with `omarchy plugin disable tank.clipboard`), and rebinds
|
||||
`ALT+SHIFT+V` from vicinae to this picker (backing up `bindings.conf`).
|
||||
This symlinks the repo (the plugin root) into
|
||||
`~/.config/omarchy/plugins/tank.clipboard`, rescans + enables the plugin (the
|
||||
built-in `omarchy.clipboard` is replaced — revert with
|
||||
`omarchy plugin disable tank.clipboard`), and rebinds `ALT+SHIFT+V` from
|
||||
vicinae to this picker (backing up `bindings.conf`).
|
||||
|
||||
On other machines, install straight from git — no clone/step needed:
|
||||
|
||||
```bash
|
||||
omarchy plugin add <this-repo-git-url> --enable
|
||||
```
|
||||
|
||||
Note: the local dev symlink trips `omarchy plugin validate` (it refuses
|
||||
symlinked plugin folders); a git-cloned copy validates clean.
|
||||
|
||||
## Layout
|
||||
|
||||
The repo root *is* the plugin folder (so `omarchy plugin add <git-url>` works
|
||||
directly — it validates and clones a repo whose root holds `manifest.json`).
|
||||
|
||||
```
|
||||
plugin/
|
||||
├── manifest.json # plugin manifest (clonedFrom omarchy.clipboard)
|
||||
├── Clipboard.qml # picker overlay: search, chips, list, keys, capture watchers
|
||||
├── PreviewPane.qml # per-type preview + metadata chips
|
||||
├── Store.js # history model: dedup, pins, pruning, ids
|
||||
├── Fuzzy.js # query parser, fuzzy matcher, scoring, highlighting
|
||||
├── Classify.js # type detection, app names, formatting, color math
|
||||
├── capture.py # clipboard watcher → one JSON line per clip
|
||||
├── capture.py # clipboard watcher → one JSON line per clip (incl. QR decode)
|
||||
├── paste-entry.sh # copy + shift-insert paste into the focused window
|
||||
└── open-entry.sh # open with the right app
|
||||
|
||||
@@ -73,7 +88,7 @@ History is stored in `~/.local/state/omarchy/clipboard-history-rich.json`
|
||||
|
||||
## Development
|
||||
|
||||
- Run logic tests: `tests/run.sh` (45 tests).
|
||||
- Run logic tests: `tests/run.sh` (49 tests).
|
||||
- After editing files in the repo, reload with `omarchy-shell shell rescanPlugins`
|
||||
(the plugin dir is a symlink, so the shell's inotify does not watch repo edits).
|
||||
- Data lives in `~/.local/state/omarchy/`; the picker state is independent of
|
||||
|
||||
Reference in New Issue
Block a user