Preferences
General Settings
Everything in Preferences that is about this Mac rather than about a rule — launching, updating, the chords, what is kept, which apps are ignored, the sounds it makes, and moving your setup somewhere else.
Preferences opens with ⌘, — from the overlay, or from the menu bar icon's menu. Its panes are General, Actions, Triggers, Abbreviations, Shortcuts, Variables, Sounds, Advanced and Licence: Shortcuts after the panes that define what a chord can be pointed at, Sounds after those again, and Advanced near the end, being the one that lets something outside the app in. Each has an icon in the toolbar across the top of the window, and the pane you are in is the window's title.
This page is General, Shortcuts and Sounds. The rest have pages of their own: Actions, Triggers, Abbreviations, Variables, Advanced and Licence.
Launching and updating
Launch PasteDaemon at login is off until you switch it on. A clipboard history keeps nothing while it is not running, so it is worth having — but it is yours to ask for, and nothing turns it on for you.
macOS holds this rather than the app, so the same switch is in System Settings → General → Login Items and the pane reads the system each time it appears. Switching it on is a request macOS can refuse; if it does, you are shown the refusal as it was given. If macOS is holding the registration for approval — which is what happens when you have switched the app off under Login Items — the pane says so and links to that list.
Check for updates asks the moment you press it. Check for updates automatically does it at most once a day. The feed is fixed at https://pastedaemon.app/appcast.json and is not configurable: pointing a build at another feed is a way to be handed another app.
An update is offered in a window of its own — the app's icon, what is on offer against what you have, the release notes, and three answers: Install and Relaunch, Download… and Later. Closing the window is Later. Install does the whole thing in place, and is offered only when it would actually work: a feed with no checksum, a download pointing off-site, an app running from the read-only copy macOS makes of a quarantined bundle, or a copy in a folder this account cannot write, all leave the two-button dialog instead of a button that fails when pressed. Nothing is ever replaced without somebody clicking Install.
The notes cover every release between the one you are running and the one on offer, so an update that skips two of them explains both. They are shown the way they were written, bullets and all, and scroll in their box when there are more of them than it holds. The same check for updates automatically switch as the one in this pane is in the window, since that is the moment you would want to stop being asked — or start.
The menu bar icon and the overlay chord
Show menu bar icon can be switched off. If you do, a dialog explains how to get it back: open the .app again. Opening PasteDaemon while it is already running re-enables the icon rather than starting a second copy.
Overlay shortcut defaults to ⌘⌥C and can be anything carrying at least one of ⌘, ⌥ or ⌃. It is a system-wide hot key, so it works whatever app is in front — and no other app can have it while PasteDaemon is running.
Automatically paste selection pastes the result straight back into the app you were in, rather than only putting it on the clipboard. This synthesises ⌘V, which macOS only permits for apps approved under Privacy & Security → Accessibility; the pane links to that setting. Everything else in the app works without the permission — this, the abbreviation watcher and stepping a list through successive pastes are the only three things that need it.
The warning under the toggle appears whenever the permission is missing, whether or not automatic pasting is switched on, since a list that will not step is the likeliest reason to be looking here. Granting it takes effect on the next list dealt out; nothing needs restarting.
Keep the overlay up until it is closed is off by default: normally the overlay closes the moment you click another window. With it on, the overlay stays where it is while you work beside it, and only ⎋, using a row or a drag that was taken puts it away — and a paste goes into whatever app you were last in. See Keeping it up.
Position says whether the overlay opens in the middle of the screen or where you last put it. To move it, hold ⌘ and drag the overlay itself; Centre Again forgets where you put it. See Where the overlay sits.
Show shortcut hints is the row of keys along the bottom of the overlay, on by default. Switching it off hides it everywhere the overlay draws it — the list, the filter menu, the editor, a value's past versions — and gives those two lines back to the list. The keys go on working; the Shortcuts pane is where to look them up once the footer is gone.
Copying
Append with a second ⌘C is off until you switch it on. With it on, holding ⌘ and tapping C twice adds what you have selected to the end of the copy before it, on a line of its own, and puts the two on the clipboard together — so several pieces from around a page make one paste. What you append is not kept as an item of its own, and the item it grows keeps what it said before among its past values.
Nothing turns this on for you: it changes what ⌘C does in every app on your Mac. Noticing the second tap means watching the keyboard, which needs the same Accessibility permission automatic pasting needs — if it is missing, or macOS refuses the watch for some other reason, the row under the switch says so and links to the setting. It says nothing while the switch is off.
Appending to the copy before it has the whole of what counts as the gesture and what happens to the two copies.
How long things are kept
The history asks how long, and nothing else — there is no setting for how many items are kept, because there is no such limit.
Keep … for is one picker each for text, images and file lists, offering 24 hours, 7 days, 1 month, 3 months or unlimited. The three are asked separately because they are worth keeping for different lengths of time: a screenshot is bulky and rarely wanted tomorrow, a snippet of text costs nothing to keep for a month. The defaults are 3 months for text and file lists and 7 days for images. Pins never expire, whatever these say.
Two one-off buttons sit beside them:
- Clear Older Than offers the same four periods, drops everything copied before that whatever kind it is, and says how many went.
- Clear History empties it.
Both keep the pins, and Clear History offers Clear Pins Too beside it.
If you are upgrading from a version that had no retention, a notice above the pickers says what they are now set to and offers Use These Limits — which accepts them and sweeps then and there — or Keep Everything, which sets all three to unlimited. Nothing is dropped for its age until you answer it. Setting any period by hand counts as answering it too. Copying → Retention has the whole of how the sweep works.
Importing a history from another clipboard manager
Import…, in the History section, opens the window a first launch offers, with a line beside it naming the managers actually installed. Four are read directly — Alfred, Maccy, CopyQ and Flycut — and Add a File… is the way in for everything else: a JSON list of strings, a JSON list of objects, one item to a line, or another PasteDaemon's history.json.
Each row says what its app is holding: how many items, how far back, and how many images or file clips cannot be read. Nothing of another app's is written to — a history kept in a database is copied aside before it is opened — and an import is an addition, so every other manager keeps its history exactly as it was.
Text only, from all of them. Images and file clips are each app's own business, stored under hashes and blobs whose layout is written down nowhere, so they are left where they are and the row says how many were left behind. Where an app records which app a copy was made in, that comes over. Where an app records no times at all — CopyQ usually, Flycut always — the order is kept and the times are invented one second apart ending just before now, deliberately recent so that the retention sweep cannot delete an imported history on the strength of times the app made up.
Everything is de-duplicated, within each app and across them, and interleaved with your history by date rather than appended, so an import obeys the retention exactly as a copy does. Afterwards you are told how many items you now have and which apps they came from.
Raycast is not read, and should not be. Its history is encrypted under a keychain item of its own, so reading it would mean asking you for your login password in order to hand this app another app's secret — which is what a credential thief does. Paste, Pastebot and Copy'em keep theirs behind private schemas they are free to change in any release. Export from those and use Add a File….
If the manager you are importing from keeps its history for a length of time — which of the four only Alfred does — the window offers a checkbox to adopt that period for text and file lists. It starts ticked only when adopting it cannot cost you anything.
Taking your rules to another Mac
A history is one thing; the work is another — the actions you wrote, the triggers that run them, the variables you named, the abbreviations you type. The Import/Export Data section exports those to a file and reads one back.
The file is JSON marked "format": "pastedaemon.items". Three things are deliberately not in it: the clipboard history, which has a window of its own; the settings, which are about this Mac; and the standard library, which ships with the app — a file carrying a copy of it would be a file able to hold a release back.
Secrets never travel. A secret's value is sealed with a key that lives in this Mac's keychain, so the ciphertext could not be read anywhere else, and the plain text is exactly the thing that must not be written into a file you are about to email yourself. The export window lists them as left out and says how many.
Export Items lists everything of your own with a tick beside each row and All / None on each category, everything ticked to start with. Ticking a trigger ticks the actions it runs, and unticking an action unticks the triggers that would be left naming nothing — so a file this app writes always reads back somewhere else.
The list is the shape your library is: type, then collection, then folder. Actions and triggers sit in the folders you filed them in, a folder inside a folder sits inside it here too, and every heading folds away — click it, or its triangle. A folded heading still says how much of it is ticked, 3 of 8, and its own All / None tick that folder alone, however deep. So exporting one folder out of forty actions is None on the category and All on the folder, rather than thirty-nine clicks. Everything starts open: this is a list of what you have.
There is a search field at the top, ready to type in when the window opens, with its own All / None beside it for everything below. Those act on what is showing, so the short way to say "this and nothing else" is: type the word, None at the top, All on what is left. A row is found by its name the way the overlay finds a keyword — sfl reaches strip-files-list — and by any word that literally appears in its description or in the folder it is filed in, so Work finds everything in Work ▸ Email. While you are searching the list goes flat and each row says where it lives; the counts read 2 of 5 found. Empty the field and the list comes back exactly as you had it folded.
Import Items reads and checks the file before the window appears: one that is not this app's, one from a later version, or one whose triggers name actions nothing defines is a sentence in an alert rather than a window full of rows you would then be told you cannot have. What is in the file is listed the same four ways, with each row marked if something of that name is already here. One switch decides what happens to those, for the whole import: it is off — skip them, leave what is here as it is — because an import is a thing you do to gain rules, not to lose the ones you have written since.
A few rows can never come in, and are shown greyed with the reason: a variable named with a number, a secret, an action with no keyword, an abbreviation with nothing to type. Dropping a file onto the app's icon opens the same window.
Excluded apps
A list of apps whose copies are not kept. Nothing copied while one of them is frontmost is recorded — no history entry, no past value, and no trigger runs on it. The copy still goes to the system clipboard, which is not this app's to interfere with; PasteDaemon simply does not look. Abbreviations are not watched for there either.
Add an app by name from the ones running now, or choose one from disk. It is remembered by bundle identifier, so renaming, moving or updating it changes nothing, and the name is stored beside it so an exclusion can still be read — and removed — after the app has been uninstalled.
Whoever was in front when the pasteboard changed is taken to be who copied. The pasteboard is polled, so a copy made and followed by an app switch inside a quarter of a second could be attributed to the app you switched to.
This is on top of, not instead of, the transient-copy convention: a password manager marking its transfers org.nspasteboard.ConcealedType is skipped whether or not it has been excluded.
Secrets
How long one unlock lasts — 5 minutes, 1 hour or 24 hours, defaulting to 5 minutes. One unlock covers every secret until the window closes, and sleeping or locking the screen closes it early. While they are unlocked the section says so and offers Lock Now.
Sounds
PasteDaemon has no Dock icon and no window of its own, so most of what it does happens while you are looking at something else. The Sounds pane gives five of those things a sound to make — the HUD at the bottom of the screen says what happened and has to be looked at; a sound says that it happened and does not.
Play sounds is off until you switch it on, and it is the one switch over all of them: with it off the app makes no sound at all, whatever the rows below say. Underneath it every row is already on with a sound of its own chosen, so switching it on is the whole of the setting up — the rows are there for narrowing it down afterwards.
The five, and when each one sounds:
- Something is copied — every copy kept in the history, whether it is text, files or an image. Copies made while recording is paused, or in an excluded app, are not kept and make no sound.
- PasteDaemon pastes — whenever the app presses
⌘Vfor you: using a row, running an action, dealing out a list. It follows Automatically paste selection above; with that off the app never pastes, so this never sounds. - An action runs from a shortcut — one of your own shortcuts running an action. A chord bound to a command opens the overlay for you to finish, and sounds when the action it starts actually runs.
- A trigger fires — a trigger matching something you copied. You hear both when a copy has one: the copy was kept, and then something was done to it.
- An abbreviation is recognised — the moment the keyword is recognised, before the expansion is worked out, so you hear it even when the expansion fails. That is when it is worth most: a rule that fails leaves the keyword sitting on screen, and the sound tells you the app was listening.
The sounds on offer are the alert sounds macOS ships — the same ones System Settings uses for its own — plus anything you have put in ~/Library/Sounds, which is the folder System Settings takes your own alert sounds from too. Drop an AIFF in there and it is in the menu the next time you open this pane. Choosing one plays it, and Play hears it again; both work whether or not that row is switched on, since what you are asking is what it sounds like.
Shortcuts
The Shortcuts pane holds two lists.
The overlay's own commands
Every chord the overlay answers to, each with what it does and where it applies, and a recorder beside it: click, press the keys, and ⎋ leaves it as it was. A command you have moved offers Revert, which puts it back on the chord the app ships — only a change is saved, so a release that moves a default moves it for everybody who never rebound it.
The commands are pause or resume recording (⌘T), show only one kind of thing (⌘F), pin (⌘P), delete (⌘⌫), edit (⌘E), look at one in full (⌘L), show past values (⌃↩), store in a variable (⇧↩), gather into a list (⌘↩), insert a reference (⌥↩) and open preferences (⌘,).
A chord is refused, with the reason under the recorder, when it has no ⌘, ⌥ or ⌃ and is not ⇧ on a key that types nothing; when it is one the overlay walks its list with; when it already opens the overlay; or when it is already another command's or one of your own shortcuts, which the message names. Two commands on one chord would leave no way to tell which one a keystroke was about to run.
Your own shortcuts
Below those are the chords you write. There are none to begin with — the chord that opens the overlay is the only key the app claims without being asked. Each row reads as a sentence — ⌥⌘T everywhere runs trim — and is a chord, a scope, and one of two things to do with it.
The scope is where the chord is answered, and what it costs:
- everywhere registers it with the system. It works whatever app is in front, and no other app can have it while PasteDaemon is running.
- in the overlay reads it from the keyboard the overlay already has. The key goes on meaning whatever it means everywhere else, so
⌘Tcan runtrimin the overlay and still be New Tab in your browser.
What you bind is either:
- run an action on whatever is on the clipboard, exactly as the menu bar's Apply Action does. The result goes on the clipboard and to the top of the history, and is pasted back if Automatically paste selection is on; nothing appears but the HUD saying what ran. A pipeline action is how a whole chain of filters gets one of these.
- open a command, which puts that text in the overlay's search bar — the half of a pipeline that never changes, typed once here instead of every time. It previews as though you had typed it,
↩runs it, and the caret sits at the end ready for whatever the command was left waiting for ($1 | strftime).
The action is chosen from the same tree the Actions pane shows, and is named by its keyword: renaming an action's description leaves the shortcut alone, and rewriting what the action does changes what the chord does. A keyword that names nothing — renamed, deleted — is not repaired quietly; the pane marks the row and pressing the chord says so. A disabled action still runs from its chord.
Because the rules for the two scopes differ, moving a row from in the overlay to everywhere can leave it holding a chord that will no longer do. The chord is kept and the row says why, and until it is settled the row is answered nowhere.
The keys that cannot be rebound
Listed below to be read rather than changed: ↩, ↑/↓, ⇥, ⇧⇥, ⎋ and the ⌘/⌃/⌥/⌃⇧ 1–9 families. Those walk the list rather than act on it, and the digits are a family of nine rather than a chord. Chords are matched by key code, so a binding stays on the same physical keys across layouts.
When something could not be read
If part of the saved configuration could not be read at the last launch, a warning at the top of the General pane says what was lost and offers to reveal the copy kept of the file as it was found. It can be dismissed.
Nothing is ever all-or-nothing: a section that cannot be read costs only that section, a row only that row, and a field that is missing takes its default. That matters because whatever was loaded is written back over the file within the second — anything dropped on the way in would be lost for good a moment later.