Acredito que a razão pela qual o script Leo Alekseyev não funciona às vezes (em alguns sistemas) é explicada nesta resposta para um similar questão. Parte importante citada aqui:
One oddity that is different from most other systems: if the program owning the selection (clipboard) goes away, so does the selection.
Quando eu executo o script de Leo no shell python, ele está funcionando, desde que o shell esteja em execução. Então eu acho que os dados da área de transferência são perdidos, quando o script é finalizado. A solução postada na resposta está funcionando para mim:
#!/usr/bin/env python
import gtk
import sys
count = 0
def handle_owner_change(clipboard, event):
global count
print 'clipboard.owner-change(%r, %r)' % (clipboard, event)
count += 1
if count > 1:
sys.exit(0)
image = gtk.gdk.pixbuf_new_from_file(sys.argv[1])
clipboard = gtk.clipboard_get()
clipboard.connect('owner-change', handle_owner_change)
clipboard.set_image(image)
clipboard.store()
gtk.main()
Atualizar de _Vi: para completar, adicionar o script de arquivo de área de transferência & & gt ;:
#!/usr/bin/python
import gtk, pygtk
pygtk.require('2.0')
import sys, os
clipboard = gtk.clipboard_get()
img = clipboard.wait_for_image()
img.save(sys.argv[1], "png", {})