Skip to the content.

Identifying and Handling Transient or Special Data on the Clipboard

The Issue

TextExpander, Butler, TypeIt4Me, Typinator, Keyboard Maestro, pasteboard history applications, and other applications briefly commandeer Mac OS X’s general pasteboard to transport large chunks of data into the user’s current context quickly. Often, shortly after this data is inserted, the pasteboard is returned to its previous contents. These applications need a way to identify their data as being temporary, different than content Copied by the user, and/or otherwise special – additional pasteboard types offer a solution.

CopyPaste Pro, iClip, and other pasteboard history utilities maintain histories of the pasteboard’s contents. Pasteboard data identified as transient should not be included in these histories.

Additionally, password utilities such as 1Password might mark passwords or other sensitive data, either placed programmatically or user-Copied to the pasteboard, so that pasteboard history utilities could obfuscate passwords when displayed on screen (to avoid inadvertently revealing your password to a “shoulder surfer”), and/or avoid writing them as plain text to a pasteboard history file.

Pasteboard history utilities may also choose to treat content identified as not explicitly Copied by the user differently, either by excluding it, or by presenting it differently

The Solution

  1. Identify and respect currently-defined transient and not-user-Copied pasteboard data identifiers.
  2. Define new, shared transient, not-user-Copied, and confidential pasteboard data identifiers to use and respect in the future.

Existing Identifiers

Known ‘proprietary’ pasteboard marker types identifying the pasteboard content as “transient”:

Known ‘proprietary’ pasteboard marker types identifying the pasteboard content as confidential:

Universal Identifiers

To avoid a proliferation of marker types from a variety of developers, use these universal identifiers:

Actions for Applications Which Manipulate the General Pasteboard

If you are writing a new application in this area, please don’t create new identifiers for generated or transient data, password or sensitive data, or indicators of the data’s source application. If you feel some other type of marker is needed for your software’s needs, join the discussion as mentioned below and propose it there.

Actions for Clipboard Historians or Displayers

If your software shows a history of the pasteboard contents, displays the current pasteboard contents, or otherwise manipulates or responds to changes in the general pasteboard:

Discussion

These pasteboard marker types and proposals for others are discussed on a Google Group discussion list.

List of Applications

These applications support all or some of the universal and/or proprietary identifiers described above. (List is in alphabetical order by application name.)

Application URL Notes
1Password https://1password.com  
Butler https://manytricks.com/butler 1
CopyPaste Pro https://plumamazing.com/product/copypaste-pro-for-mac/  
Enpass https://enpass.io 4
iClip http://iclipapp.com/  
iClipboard https://apps.apple.com/us/app/iclipboard/id495039294?mt=12 2
Keyboard Maestro https://www.keyboardmaestro.com/  
Paste https://pasteapp.io/  
PopChar https://www.ergonis.com/products/popcharx/ 3
TextExpander https://textexpander.com/  
TypeIt4Me https://typeit4me.com/  
Typinator https://www.ergonis.com/products/typinator/ 3
Yoink! https://eternalstorms.at/yoink/mac/  
  1. “Good old Butler’s clipboard history and generator use ”org.nspasteboard.AutoGeneratedType“, ”.ConcealedType“, ”.RestoredType“, and ”.TransientType“, along with some of the original types that inspired NSPasteboard.org, such as TypeIt4Me’s ”com.typeit4me.clipping“, Typinator’s ”Pasteboard generator type“, and my own ”de.petermaurer.TransientPasteboardType“, as also seen in vintage Text(Ex)pander versions.”
  2. Appears to be abandoned.
  3. Please see Ergonis’ page with details of their pasteboard support.
  4. Incorrectly adds org.nspasteboard.ConcealedType to non-password items and also adds org.nspasteboard.TransientType to all items, which isn’t right.

If your application is not listed or your application is listed and you’d like to add notes, please submit details per “Discussion” above.

Document History

Contact

tempelmann+utiscc@gmail.com

Or submit a change to this page through github