Seltzer User Guide

Seltzer (formerly WinClip) shows a bar of actions when you select text in any Windows app. This guide covers everything a user needs: how the bar appears, what it offers, every setting, installing extensions, privacy, troubleshooting and uninstalling. Extension authors should also read Writing Extensions.

Keys are written the Windows way (Ctrl, Alt, Shift, Win). Where an extension's own help mentions Mac keys, read ⌘ Command as Ctrl and ⌥ Option as Alt (see Holding a key while clicking).

Contents

  1. The first start
  2. Making the bar appear
  3. What the bar shows, and why
  4. Using the bar
  5. Built-in actions
  6. Bundled extensions
  7. Settings, pane by pane
  8. App and website rules, trigger modes
  9. How Seltzer reads the selection (clipboard modes)
  10. What actions do with your clipboard
  11. Installing and managing extensions
  12. The tray icon
  13. Automation: command line and seltzer:// links
  14. Privacy and where your data lives
  15. Troubleshooting
  16. Uninstalling
  17. The settings file

1. The first start

The first time Seltzer starts it shows a welcome page:

Seltzer then runs in the background with an icon in the notification area (the "tray"). Right-click or left-click the icon for its menu; double-click it to open Settings.

Coming from WinClip. Seltzer was called WinClip up to version 0.1.3. If you used WinClip, Seltzer's first start skips the welcome page and brings over your WinClip profile instead: settings, the action list (order, folders, separators, renamed actions, custom icons and options), the extensions you installed, saved API keys and sign-ins, and downloaded icons. A message says what was brought over. WinClip's files are copied, never moved or changed; only WinClip's Start at login entry is removed, so that the two apps do not both start with Windows. This happens once. Quit WinClip before you start Seltzer (both would show a bar), and uninstall it in Windows Settings → Apps → Installed apps when you no longer need it. Saved keys that Windows cannot decrypt for you (a profile copied from another PC) must be entered again; the message says so. A file saved with WinClip's Export Settings… also imports into Seltzer (Advanced → Import Settings…).


2. Making the bar appear

Selection gestures (trigger mode "Automatically")

Gesture What to do Notes
Drag Press the left button in text, drag across it, release. The drag must start and end in the same window, move at least a few pixels (the Windows drag distance, scaled for the display) and last under 8 seconds. Dragging a window, a scroll bar or a title bar is ignored.
Double-click Double-click a word. The pointer must be the text (I-beam) cursor, or the target must be a document or text control. Seltzer waits a moment (at most 220 ms) to see whether a third click follows.
Triple-click Triple-click a line or paragraph. Shows the bar for whatever the app selected. (A classic Win32 edit box selects nothing on a triple-click, so no bar appears there.)
Shift-click Click at one end of the text, then hold Shift and click at the other end. Ctrl and Alt must not be held.
Click and hold Press and hold the left button for half a second in a text field without selecting anything. Shows a bar for actions that need no selection, typically Paste. Needs the I-beam cursor and an editable field. Can be turned off (Settings → Advanced → Activation → Click and hold).
Address-bar click Single-click the address bar of Chrome, Edge, Vivaldi, Brave, Firefox and similar browsers. Offered only when the click selects the whole address; the bar then acts on the page's full URL. Can be turned off (Advanced → Browser address bar).

A double-click or Shift-click in an editable field that ends up selecting nothing shows the no-selection bar (Paste and similar), just as click-and-hold does.

Keyboard selections do not show the bar by default (as in PopClip): selecting with Shift+arrow keys or Ctrl+A is ignored. Either press the keyboard shortcut afterwards, or turn on Settings → Advanced → Appear after keyboard selection (experimental), which shows the bar about a third of a second after you release Shift (after Shift+arrows) or Ctrl (after Ctrl+A).

The keyboard shortcut

Set one in Settings → General → Keyboard shortcut: click the box, press the combination, done (Esc cancels, Backspace clears). Rules:

Pressing the shortcut shows the bar for the current selection in keyboard mode (see Keyboard mode) wherever you are, even in apps and sites excluded by your rules, while "Appear automatically" is off and while Seltzer is paused. With nothing selected in a text field it shows the no-selection bar (Paste …). It is ignored while an action is still running on screen (its spinner, result or feedback is showing); an action whose bar you dismissed no longer holds it off.

Trigger modes

Settings → General → Trigger:

Mode Behaviour
Automatically (default) The gestures above show the bar.
When I hold Ctrl Select text as usual, then, within 8 seconds, press and hold Ctrl on its own for a moment (325 ms by default; Advanced → Hold time) to show the bar. Selecting alone shows nothing. Any other key, a click or the wheel cancels. A Ctrl you were already holding when you finished selecting does not count: release it and press it again.
Keyboard shortcut only Only the keyboard shortcut shows the bar.

Excel and PowerPoint behave as When I hold Ctrl even in automatic mode (dragging there moves cells and shapes). You can change the trigger for any single app in Settings → General → Rules → Apps… → Trigger per app, for example to set Excel back to Automatically.

Keeping the bar from appearing

Where the bar never appears

Seltzer stays hidden, by design, even for the keyboard shortcut, when:

It does not appear automatically (the keyboard shortcut still works) when:

Settings → Advanced → Troubleshooting → Why didn't it appear? tells you which of these applied (section 15).


3. What the bar shows, and why

The bar lists the enabled actions of your action list (Settings → Actions) in that order, keeping only those that apply to the current selection:

How it looks and behaves:

If nothing applies, no bar appears ("No action applies to this text" in the diagnostics window).


4. Using the bar

Clicking

Click an action to run it. The bar never takes the keyboard focus away from your app, so a paste lands where your text cursor is.

