Clipboard

Everything you copied, searchable, with images; Enter pastes it back.

palv0.1.0Productivitybundled

Install in pal

Ships inside pal. Installing puts an editable copy ahead of the bundled one.

Clipboard: The history with the pane open: pinned first, then newest, the source app and the time on the right
The history with the pane open: pinned first, then newest, the source app and the time on the right
Clipboard: An image entry: its size and dimensions, the picture in the pane
An image entry: its size and dimensions, the picture in the pane
Clipboard: The Colors filter: a copied colour is drawn as its own swatch
The Colors filter: a copied colour is drawn as its own swatch
Clipboard: Paste, Copy, Pin, Delete, Clear history
Paste, Copy, Pin, Delete, Clear history
1 of 4

What it does

Clipboard History

What you copied, searchable, with images. Text, images and file lists are recorded by a watcher that runs while pal runs; the search is SQLite full-text search over the text, on every keystroke inside the palette (an input palette, so the entries are never at the root). Pinned entries sit in a Pinned section at the top, the rest follow newest first.

The palette opens with the detail pane showing: the full text (fenced), the image, or the file list, with kind, size, source app and time as metadata. A row that is a single url gets the site's favicon and an Open link action; a row that is one colour (#hex, rgb()) has the colour itself as its icon. The source app and the time are accessories, an image row shows its size next to its dimensions, and a pinned entry carries a pinned tag.

The filter dropdown (Tab cycles it) narrows by kind: All, Text, Images, Files, Links (text that is one url) and Colors.

Keyboard

keys action
enter Paste: hides the panel and pastes the entry into the app that was in front
cmd+enter Copy: puts the entry back on the clipboard
cmd+o Open link, on an entry that is one url
cmd+shift+v Paste as plain text, on a text entry
cmd+shift+c Copy image file, on an image: the PNG the recorder keeps, as a file
cmd+p Pin / Unpin: pinned entries sort first and never expire
cmd+d Delete the entry; asks first
(action panel) Delete all unpinned: every unpinned entry, one by one; asks first
cmd+shift+d Clear history: every entry, pinned ones included; asks first
tab Cycle the kind filter

primary_action = "copy" swaps the first two, so enter copies and cmd+enter pastes.

Setup

Nothing to install; the recorder is part of pal. Paste needs the Accessibility permission on macOS: the paste is a synthesised Cmd+V, which the system only delivers from a process on the Accessibility list. Without it pal shows the system prompt once per run and a toast, "Paste needs Accessibility. Grant pal in System Settings > Privacy & Security > Accessibility", instead of half-doing it. On Linux the paste is Ctrl+V through wtype, else ydotool (which needs ydotoold running); with neither, paste fails and the toast says so.

What is never recorded: anything a password manager marks as concealed or transient (the org.nspasteboard convention), copies over 10 MB, and copies made while an app in exclude_apps is in front. Copying something already in history bumps it to the top instead of adding a duplicate.

Retention runs after every copy: unpinned entries older than max_age_days are deleted, then the unpinned tail past max_entries. Pinned entries never expire. A search lists at most 200 rows of what is left.

Settings, [extensions.clipboard]:

key type default what
exclude_apps list ["com.apple.keychainaccess", "com.apple.Passwords"] Bundle ids (com.1password.1password) or readable names (Slack). The recorder skips copies made while one is in front, and entries already recorded from one are not listed. [] excludes nothing.
max_entries number, 1 to 100000 1000 How many unpinned entries history keeps.
max_age_days number, 0 to 3650 30 Unpinned entries older than this are deleted. 0 is no age limit.
primary_action paste, copy "paste" What enter does on an entry.

The recorder reads the three retention keys once, when pal starts, so a change to them takes effect at the next launch; primary_action applies live.

What it does not do

  • Record while pal is not running: there is no background agent.
  • Sync between machines, or keep entries past the retention limits unless they are pinned.
  • Edit an entry's text: paste it and edit there.
  • Know the source app on Linux: neither X11 nor the Wayland data-control protocol says who owns the selection, so exclude_apps has no effect there and the source accessory is absent.

Platforms

macOS and Linux. Paste needs Accessibility on macOS and wtype or ydotool on Linux; Copy file (cmd+shift+c) writes file URLs on macOS and text/uri-list on Linux (X11, or Wayland with the wlr data-control protocol).

Palettes 1

  • Historyhistoryinput

    Every copy, pinned ones first, then newest.

    • Paste into the app in front
    • Copy back to the clipboard
    • PPin
    • Text, Images, Files, Links, Colors

Actions

  • PasteHides the panel and pastes the entry into the app that was in front.
  • CopyPuts the entry back on the clipboard.
  • Open linkOn an entry that is one url.O
  • Paste as plain textV
  • Copy image fileThe PNG the recorder keeps, as a file.C
  • Pin / UnpinPinned entries sort first and never expire.P
  • DeleteAsks first.D
  • Delete all unpinnedAsks first; pinned entries stay.
  • Clear historyAsks first; pinned entries included.D

Settings

Extension, [extensions.clipboard]

exclude_apps
com.apple.keychainaccesscom.apple.Passwords list

Bundle ids (com.1password.1password) or names; copies made in these are not recorded, and none already recorded is listed.

max_entries
1000entries number

How many unpinned entries history keeps; older ones past this are deleted on the next copy.

max_age_days
30days number

Unpinned entries older than this are deleted on the next copy. 0 keeps them until the entry limit.

primary_action
Paste into the app in front select

What Enter does on an entry. One of paste, copy.

Defaults shown. Change them in pal's settings window or in the config file.