Using python, one can read in an image:
from PIL import Image, ImageTk
image = Image.open("test.jpg")
Then one can write to klipper in the following way:
import dbus
bus = dbus.SessionBus()
proxy = bus.get_object("org.kde.klipper","/klipper")
iface = dbus.Interface(proxy,"org.kde.klipper.klipper")
iface.setClipboardContents("text")
But when I try to write an image I just opened – it says it can’t accept it:
iface.setClipboardContents(image)
TypeError: Expected a string or unicode object
So my question is: “how to put an image to klipper with python?”
Found some solution – not with python but with bash, and it doesn’t work for remote pictures – works only for local ones (because of gwenview). Here is a bash script:
This could also be done with python of cource, but since I make a system call, not read in a picture – there’s no need to use python.
To explain it – suppose You downloaded an image to ~/Downloads. Then if you the this script it will finds the freshest file in there, opens it with gwenview, copies it to clipboard (!), then closes gwenview.
I think to work properly – no other gwen’s could be running. And if You want to use it – it’s wise to bind the script to a hotkey.
The reason I was looking for such a script – is because I want to switch to keyboard-driven webbrowser (such as Conkeror or Pentadactyl) – and it allows to save image quickly – while I mostly need to paste it to some .odt file).
This script can further be made a daemon – which will watch the Downloads dir. But now I to write a script which will download image, and put to clipboard automatically – please see my next question.
The way to find qdbus command you might need – is to open
and find the app you need, then the command you need, and then make call similarly it’s done to, e.g. lock the screen: