> On Jun 6, 2024, at 4:41 PM, Juergen Fenn <jf...@gmx.net> wrote:
> 
> 
> 
> Am 06.06.24 um 17:17 Uhr schrieb Ihor Radchenko:
>> Juergen Fenn <jf...@gmx.net> writes:
>> 
>>> Am 06.06.24 um 08:20 Uhr schrieb Visuwesh:
>>>> Thanks for the analysis.  Given that Alan says GNUStep cannot handle
>>>> non-text clipboard items, I cannot propose anything myself.  It would be
>>>> nice if a Mac user can write a report and send it to the Emacs
>>>> developers.  Perhaps Juergen can do it?
>>> 
>>> Of course, I /could/ do this, but given the fact that you have already
>>> found out about /some/ internals wouldn't it be better a macOS/NextStep
>>> developer would look into this in the first place and hence write the
>>> report with some somre insight?
>> 
>> Unfortunately, there are no MacOS developers among Org mode maintainers.
>> I personally do not even have access to MacOS for testing.
>> 
>> Since you at least can test things on MacOS, it would be helpful if you
>> can create the recipe suitable for Emacs devs to reproduce the
>> problem. They may also ask extra information from your MacOS.
>> 
> 
> I see. Thanks for explaining. So, I will write a bug report that draws
> on our discussion and send it to emacs-devel over the weekend.
> 
> My switch from Ventura to Sonoma shortly may make things more
> complicated, as I cannot foresee in howmuch the two platforms differ
> under the hood, but I'm afraid I cannot postpone the upgrade.

A few years ago, I wrote a small package for pasting PNG and PDF data from the 
Mac clipboard into org documents as attachments, which I still use:  
https://github.com/jdtsmith/org-mac-image-paste. 

With the recent work on yank-media I'm hopeful I can retire this package soon.  
I found I could pull PDF data to file from the clipboard via AppleScript (and 
display in the emacs-mac build using its image-io backend), but used 
pngpaste[1] tool for PNG data.  When an image is on the clipboard, PNG data are 
indeed available from the clipboard («class PNGf»), as can be seen via 
AppleScript.  You can use AppleScript to inquire about the state of the 
clipboard.  For example, after taking a screenshot, I see:

% osascript -e "clipboard info"
«class PNGf», 121849, «class 8BPS», 401974, GIF picture, 21636, «class jp2 », 
21831, JPEG picture, 35062, TIFF picture, 369790, «class BMP », 366218, «class 
TPIC», 285265

On copying an image from a website, I get:

% osascript -e "clipboard info"
TIFF picture, 91686, URL, 81, «class urln», 6, «class utf8», 81, «class rtfd», 
2652, «class weba», 5679, «class HTML», 800, «class 8BPS», 103154, GIF picture, 
681, «class jp2 », 5455, JPEG picture, 1059, «class PNGf», 6282, «class BMP », 
44298, «class TPIC», 8066, «class ut16», 164, string, 81, Unicode text, 162

For images grabbed from web-pages, you can actually get the URL information if 
you like and include that in or near the attachment link.  

Here's after copying a GIF file from the Finder:

% osascript -e "clipboard info"
«class furl», 41, «class ut16», 24, «class utf8», 11, «class icns», 1137764, 
Unicode text, 22, string, 11, «class 8BPS», 1295026, GIF picture, 74698, «class 
jp2 », 110628, JPEG picture, 62209, TIFF picture, 4198020, «class PNGf», 
305211, «class BMP », 4194442, «class TPIC», 796024

Notice the file-URL there, which you can get (here using the JXA=javascript 
flavor of AppleScript, with a UTI for the file-url, which is apparently the 
more modern way to do it):

% osascript -l JavaScript -e 'ObjC.import("AppKit"); 
$.NSPasteboard.generalPasteboard.stringForType("public.file-url");'
file:///Users/xxyz/Desktop/output.gif

You can even coerce the clipboard to be in a certain format:

% osascript -e "clipboard info"
TIFF picture, 35766, URL, 37, «class urln», 7, «class utf8», 37, «class rtfd», 
1082, «class weba», 3643, «class HTML», 820, «class 8BPS», 9884, GIF picture, 
434, «class jp2 », 4617, JPEG picture, 1268, «class PNGf», 1527, «class BMP », 
32538, «class TPIC», 2446, «class ut16», 76, string, 37, Unicode text, 74

% osascript -e "set the clipboard to (the clipboard as JPEG picture)"

% osascript -e "clipboard info"                                      
JPEG picture, 1268, «class 8BPS», 8622, GIF picture, 687, «class jp2 », 4671, 
TIFF picture, 27704, «class PNGf», 2508, «class BMP », 24534, «class TPIC», 4372

My knowledge doesn't go any deeper than that but thought I'd share what I know. 
 

[1] The code for pngpaste might be informative: 
https://github.com/jcsalterego/pngpaste/blob/main/pngpaste.m.   

Reply via email to