p0deje / Maccy

Lightweight clipboard manager for macOS
https://maccy.app
MIT License
12.68k stars 533 forks source link

Ignore dynamic pasteboard types #746

Closed kyleerhabor closed 1 month ago

kyleerhabor commented 7 months ago

Before Submitting Your Feature Request

Problem

Some pasteboard types include dynamic data and can't be ignored via the "Pasteboard types" tab. A prominent example of this is the built-in Preview app and when you edit an image. The edited portions are copied to the pasteboard with the "dyn.<...>" type, where <...> refers to a long, generated identifier. Ignoring the Preview app would work, but exclude other writes to the pasteboard (e.g. Command-C to copy the contents).

Solution

Allowing regular expressions to be used in the "Pasteboard types" tab would make it possible to ignore dynamic types. With the previous example, ^dyn\.[\w\d]+$ would appropriately match it.

Another solution may be to internally ignore types with the "dyn" namespace. I think such a solution is fine, but not as flexible for other dynamic types that may exist.

p0deje commented 7 months ago

Can you please describe the use case for this ignore? Maccy currently filters out all dyn.* types from copies so those contents are lost. This would make the edited copies similar to the original ones.

kyleerhabor commented 7 months ago

That's odd, since I'm finding that Maccy includes copies with the dyn.* type. The only reason I could imagine for this (besides it being a bug) is there being another process writing to the pasteboard with the type removed (but I doubt that is the case).

The use case is to ignore copies by some dynamic element of their type. dyn.* is one example, but it could apply to any given type, such as com.company.* (ignore copies with any type matching a reverse domain name, just to make something up).

p0deje commented 7 months ago

That's odd, since I'm finding that Maccy includes copies with the dyn.* type. The only reason I could imagine for this (besides it being a bug) is there being another process writing to the pasteboard with the type removed (but I doubt that is the case).

When you copy something, it would still have dyn.* types in the system clipboard. However, Maccy would not store them in the database, so if you select this copy in Maccy - it would not have dyn. types anymore.

The use case is to ignore copies by some dynamic element of their type. dyn. is one example, but it could apply to any given type, such as com.company. (ignore copies with any type matching a reverse domain name, just to make something up).

I get it, but can you please describe the use-case what you are trying to do and how Maccy doesn't work in this case? I tried doing some annotations in Preview.app but it didn't generate any dyn. types.

p0deje commented 1 month ago

Closing since no response for a few months. Please reopen with asked information provided.