Я считаю, что причина, по которой сценарий Льва Алексеева не работает иногда (в некоторых системах), объясняется в этом ответе на аналогичный вопрос. Важная часть цитируется здесь:
Одна странность, которая отличается от большинства других систем: если программа, владеющая выделением (буфер обмена), исчезает, то же самое происходит и с выделением.
Когда я запускаю скрипт Лео в оболочке python, он работает, пока работает оболочка. Поэтому я думаю, что данные буфера обмена теряются, когда скрипт завершается. Решение, опубликованное в ответе, работает на меня:
#!/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()
Обновление от _Vi: для полноты добавьте скрипт clipboard-> file:
#!/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", {})