While an action takes longer than a moment, a spinner replaces the bar; click the spinner to cancel (the action's network requests and programs are stopped, "Cancelled" is shown). When it finishes you see a tick, Copied, a shaking X (it failed; details are in the Debug Console when extension debug output is on), the result, or nothing (the bar just closes after a paste).

Some actions show their result in the bar instead of pasting it (a calculation, a word count, a converted value). A result shown as a button is a preview: click it to paste the full result, Shift-click to copy it. Large Type shows the text in a big overlay across the screen; any click or key closes it.

If an action needs settings first (an API key, a sign-in), it shows the X and opens its settings sheet.

Holding a key while clicking

Seltzer passes the keys you hold when you click (or press Return in keyboard mode) to the action. Extensions written for the Mac see them as Mac keys:

You hold The action sees Typical effect in the built-ins
Shift ⇧ Shift Copy/Paste: plain text (or keep formatting, see below). Cut: leave plain text. Search and Open Link: open in a background tab. Dictionary: copy the definition. Actions that paste their result: copy it instead. Result previews: copy.
Alt ⌥ Option Search: search for the exact phrase (in quotes). Open Link: copy the links instead of opening them. Many extensions document an Option variant.
Ctrl ⌘ Command Whatever the extension documents for ⌘.
Win nothing Not passed to actions.

Mac "Control" (⌃) is never reported for clicks on Windows. Scripts can also read the Windows keys, Win included (Writing Extensions).

If you hold Alt or Win while clicking, Seltzer makes sure releasing the key afterwards does not open the app's menu bar or the Start menu.

Keyboard mode

The keyboard shortcut opens the bar in keyboard mode, with the primary action highlighted:

Key Does
← / → Move the highlight; at the ends move to the previous or next page (wrapping around). Holding the key repeats.
↓ Open the highlighted folder or submenu.
↑ Leave the current sub-bar or submenu.
Return or Space Run the highlighted action (Return on a folder opens it). Keys held with Return count as in the table above: Shift+Return is a Shift-click.
1 – 9 Run the first to ninth action of the page, when Advanced → Number keys run actions in keyboard mode is on.
Menu key (Apps) or Shift+F10 Open the bar menu.
Esc Close the bar.

While the keyboard-mode bar is shown, these keys go to the bar, not to your app. Any other key closes the bar and reaches the app as usual.

Closing the bar

The bar closes when you click anywhere else, press a key (unless Advanced → Screenshot mode is on), move the pointer away from it (the distance is Advanced → Pointer-away distance; 0 means one bar height), turn the mouse wheel outside it, switch to another window, or lock the computer. It never closes on a timer unless you set Advanced → Hide after (seconds); hovering over it pauses that timer.

The bar menu

Right-click the bar's background (or an action without a submenu), or press the Menu key in keyboard mode, for:

The keyboard shortcut keeps working in excluded apps and sites.


5. Built-in actions

The default action list, in this order:

Action Appears when Click Shift-click Alt-click
Spelling One editable word of 3–400 letters is misspelled (no spaces, links, e-mail addresses, camelCase, : or _) Offers up to five suggestions per language; clicking one replaces the word and restores your clipboard afterwards — —
Search Any text that is not itself a URL Searches the web in the current browser (or the default browser) Opens a background tab Searches for the exact phrase
Open Link / Open Links The text contains web links (or links with other known schemes) Opens each link, at most 25 Background tabs Copies the links, one per line
Cut Text is selected in an editable field Cuts Leaves only plain text on the clipboard —
Copy Text is selected Copies Copies plain text only (with Copy plain text on: keeps the formatting) —
Paste You are in an editable field and the clipboard has text Pastes, replacing any selection Pastes plain text only (with Paste plain text on: keeps the formatting) —
Show in Explorer The whole selection is an existing file or folder path on a local drive Opens File Explorer with the file selected (a folder is opened) — —
Dictionary The word or phrase (1–400 characters, punctuation at the ends ignored) is in the English dictionary Shows a definition popup next to the pointer Copies the definition —

Settings of the built-ins (the gear on their row in Settings → Actions):

Built-ins cannot be uninstalled, only disabled or deleted from the list; Settings → Actions → Tools → Restore Default Actions puts any missing ones back.


6. Bundled extensions

Seltzer comes with 79 starter extensions, offered on the welcome page, and 13 Windows-native ones. Add any of them at any time from Settings → Actions → Tools → Manage Extensions…: select it and click New Instance. Highlights:

Extensions that need an account or key open their settings sheet the first time you use them.


7. Settings, pane by pane

Open Settings from the tray menu, by double-clicking the tray icon, or by starting Seltzer.exe again while it runs. Ctrl+W closes the window. Changes take effect immediately.

Find a setting. Type in the Find a setting box above the panes, or press Ctrl+E (or Ctrl+F) to get there. While the Actions list itself has the focus, those two keys keep their own meaning there (Ctrl+F filters the list, Ctrl+E opens Manage Extensions); from the list's filter box, the navigation or any other pane they go to Find a setting. Results appear as you type, best match first, each with where it is (Advanced › Clipboard):

Use ↑/↓ and Enter, or click a result; screen readers announce the number of results and the result ↑/↓ moves to. A setting: Settings shows its pane, scrolls to it (with its section heading above it when both fit), puts the keyboard focus on it and highlights it briefly (the highlight does not fade when Windows' animation effects are off). The keyboard shortcut is highlighted but not focused, so the next key you press is not recorded as a new shortcut: click the field to record one. A window opens. An action-list entry is selected in the Actions list (its folder opens and a filter hiding it is cleared). Esc closes the results; a second Esc clears the box.

General

Activation

Appearance

Actions

Your action list, in bar order: extensions, folders and separators. Each row shows the icon, name and origin; the gear opens the action's settings; ⋯ (or right-click) opens the row menu.

Task How
Enable/disable Space, or ⋯ → Enabled
Rename Double-click the name or F2 (clear the name to go back to the default)
Change the icon ⋯ → Icon → Change Icon… (Icon Picker) / Reset to Default Icon
Icon or name on the bar ⋯ → Show As → Icon / Text
Action settings Gear, Enter, or ⋯ → Settings…
Another copy with its own settings ⋯ → Duplicate (only for extensions that allow several instances)
Delete Delete key or ⋯ → Delete. Deleting the last copy of an installed extension also uninstalls it (you are asked first; Undo cannot bring the files back)
Reorder, move in/out of folders Drag and drop; or Ctrl+X, select a row, Ctrl+V (the item goes after the selected row); Ctrl+Alt+V (Move Item Here) moves the item you cut or copied; Ctrl+C then Ctrl+V pastes a copy (not for extensions that allow only one copy)
New folder / separator + menu → New Folder (Ctrl+N) / New Separator (Ctrl+Alt+N); folders nest at most five deep. A separator's ⋯ → Separator Style chooses Section Break or Page Break
Undo / redo Ctrl+Z, Ctrl+Shift+Z or Ctrl+Y (100 steps)
Search the list Ctrl+F (the list's own filter; Find a setting above the panes also finds actions)
Extension details ⋯ → Extension → Extension Info (Ctrl+I) / View Source

Multi-action extensions show their actions as sub-rows that can be enabled, renamed and re-iconed one by one.

Buttons above the list:

Action settings sheet. Generated from the extension's options: text fields, checkboxes, pop-up menus (with None and Other… where offered), concealed fields for API keys (with a reveal button; clearing one deletes it), headings and help text with links. Extensions with a sign-in show Sign In… / Sign Out and "Signed in as …". Typed text is saved a moment after you stop typing. The header's Extension menu leads to Extension Info and View Source.

Manage Extensions lists every installed extension (sort by name or install date) with its origin (Built-in, Included with Seltzer, Package, Snippet, Developer folder, PopClip Extensions Directory), a Directory (hash-verified) badge where it applies, and how many copies are in the action list. New Instance adds (another) copy to the action list and puts back deleted built-ins; Extension Info, View Source, View Web Page (for directory extensions) and Review and Enable… (for an extension waiting for your confirmation) are also here.

Extension Info shows the name, identifier, version, description, where and how it was installed and when, verification status, folder (with Show in Explorer), capabilities (entitlements such as network access, and whether it runs scripts), associated apps and whether they are installed, its copies in the action list, and load warnings.

View Source shows the extension's files read-only. Export… saves it as a .popclipextz package; Copy Snippet copies a single-file extension as snippet text. To customise an extension, export or copy it, edit it, and install the result under a new identifier.

Icon Picker (⋯ → Icon → Change Icon…): Text (up to three characters or one emoji, in a square, circle or magnifying glass, filled or outlined, optionally monospaced), Custom (any icon specifier, or an SVG/PNG file chosen or dropped on the window: SVG up to 64 KB, PNG up to 256 KB) and Search (icons from Iconify, downloaded when shown), with an Adjust panel for scale, rotation, position, flips and strike-through.

App

Advanced

Troubleshooting — Why didn't it appear?, Debug Console, Restart Detection (reinstalls the input hooks).

Back up settings — Export Settings… writes your action list (its order, folders, separators, names, icons and each action's option values) to a JSON file; Import Settings… replaces your action list with the one in a file. API keys and sign-ins are never exported, and an import leaves them as they are. App-wide preferences (everything on the General, App and Advanced panes, and your rules) are not part of the export. Extensions themselves are not included either: install them on the other computer too.

Unpacked extensions — Load Unpacked Extension… loads an extension folder you are developing in place, without copying it (section 11).

Then, grouped:

Setting Default Meaning
Activation
Hold to prevent appearing Ctrl Key that, held when you finish selecting, keeps the bar away (Ctrl, Alt, Ctrl+Shift, None)
Click and hold On Press and hold in an empty text field shows Paste and other no-selection actions
Browser address bar On A single click in a supported browser's address bar shows the bar
Hold time (ms) 325 How long to hold Ctrl with the "When I hold Ctrl" trigger (100–3000)
Require Shift in terminals Off In terminals the bar appears only when Shift is held while selecting
Appear in full-screen apps Off Normally the bar stays hidden in full-screen games and presentations
Appear after keyboard selection (experimental) Off Shift+arrow and Ctrl+A selections show the bar too
Number keys run actions in keyboard mode Off 1–9 run the first to ninth action of a keyboard-mode bar
Bar
Always use the position setting Off Ignore the drag direction when choosing above or below
Place the bar Near the pointer Or near the selected text, when the app reports where it is
Actions per page 0 0 fits as many as the screen allows
Hide after (seconds) 0 0 keeps the bar until you move away, click elsewhere or type
Pointer-away distance 0 How far (in pixels at 100 % scaling) the pointer may move away before the bar hides; 0 = one bar height
Use the accent colour On Off uses the classic blue highlight
Screenshot mode Off Key presses don't hide the bar
Compact bar: icons only Off Actions that have an icon show it instead of their name, even Cut, Copy and Paste
Icons
Download icons from Iconify On Off: only bundled and already downloaded icons are shown, and icon search is unavailable
Symbol icons Close to macOS How the macOS SF Symbols named by extensions are drawn (they are replaced by similar open-source icons): Close to macOS or Windows (Fluent)
Icon sets hidden from icon search (none) Iconify prefixes, for example mdi, fa
Icon search includes colour icon sets Off
Icon search shows each icon's name Off
Disable the icon cache Off For troubleshooting: every icon is drawn again each time
Clipboard
Read selections with the clipboard When needed (recommended) See section 9
Copy plain text Off Copy drops formatting; hold Shift to keep it
Paste plain text Off Paste drops formatting; hold Shift to keep it
Keep pasted results on the clipboard On Off restores what was on the clipboard before an action pasted its result
Copy shown results Off Results that are only displayed are also copied
Copy the text when searching Off Search also copies the searched text
Copy the link when opening it Off Open Link also copies the links
Actions and scripts
Extra link schemes for Open Link evernote, omnifocus, spotify, ftp, bluesky, hook, craftdocs, x-devonthink-item, kmtrigger, message, lt Comma-separated schemes Open Link treats as links
Show spelling suggestions first On Spelling opens its suggestions straight away when the word is misspelled
Script time limit (seconds) 60 Shell, PowerShell and Command Prompt actions are stopped after this time; 0 = no limit
Allow sh and bash scripts Off Run Unix shell scripts through Git for Windows or WSL when installed
JavaScript time slice (ms) 5000 Longest time an extension's JavaScript may run without pausing (250–60000)
Developer
Extension debug output Off print() and script output go to the Debug Console
Reload developer extensions on change Off Unpacked extension folders (and installed extensions) reload when their files change
Don't ask before installing unverified extensions Off For extension developers only: unverified extensions can run code on your PC
Allow reserved identifiers Off For extension developers only
Skip the entitlement check Off Don't warn when an extension uses an API without declaring it
Privacy
Share private-window page addresses with extensions Off Off keeps the address and title of InPrivate and incognito windows away from extensions
Log selected text Off For troubleshooting only: selected text appears in the log

A few expert settings exist only in the settings file (%APPDATA%\Seltzer\settings.json). Section 17 lists them, gives the settings-file name of every PopClip hidden preference and explains how to edit the file safely.


8. App and website rules, trigger modes

Rules only stop the bar from appearing automatically. The keyboard shortcut works everywhere (except in elevated windows and on the secure desktop).

Apps (Settings → General → Rules → Apps…)

Websites (Settings → General → Rules → Websites…)


9. How Seltzer reads the selection (clipboard modes)

Seltzer first asks the app for the selected text through Windows accessibility interfaces (the classic edit-box messages, UI Automation, MSAA, IAccessible2 for browsers, the Java Access Bridge for Java apps). This is invisible and touches nothing. Most apps work this way: Notepad, Word, Outlook, browsers, Windows Terminal, WPF, WinUI and UWP apps.

Some apps do not expose their selection that way — typically Electron apps whose accessibility is turned off (Slack, Teams, Discord, some editors), older Java apps and custom-drawn editors. For them Seltzer can ask the app to copy: it saves everything on your clipboard, sends Ctrl+Insert or Ctrl+C, reads the copied text and puts your clipboard back, all formats included. Settings → Advanced → Clipboard → Read selections with the clipboard controls this:

Mode Behaviour Trade-off
When needed (recommended) (default) Accessibility first; the copy is used only when accessibility finds nothing and the gesture really looks like a text selection. The full bar in almost every app. The copy is briefly visible to clipboard tools: Seltzer marks its own temporary writes and restores so Windows clipboard history (Win+V), cloud clipboard and well-behaved clipboard managers skip them, but the app's own copy cannot be marked, so it may appear in Win+V history.
Only when an action is clicked When the text cannot be read without copying, the bar shows only actions whose appearance does not depend on the text (Copy, Cut, Uppercase and other actions without conditions), and the copy happens when you click one. No clipboard activity until you act; fewer actions offered in those apps (nothing that needs a pattern, a link, a path, a word count in its title or code that inspects the text).
Never Accessibility only. Nothing ever copies; apps without accessibility show no bar (the hotkey too). Actions that need rich text (HTML/RTF) fall back to plain text.
Always Copy first, accessibility as the fallback (PopClip's "deep capture"). The most reliable text in apps whose accessibility is wrong; the most clipboard activity.

Whatever the mode, Seltzer never sends a copy shortcut:

It also waits and gives up if you press Ctrl+C, Ctrl+X or Ctrl+V yourself while it works (your own copy wins), and it stops copying for five minutes in an app whose "copies" turn out not to be text twice in a row (an image viewer, a video player).

Per-app overrides. The settings file can set the mode and a few tuning switches for one app. Quit Seltzer, then edit %APPDATA%\Seltzer\settings.json (section 17 explains how to edit it safely), for example:

"capture": {
  "mode": "automatic",
  "appOverrides": [
    { "executable": "slack.exe", "mode": "onClick" },
    { "executable": "code.exe", "preferClipboard": true },
    { "executable": "myeditor.exe", "skipCursorCheck": true, "clipboardDelayReadMs": 135, "skipCtrlInsert": true }
  ]
}

mode is automatic, onClick, never or always; preferClipboard tries the copy before accessibility; skipCursorCheck accepts apps whose text cursor is not the standard I-beam; clipboardDelayReadMs waits longer for apps that write the clipboard slowly; skipCtrlInsert sends only Ctrl+C. A global Never always wins over the built-in app profiles. The same file accepts per-app paste settings under "paste": { "appOverrides": [...] } with executable, shortcut (ctrlV, shiftInsert or wmPaste), prePasteDelayMs, keyEventDelayMs, strategy (renderAck or fixedDelay), quietMs, timeoutMs and fallbackDelayMs; Seltzer already knows the terminals that paste with Shift+Insert and the slow remote-desktop clients. An unknown key (the log names it) or a value Seltzer cannot use is ignored and the rest of the file still loads; a delay out of range is used as the nearest valid value. A punctuation mistake is different: it makes Seltzer ignore the whole file (section 17).


10. What actions do with your clipboard


11. Installing and managing extensions

Ways to install

From How
The Seltzer catalogue Settings → Actions → Get Extensions: the list of published extensions with an Install button, or the Install button on the web site (which asks first). See The extension catalogue.
Selected snippet text Select the text of a snippet (it starts with a #popclip line, up to 5000 characters): the bar's first button is Install "name".
Snippet on the clipboard Tray menu → Install from Clipboard.
A .popclipextz package Double-click it, or drop it on the Settings window, or Settings → Actions → Tools → Install from File…. After a successful install the file is moved to the Recycle Bin.
A .popcliptxt snippet file Double-click it, or drop it on Settings.
A .js, .ts or .yaml snippet file Right-click → Open with → Seltzer, or drop it on Settings.
A .popclipext folder Right-click the folder in Explorer → Install in Seltzer (on Windows 11 under Show more options), or drop it on Settings, or Tools → Install from Folder….
Snippet text from anywhere Drag the text onto the Settings window.
A PopClip Extensions Directory link Copy the address of the extension's directory page, then tray menu → Install from Clipboard (or Settings → Actions → Tools → Install from Link…, drag the address onto the Settings window, Seltzer.exe install <link>, or a seltzer://install?link= link on a web page, which asks first). Seltzer downloads the package and checks every file against the directory's published hashes; a match is shown as Directory (hash-verified).
A folder you are developing Settings → Advanced → Load Unpacked Extension… (loaded in place, never copied; see below).

A new extension is added to the end of your action list and its row flashes in Settings. Installing an extension with the same identifier replaces the old version and keeps its place, copies and settings.

The extension catalogue

Get Extensions lists the extensions published for Seltzer, with what each can do beyond plain actions (for example "Can also use: Shell Script actions, network"). Install adds one to the end of your action list.

Before installing, Seltzer checks the package against a list signed by Seltzer's publisher, so the web site alone cannot change what you get. Because of that signature these extensions install without a trust prompt, even when they run scripts, and show as Seltzer catalogue (signed). If an extension's files change on your computer later, it stops counting as signed and asks for confirmation like any other.

About once a day Seltzer looks for new versions of what you installed from the catalogue. When there are some, the tray menu shows Extension Updates, and Get Extensions shows Update and Update All. Nothing is updated until you click. The whole list is downloaded and compared on your computer, so the site does not learn which extensions you have. Setting Updates to off also stops this check; the list still loads when you open Get Extensions.

Replace appears when you already have an extension with that identifier from somewhere else. Replacing a version verified by the PopClip directory asks first, because the keys and sign-ins saved for it are deleted. Updates keep them.

Trust prompts

Seltzer cannot verify PopClip's signatures, so it treats everything that is not built in, bundled, hash-verified from the directory or signed in the Seltzer catalogue as unverified. An unverified extension that can do more than open links and press keys asks for your confirmation before it installs or runs — when it has:

The prompt shows the extension's name, identifier and source, lists what it has and quotes the developer's own explanation if there is one. Install confirms it; Don't Install cancels. Your confirmation is tied to the exact files: if the extension's files change later, it waits again ("… needs confirmation" on the bar, Review and Enable… in Settings) and nothing of it runs until you confirm. Replacing a hash-verified extension with an unverified version deletes the API keys and sign-ins saved for the verified one (the prompt says so).

Only install extensions from sources you trust: an extension with scripts can do anything your user account can do.

Removing extensions

Delete the extension's last row in Settings → Actions (you are asked first); its files and saved secrets are removed. Built-in and bundled extensions are never uninstalled. For a developer folder, removing it only forgets the folder; the folder itself is never deleted.

Developer folders

Advanced → Load Unpacked Extension… loads a *.popclipext folder (or any folder with a Config.* file) in place. With Reload developer extensions on change on, Seltzer reloads it about half a second after you save a file; an extension with scripts or entitlements asks for confirmation again after each change. Extension debug output sends print(), console.log and script errors to the Debug Console. See Writing Extensions for testing extensions with Seltzer.exe run.

Extensions from macOS

Most extensions from the PopClip Extensions Directory and the PopClip-Extensions repository work unchanged. Actions that use macOS Services, Shortcuts or AppleScript cannot run on Windows: the extension installs, those actions are hidden from the bar and marked "macOS only" in Settings. Extensions that bridge to Mac-only apps (Bear, Things, OmniFocus …) have nothing to talk to on Windows.


12. The tray icon

Left- or right-click the icon for the menu; double-click opens Settings.

The icon is dimmed while Seltzer is off or paused. If Seltzer could not install its input hooks (security software can block them) the icon shows a red "!", the tooltip and a status line at the top of the menu say "Detection unavailable", and Restart Detection moves to the top; this stays until you restart detection.


Seltzer.exe accepts commands. When Seltzer is already running they are passed to it and its answer is printed in the console; otherwise Seltzer starts and runs them.

Command Does
Seltzer.exe Starts Seltzer, or opens Settings when it is already running
Seltzer.exe <file or folder> Installs an extension (.popclipextz, .popclipext, .popcliptxt, .js, .ts, .yaml)
enable / disable / toggle Appear automatically on / off / toggle
pause [minutes] / resume Pause (1–10080 minutes, or until resumed) / resume
appear Shows the bar for the current selection, in keyboard mode, like the shortcut
settings [general\|actions\|app\|advanced] Opens Settings at a pane
run-action <reference> [--text <text>] Runs an action of your action list (see below)
define <term> Shows the dictionary popup
diagnostics / console Opens "Why Didn't It Appear?" / the Debug Console
restart-detection Reinstalls the input hooks
install <path or directory link> / install-clipboard Installs an extension
run <file.js\|ts> [function] The JavaScript test harness for extension authors (Writing Extensions)
unregister Removes this copy's file types, Open with entries, the folder verb, the seltzer: scheme and the Start at login entry (run it before deleting a portable copy; the next start registers again)
quit Quits Seltzer
--help Lists the commands

<reference> is an extension identifier (its first enabled copy in the action list), optionally followed by / and an action identifier, or the id of a specific copy. Examples: Seltzer.exe run-action app.seltzer.starter.uppercase, Seltzer.exe run-action app.seltzer.builtin.search --text "weather tomorrow". With --text the action works on that text instead of the selection, and a paste goes into the app in front.

Links. seltzer://enable, disable, toggle, appear, pause?minutes=30, resume, settings?pane=actions, define?term=word, diagnostics, console, extensions (opens Get Extensions), run?action=<reference>&text=<text>, install?extension=<identifier> and install?link=<directory link> can be opened from a browser, a document or a launcher such as a Stream Deck or AutoHotkey. Because any web page can open such a link, run and install always ask you first (naming the action, the extension or the directory link), install accepts only an extension of the signed catalogue or a PopClip directory link (hash-verified), and links can never install anything else, run the test harness or quit Seltzer.


14. Privacy and where your data lives

Data Location
Settings %APPDATA%\Seltzer\settings.json (a backup is kept when a damaged or older file is replaced)
Installed extensions %APPDATA%\Seltzer\Extensions\
API keys and sign-ins %LOCALAPPDATA%\Seltzer\secrets.dat
Logs (7 days, at most 20 files) %LOCALAPPDATA%\Seltzer\logs\
Caches (icons, Iconify downloads, TypeScript output, dictionary index) %LOCALAPPDATA%\Seltzer\cache\
The last extension catalogue seen %LOCALAPPDATA%\Seltzer\catalogue.json
The app (installer builds) %LOCALAPPDATA%\SeltzerApp\
Start at login HKCU\Software\Microsoft\Windows\CurrentVersion\Run, value Seltzer
Record of the one-time WinClip import %APPDATA%\Seltzer\imported-from-WinClip.json
File types, "Open with", the folder verb and the seltzer: scheme HKCU\Software\Classes

15. Troubleshooting

"Why didn't it appear?"

Open it from the tray menu, Settings → Advanced → Troubleshooting, or Seltzer.exe diagnostics. It lists the last 200 attempts, newest first: time, gesture, app, result (Shown, Suppressed, No selection, Failed, Superseded), the reason, how the text was read (Win32Edit, Uia, Msaa, IAccessible2, JavaAccessBridge, ClipboardAlreadyChanged, ClipboardCopy, AddressBar), capture and show times and the selection's length. Copy Report copies it (without any text) for a bug report. The top line tells whether detection itself is working.

Reason shown What to do
"Appear automatically" is off / Paused Turn it on or resume (tray menu).
The trigger mode does not allow this gesture here You are in When I hold Ctrl or Keyboard shortcut only mode, or in Excel/PowerPoint. Hold Ctrl after selecting, use the shortcut, or change the trigger (per app in Rules → Apps).
The suppression key was held You held Ctrl (or your chosen key) when releasing the mouse.
The app is excluded / on the built-in compatibility list / the website is excluded Rules (section 8).
The app runs as administrator See below.
A full-screen game, presentation or busy app was in front Advanced → Appear in full-screen apps if this is wrong.
A Windows surface was in front / the session was locked By design.
The pointer was not a text cursor Double-click and click-and-hold need the I-beam cursor. Apps with a custom text cursor can be given skipCursorCheck (section 9).
The gesture did not look like a text selection A window move, a scroll-bar drag, a title-bar click or a drag that ended in another window.
Nothing was selected / Only white space Select again.
The text could only be read by copying, which is not allowed here A terminal, an Explorer file view, a remote desktop, or the clipboard mode is Never. In terminals, check that the terminal supports accessibility (Windows Terminal and conhost do).
Reading the selection took too long The app did not answer accessibility requests in time; try again, or give it preferClipboard (section 9).
No action applies to this text None of your enabled actions matched.
Extensions were still loading Only in the first seconds after start.
This app kept returning non-text content Copying is paused for five minutes in that app.
The same selection was already shown Seltzer avoids re-showing a stale selection; select again.
Terminals need Shift held Require Shift in terminals is on.
The click in the address bar did not select the whole address Click again, or select part of the address with a drag.

Detection stopped working

If the bar stops appearing everywhere — typically after sleep, a remote-desktop session or when security software interfered — choose Restart Detection (tray menu, Settings → Advanced, or Seltzer.exe restart-detection). Seltzer also restarts its hooks by itself after resume, unlock and display changes, and when it notices that Windows removed them. A red "!" on the tray icon means the hooks could not be installed at all; some antivirus or anti-cheat software blocks low-level input hooks — allow Seltzer in it.

Elevated (administrator) windows

Windows blocks normal programs from reading, typing into or even seeing input in windows that run as administrator (Task Manager, Registry Editor, installers, an admin terminal). Seltzer therefore stays hidden there — the keyboard shortcut too — and shows a one-time tip. Use the app's own menus, or run the app without administrator rights. Running Seltzer itself as administrator is not recommended.

Games and full-screen apps

Seltzer hides in full-screen games (Direct3D exclusive mode), when Windows reports presentation mode or "busy", and in the compatibility-list apps. Games that take the mouse do not produce text selections anyway. If a normal full-screen app (a browser in F11 mode) is mistaken for a game, turn on Advanced → Appear in full-screen apps.

Terminals

Terminals are read through accessibility only — Seltzer never sends Ctrl+C there, because that would interrupt the program running in the terminal. Windows Terminal, PowerShell and cmd windows work; terminals that copy on selection (PuTTY, mintty/Git Bash with copy-on-select) work because the selection is already on the clipboard. Terminals with neither show nothing ("The text could only be read by copying …"). Pasting into terminals uses Shift+Insert where Ctrl+V does not paste. If you select a lot in terminals and find the bar distracting, turn on Require Shift in terminals and hold Shift while selecting when you want it. The terminal inside VS Code is part of VS Code and cannot be recognised as a terminal.

Electron apps (VS Code, Slack, Teams, Discord, Notion …)

Electron apps usually keep their accessibility information switched off, so Seltzer reads their selections with the guarded copy (mode When needed). If you prefer no clipboard activity there, set the app to onClick in capture.appOverrides (section 9). In VS Code, a keyboard shortcut with nothing selected may pick up the current line (VS Code copies the whole line when nothing is selected); Seltzer discards such a copy when there is no mouse selection.

Browsers

Chrome and Edge (version 138 or later) and Firefox (version 145 or later) expose selections directly; older versions and other Chromium-based browsers are read through their accessibility bridge or the guarded copy. The first gesture in a browser that just started can take a little longer while the browser builds its accessibility tree. Search and Open Link open new tabs in the browser the selection came from. Shift asks for a background tab: Seltzer opens the tab and then selects your previous tab again, so the new tab may flash for a moment.

Office

Word and Outlook work through accessibility. In Excel and PowerPoint the bar needs Ctrl held after selecting (or the keyboard shortcut), also while you edit a cell's text, because drags there usually move cells and shapes; Seltzer also never copies an Excel cell selection to read it. Set Excel or PowerPoint to Automatically in Rules → Apps → Trigger per app if you prefer.

Extensions

Keyboard shortcut does nothing

Check its status line in Settings → General (another app may own it), that Seltzer is running (tray icon or Task Manager), that the app in front is not elevated, and that no action is still running on screen (click its spinner, or use tray menu → Stop Running Action).


Seltzer closed unexpectedly

Start it again (Start menu, or Seltzer.exe). After a crash, %LOCALAPPDATA%\Seltzer\logs\Seltzer-<date>-crash.log may hold the reason when the regular log could not be completed in time; include it (it contains no selected text) in a bug report.

16. Uninstalling

Installer builds: Windows Settings → Apps → Installed apps → Seltzer → Uninstall. This removes the app folder (%LOCALAPPDATA%\SeltzerApp), the file types, the Explorer folder verb, the seltzer: link scheme and the Start at login entry.

Portable builds: quit Seltzer from the tray menu, run Seltzer.exe unregister from its folder, then delete the folder. unregister removes the file types, the Open with entries, the folder verb, the seltzer: scheme and the Start at login entry of this copy (entries that start another copy, such as an installed Seltzer, stay). By hand, the keys are under HKEY_CURRENT_USER\Software\Classes — Seltzer.ExtensionPackage, Seltzer.ExtensionSnippet, Seltzer.ExtensionSource, seltzer, Directory\shell\Seltzer.InstallExtension — and the Seltzer.* values under .popclipextz, .popcliptxt, .js, .ts and .yaml → OpenWithProgids; Start at login is the Seltzer value under HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run.

Your data stays in both cases, so a reinstall finds your settings and extensions. To remove it too, delete %APPDATA%\Seltzer (settings and installed extensions) and %LOCALAPPDATA%\Seltzer (secrets, logs and caches).


17. The settings file

Everything you set in Settings, apart from API keys and sign-ins, is saved in %APPDATA%\Seltzer\settings.json. You never need to edit it, but a few expert settings exist only there, and PopClip users may know PopClip's hidden preferences (defaults write com.pilotmoon.popclip …). This section gives the Seltzer name of each.

Editing it safely

  1. Quit Seltzer (tray menu → Quit). Seltzer does not watch the file and writes all of it again whenever a setting changes, so an edit made while it runs is lost.

  2. Open the file in a text editor. Each key belongs to a section: appearance.useAccentColor means the key useAccentColor inside the "appearance": { … } block. Change the key there, or add it to that block if it is not in the file yet. To get the classic blue highlight and always paste plain text:

    "appearance": {
      "size": 2,
      "useAccentColor": false
    },
    "clipboard": {
      "alwaysPastePlainText": true,
      "keepPastedTextOnClipboard": true
    }
    

    The file is JSON, which is strict about punctuation. One mistake in it makes the whole file unreadable, not just the value you changed (see If Seltzer cannot read the file below), so check that:

    • text is in double quotes: "always", never always or 'always';
    • true, false and numbers have no quotes, and true and false are lower case (False is a mistake);
    • the entries of a block are separated by commas: a key you add after the last entry needs a comma at the end of the line before it;
    • a backslash in text is written twice: "C:\\Tools";
    • there is only one block of each name: never add a second "appearance": { … } at the end of the file.

    Comments (// …) and a comma after the last entry of a block are allowed.

  3. Start Seltzer and check the result. Most keys have a row in Settings (the tables below say where), which shows the value Seltzer read.

As long as the file is valid JSON, Seltzer reads it value by value and never rejects all of it for one bad value:

If Seltzer cannot read the file

After a punctuation mistake or a repeated block, Seltzer does not use the file at all. It starts as on the first start, with the welcome page and default settings, including the default action list. It keeps your file next to the new one as settings.json.corrupt-<date>.bak (the date and time are in UTC, for example settings.json.corrupt-20260927-143005.bak) and writes a new settings.json with the defaults. The log (%LOCALAPPDATA%\Seltzer\logs\) says "settings.json is corrupt". API keys and sign-ins are stored separately and are kept.

To get your settings back:

  1. Quit Seltzer.
  2. In %APPDATA%\Seltzer, open the newest settings.json.corrupt-<date>.bak in the text editor and correct the mistake (the list in Editing it safely above).
  3. Save it as settings.json in the same folder, replacing the file with the defaults. In Notepad, choose All files as the file type so that it does not add .txt.
  4. Start Seltzer. If it starts with default settings again, a mistake is left: repeat from step 1 with the newest .bak.

Seltzer keeps the five newest .corrupt- copies. Changes you made in Settings while the defaults were in use are replaced by the restored file.

PopClip's hidden preferences

PopClip preference Key in settings.json In Settings
PopEnabled activation.appearAutomatically General → Appear automatically (also in the tray menu)
BlockedApps rules.excludedApps, a list of { "executable": "notepad.exe" } entries, used while rules.appMode is "exclude" (the default; "include" uses rules.includedApps instead) General → Rules → Apps…
AlwaysRespectPositionSetting appearance.alwaysRespectPosition Advanced → Bar → Always use the position setting
MenuSizeLimit appearance.maxItemsPerPage (0 = as many as fit) Advanced → Bar → Actions per page
SpellingShowFirst spelling.showFirst Advanced → Actions and scripts → Show spelling suggestions first
AlwaysCopyPlainText / AlwaysPastePlainText clipboard.alwaysCopyPlainText / clipboard.alwaysPastePlainText Advanced → Clipboard → Copy plain text / Paste plain text
CopyOnSearch / CopyOnOpenLink clipboard.copyOnSearch / clipboard.copyOnOpenLink Advanced → Clipboard → Copy the text when searching / Copy the link when opening it
CopyOnShow clipboard.copyOnShow Advanced → Clipboard → Copy shown results
KeepPastedTextOnClipboard clipboard.keepPastedTextOnClipboard Advanced → Clipboard → Keep pasted results on the clipboard
OtherURLSchemes openLink.otherUrlSchemes Advanced → Actions and scripts → Extra link schemes for Open Link
DeepCapture capture.mode set to "always"; for one app, the same value in capture.appOverrides[].mode (section 9) Advanced → Clipboard → Read selections with the clipboard: Always
ScreenshotMode appearance.screenshotMode Advanced → Bar → Screenshot mode
ClassicBlue appearance.useAccentColor set to false Advanced → Bar → Use the accent colour: Off
LoadUnsignedExtensions developer.skipTrustPrompt Advanced → Developer → Don't ask before installing unverified extensions
AllowUnsignedReservedPrefixes developer.allowReservedPrefixes Advanced → Developer → Allow reserved identifiers
EnableExtensionDebug developer.enableExtensionDebug Advanced → Developer → Extension debug output
DisableEntitlementSniff developer.disableEntitlementSniff Advanced → Developer → Skip the entitlement check
DisableIconCache icons.disableIconCache Advanced → Icons → Disable the icon cache
ExcludedIconSets icons.excludedIconSets Advanced → Icons → Icon sets hidden from icon search
IconPickerIncludePalette / IconPickerShowSpecifier icons.iconPickerIncludePalette / icons.iconPickerShowSpecifier Advanced → Icons → Icon search includes colour icon sets / shows each icon's name

PopClip's other hidden preferences have no Seltzer equivalent: they are obsolete (MaxNumberOfExtensions, SearchForLinks, InceptionTextLimit, enable-action-<id>), have no meaning on Windows (NoLoginShell, DisableBrowserTabScripts, EnableJSInspection) or are not implemented (EnableHttpIcons, IconPickerMonoPosterize, IconServerOptimize).

Settings without a row in Settings

Key in settings.json Default Meaning
appearance.backdrop false true gives the bar a translucent (acrylic) background on Windows 11 version 22H2 and later, unless Transparency effects are off or a high-contrast theme is on
general.uiLanguage none Language for extensions' translated names and texts, for example "de" or "pt-BR"; none uses the Windows display language. Seltzer's own windows are in English only in this version
scripting.jsMemoryLimitBytes 0 (64 MB) How much memory one run of an extension's JavaScript may keep in use before it is stopped, in bytes (134217728 = 128 MB). Loading an extension may use four times as much, at least 256 MB
capture.appOverrides none Clipboard mode and reading tweaks for one app (section 9). The same entries hold the per-app trigger set in General → Rules → Apps… (triggerModeOverride); leave that key as it is
paste.appOverrides none Paste shortcut and timing for one app (section 9)
paste.default built in The paste fields of paste.appOverrides (without executable) for all apps. Seltzer's built-in entries (terminals, remote-desktop clients, JetBrains IDEs, Brave) and your paste.appOverrides take precedence for their apps, so prefer an override for the one app that loses pastes

Every other key either belongs to a Settings row (sections 7 and 8), where it is best changed, or is kept by Seltzer itself (schemaVersion, actions, general.firstRunCompleted, general.starterPackOffered, general.shownTips) and should be left alone.


PopClip is a trademark of Nicholas Moore (Pilotmoon Software). Seltzer is an independent product and is not affiliated with, endorsed by, or sponsored by Pilotmoon Software.