Kelson01 Posted January 6, 2022 Share Posted January 6, 2022 I use a workflow that will reveal my recently taken screenshots in Alfred. By default it will reveal the screenshot in finder, but I also want to be able to paste the screenshot on action. I added a "copy to clipboard" block to be trigged with the command modifier and when I use it it copies the path to the clipboard instead of the file. I can't seem to figure out how to copy the FILE to the clipboard instead of the path. I can file action it within Alfred and copy the file to the clipboard and that does work but I can't seem to figure out how to do it from within an Alfred workflow to be triggered by a branched connection with a modifier. After all that is faster & I'd rather do it that way. How can I do this? Thanks! Link to comment
deanishe Posted January 6, 2022 Share Posted January 6, 2022 3 hours ago, Undertaker01 said: How can I do this? You need to put a file:/// URL on the clipboard with data type public.file-url. Here is a script (Language = "/usr/bin/osascript (JavaScript)") that will put the first file passed in on the clipboard: ObjC.import('AppKit'); function run(argv) { const pboard = $.NSPasteboard.generalPasteboard; // convert first command-line argument to file:/// URL let url = $.NSURL.fileURLWithPath(argv[0]); // put URL on clipboard as "public.file-url" pboard.clearContents; if (!pboard.setStringForType(url.absoluteString, $.NSPasteboardTypeFileURL)) { throw new Error('failed to put URL on pasteboard'); } } 3 hours ago, Undertaker01 said: Could you stop posting screenshots of Alfred and your workflows all the time? It's pointless. Kelson01 1 Link to comment
Kelson01 Posted January 6, 2022 Author Share Posted January 6, 2022 That works, except I see it on my clipboard in clipboard history and it lets me select it and paste it from there but command + V doesn't paste the image in any applications I try. Is that because it's using the odd way of formatting? Is there a way around that? Link to comment
deanishe Posted January 6, 2022 Share Posted January 6, 2022 8 minutes ago, Undertaker01 said: Is that because it's using the odd way of formatting? What odd way of formatting? Look, you need to be specific about what you're doing and what is/isn't happening. I can't tell you why something isn't pasting properly in an application when I have no idea what you're copying or which application you're pasting it into. 10 minutes ago, Undertaker01 said: doesn't paste the image It's a file path, not image data. They're not the same thing. If pasting an image into some graphics program is what you're trying to do, then you should have said so. Link to comment
Kelson01 Posted January 6, 2022 Author Share Posted January 6, 2022 1 hour ago, deanishe said: If pasting an image into some graphics program is what you're trying to do, then you should have said so. Ideally I'd want something that would work for pasting into finder or a graphics program. I asked if I could copy the actual image to the clipboard instead of the finder path of the image. One would think there'd be something built into Alfred's workflow items that could achieve that, after all there's a built in file action for it, I don't know. Link to comment
deanishe Posted January 7, 2022 Share Posted January 7, 2022 5 hours ago, Undertaker01 said: I asked if I could copy the actual image to the clipboard instead of the finder path of the image. Well that certainly isn't clear from your first post: 11 hours ago, Undertaker01 said: how to copy the FILE to the clipboard instead of the path. Link to comment
Kelson01 Posted January 7, 2022 Author Share Posted January 7, 2022 Sorry - Do you know of a way to achieve that? Copy the image to the clipboard with a given path? Link to comment
deanishe Posted January 7, 2022 Share Posted January 7, 2022 ObjC.import('AppKit'); function run(argv) { let pboard = $.NSPasteboard.generalPasteboard, path = argv[0], image = $.NSImage.alloc.initWithContentsOfFile(path); pboard.clearContents; if (!pboard.setDataForType(image.TIFFRepresentation, $.NSPasteboardTypeTIFF)) { throw new Error('failed to put image on pasteboard'); } } Link to comment
Kelson01 Posted January 7, 2022 Author Share Posted January 7, 2022 41 minutes ago, deanishe said: ObjC.import('AppKit'); function run(argv) { let pboard = $.NSPasteboard.generalPasteboard, path = argv[0], image = $.NSImage.alloc.initWithContentsOfFile(path); pboard.clearContents; if (!pboard.setDataForType(image.TIFFRepresentation, $.NSPasteboardTypeTIFF)) { throw new Error('failed to put image on pasteboard'); } } Thanks so much! Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now