Clipboard
Everything you copied, with images; Enter pastes it back
palupdated 2026-10-27ProductivityComes with pal1 deep link
Comes with pal, so a new install already has it; the button finds it in pal again if you removed it. This page can't see what your pal has installed.






What it does
Everything you copied, text, images and files, searchable and a keystroke from being pasted back into the app in front. Pin what you reuse; edit, name or save an entry, or copy the text out of an image.
- Text, images and files you copied, searched as you type, with a preview beside the list
- Pinned entries stay at the top and never expire
- Filters for text, images, files, links and colours (drawn as swatches)
enterpastes into the app in front,cmd+shift+vas plain text,cmd+shift+tcopies the text in an image- Edit, name, save as a file or snippet, or show as a QR code
- Password manager copies and excluded apps are never recorded
Palettes 2
-
Clipboard
rowsinputWhat is on the clipboard now, as the things it could be: a web address (open, private window, markdown link, QR code), a colour (the picker, every notation), paths (open, reveal, open with), an email, a phone number, JSON (pretty, minified), an expression or a number (the answer, other bases), a timestamp or ISO date (local and relative), hex or base64 that decodes to text, a tracking number (the carrier), a git sha or owner/repo#12 (GitHub), an image (save, copy as file, OCR), and the text itself (counts, case and slug transforms, paste as plain, save as snippet). The root's Clipboard section before you type; Hide keeps it away until the next copy. Only what history recorded is read: a concealed copy or one from an excluded app never shows.
- ↵What the row is for: open, call, paste as plain, copy the answer
- ⌘⇧HHide the section until the next copy
- ⌘⇧OOpen the address in a private window
- ⌘⇧MCopy as a Markdown link, or minified JSON
- ⌘SSave the text as a snippet
-
Clipboard History
historyinputEvery copy, pinned ones first, then newest.
- ↵Paste into the app in front
- ⌘↵Copy back to the clipboard
- ⌘OOpen the link
- ⌘⇧VPaste as plain text
- ⌘⇧CCopy an image as a file
- ⌘⇧TCopy the text in an image (OCR)
- ⌘EEdit a text entry; the edited text is copied
- ⌘PPin or unpin
- ⌘⇧RName or rename the entry to what is typed in the bar
- ⌘SSave as a file
- ⌘⇧SSave a text entry as a snippet
- ⌘⇧KShow a text entry as a QR code
- ⌘DDelete the entry
- ⌘⇧DClear history
- ⇥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 text⌘⇧V
- Copy image fileThe PNG the recorder keeps, as a file.⌘⇧C
- Copy text from imageOCR over the image (Vision on macOS, tesseract on Linux); the text goes on the clipboard.⌘⇧T
- Edit…On a text entry: a textarea with the text; the submit copies the edited text (a box pastes it too), so it is the newest entry.⌘E
- Pin / UnpinPinned entries sort first and never expire.⌘P
- Name / RenameThe name typed in the bar titles the row and is searched like the text; blank clears it.⌘⇧R
- Save as file…A folder (the Desktop) and a name from the entry: the text, the image's PNG, or the file list as paths. An existing name is refused.⌘S
- Save as snippetOn a text entry: the Snippets form, pre-filled.⌘⇧S
- Show as QR codeOn a text entry up to 2000 characters: the code large in a level.⌘⇧K
- DeleteAsks first.⌘D
- Delete all unpinnedAsks first; pinned entries stay.
- Clear historyAsks first; pinned entries included.⌘⇧D
Links 1
Clipboard answers these pal:// routes from a web page, a script or a keybind; pal call is the same route from a terminal. A link from a page asks first unless you trust the extension. How links work.
-
Put a history entry back on the clipboard
copypal call clipboard/copyindexWhich entry, newest first: 0 is the newest (the default)
Settings
Extension, [extensions.clipboard]
ocr_concealedprimary_actionWhat Enter does on an entry. One of paste, copy.
Clipboard, [palettes.rows]
fetch_titlesshortenerA URL with {url} in it whose response body is the short link, for the Shorten action (https://is.gd/create.php?format=simple&url={url}). Empty: no Shorten action.
private_browserWhich browser opens a private window: Google Chrome, Brave Browser, Microsoft Edge, Chromium, Vivaldi or Firefox. Empty: the first of those that is installed.
Defaults shown. Change them in pal's settings window or in the config file.
The README
Everything Clipboard does, key by key, from the extension's own README.md
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 app it was copied
from over its name, the kind (text, link, color, image, files) and pinned
as chips, its numbers large (a text's characters and lines, an image's
pixels and size, how many files), then the full text (fenced), the image
or the file list, and when it was copied. 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 (an
image without one: its size) and the time are accessories; a pinned entry
sits under Pinned. An entry you have named (cmd+shift+r) is titled by its
name from then on, with the text's preview as the subtitle, and a search
finds it by the name as well as by the text.
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+shift+t |
Copy text from image (OCR), on an image |
cmd+e |
Edit, on a text entry: the text in a textarea; the submit copies the edited text, so it is the newest entry (the original stays); a box pastes it as well |
cmd+p |
Pin / Unpin: pinned entries sort first and never expire |
cmd+shift+r |
Name / Rename: argument name typed in the bar (prefilled with the name the row has); the name titles the row and is searched; blank clears it; a pick without the field asks in a form |
cmd+s |
Save as file: a folder (the Desktop by default) and a name from the entry; the text as it is, an image's PNG copied, a file list as its paths one per line; an existing name is refused |
cmd+shift+s |
Save as snippet, on a text entry: the Snippets form, pre-filled with the text |
cmd+shift+k |
Show as QR code, on a text entry up to 2000 characters: the code large in a level, the text under it |
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 |
Marked entries (cmd-click, shift-click, shift+↓): Paste, Copy and
Paste as plain text join their text one per line, Open link opens every
link, Copy image file copies every image, Pin, Unpin and Delete go over
each. Edit, Name, Save, Snippet, QR and Copy text from image stay one
entry's.
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 the Clipboard history feature's
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 the
feature's max_age_days are deleted, then the unpinned tail past its
max_entries.
Pinned entries never expire. A search lists at most 200 rows of what is
left.
Settings, [extensions.clipboard]:
| key | type | default | what |
|---|---|---|---|
primary_action |
paste, copy |
"paste" |
What enter does on an entry. |
What is recorded and kept (exclude_apps, max_entries,
max_age_days) is the Clipboard history feature's, [features.clipboard]
(Features): the recorder is
built into pal, and this extension is its palettes.
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 in place: Edit copies the edited text as a new entry, the original stays as it was recorded.
- Share through the system share sheet: nothing reaches
NSSharingServicefrom the host; Save as file and the file managers' own sharing stand in. - Know the source app on Linux: neither X11 nor the Wayland data-control
protocol says who owns the selection, so
exclude_appshas 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).