En X11 debe comunicarse con el propietario de la selección, preguntar sobre los formatos admitidos y luego solicitar los datos en el formato específico. Creo que la forma más fácil de hacerlo es utilizando kits de herramientas de ventanas existentes. P.ej. con Python y GTK:
#!/usr/bin/python
import glib, gtk
def test_clipboard():
clipboard = gtk.Clipboard()
targets = clipboard.wait_for_targets()
print "Targets available:", ", ".join(map(str, targets))
for target in targets:
print "Trying '%s'..." % str(target)
contents = clipboard.wait_for_contents(target)
if contents:
print contents.data
def main():
mainloop = glib.MainLoop()
def cb():
test_clipboard()
mainloop.quit()
glib.idle_add(cb)
mainloop.run()
if __name__ == "__main__":
main()
salida tendrá el siguiente aspecto:
$ ./clipboard.py
Targets available: TIMESTAMP, TARGETS, MULTIPLE, text/html, text/_moz_htmlcontext, text/_moz_htmlinfo, UTF8_STRING, COMPOUND_TEXT, TEXT, STRING, text/x-moz-url-priv
...
Trying 'text/html'...
I asked <a href="http://superuser.com/questions/144185/getting-html-source-or-rich-text-from-the-x-clipboard">the same question on superuser.com</a>, because I was hoping there was a utility to do this, but I didn't get any informative responses.
Trying 'text/_moz_htmlcontext'...
<html><body class="question-page"><div class="container"><div id="content"><div id="mainbar"><div id="question"><table><tbody><tr><td class="postcell"><div><div class="post-text"><p></p></div></div></td></tr></tbody></table></div></div></div></div></body></html>
...
Trying 'STRING'...
I asked the same question on superuser.com, because I was hoping there was a utility to do this, but I didn't get any informative responses.
Trying 'text/x-moz-url-priv'...
http://stackoverflow.com/questions/3261379/getting-html-source-or-rich-text-from-the-x-clipboard
¡Funciona bien, muchas gracias! Envié esta funcionalidad a una interfaz de línea de comandos primordial: http://github.com/intuited/clipcli ........................... ....... ¿Algún consejo sobre cómo analizar el objetivo TIMESTAMP? No parece ser una marca de tiempo UNIX. Presumiblemente hay información en la documentación de GTK; Solo me tomé el tiempo para buscarlo de manera superficial. – intuited
El tipo TIMESTAMP definido por el protocolo X11 no tiene nada que ver con los segundos desde Epoch. Este es un entero sin signo de 32 bits que contiene el tiempo en milisegundos, generalmente desde el inicio del servidor X. No creo que tenga un uso directo para una aplicación de usuario final. – rkhayrov
Me gustaría una versión de KDE de esto. ¿Alguna sugerencia? La búsqueda de "Python API de portapapeles kde" no arrojó nada útil para mí. – MountainX