Utilizando los marcos en OS X, puedo usar lo siguiente para copiar un archivo PNG a la mesa de trabajo (en C - obviamente que podría utilizar NSPasteboard con cacao):¿Cómo copiar al portapapeles con X11?
#include <ApplicationServices/ApplicationServices.h>
int copyThatThing(void)
{
PasteboardRef clipboard;
if (PasteboardCreate(kPasteboardClipboard, &clipboard) != noErr) {
return -1;
}
if (PasteboardClear(clipboard) != noErr) {
CFRelease(clipboard);
return -1;
}
size_t len;
char *pngbuf = createMyPNGBuffer(&len); /* Defined somewhere else */
if (pngbuf == NULL) {
CFRelease(clipboard);
return -1;
}
CFDataRef data = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, pngbuf,
len, kCFAllocatorNull);
if (data == NULL) {
CFRelease(clipboard);
free(pngbuf);
return -1;
}
OSStatus err;
err = PasteboardPutItemFlavor(clipboard, NULL, kUTTypePNG, data, 0);
CFRelease(clipboard);
CFRelease(data);
free(pngbuf);
return 0;
}
Estoy interesado en portar a esta funcionalidad Plataformas Linux/* BSD. ¿Cómo puedo replicar esto usando X?
muchas gracias. ¡Muy útil, con la herramienta de captura de pantalla compiz! – Drasill
¡Buen script! La siguiente entrada en superusuario también contiene un script python similar, pero solo funciona bajo gnome: http://superuser.com/questions/301851/how-to-copy-a-picture-to-clipboard-from-command-line -in-linux – qed
Sin embargo, hay formas de mejorar esto. Por ejemplo, ¿podemos hacer que mate automáticamente a gtk.main una vez que se pega el contenido del portapapeles? – qed