Code SnippetsAccess klipper clipboard on CLI under KDE4 Syndicate content

Wed, 08/13/2008 - 23:12

Here’s a little script you can save in your path and do things like

  1. # paste current clipboard into file
  2. clipboard > "some_file"
  3. # copy some file into clipboard
  4. cat "some_file" | clipboard

Actually I find it rather useful so I thought I will have to share it.

Since KDE4 D-BUS is used throughout KDE and thus in Klipper as well. IMO they should really rework the output of dbus-send or add some more flags (what about --quiet). Well that’s the reason why the script below is somewhat long. But nothing a little bit of bash+awk magic couldn’t cope with:

  1. #!/bin/bash
  2.  
  3. # check for stdin
  4. # since we don't want to wait endlessly we set a timeout
  5. # a pity `read` only supports seconds and no fractions...
  6. read -t 1 stdin
  7. if [[ "$stdin" != "" ]]; then
  8. # get the rest of stdin
  9. stdin=$stdin$(cat)
  10. # oh, nice - user input! we set that as current
  11. # clipboard content
  12. dbus-send --type=method_call --dest=org.kde.klipper \
  13. /klipper org.kde.klipper.klipper.setClipboardContents \
  14. string:"$stdin"
  15. exit
  16. fi
  17.  
  18. # if we reach this point no user input was given and we
  19. # print out the current contents of the clipboard
  20. # note: I hate the output of dbus, dcop was much easier in that regard!
  21. dbus-send --print-reply --dest=org.kde.klipper /klipper \
  22. org.kde.klipper.klipper.getClipboardContents | awk '
  23. BEGIN { output = ""; }
  24. {
  25. if ( NR > 1 ) {
  26. output = output $0 "\n";
  27. }
  28. }
  29. END {
  30. print substr(output, 12, length(output) - 13);
  31. }'

As usually, save the file (attached below) in your $PATH and make it executable.

PS: Thanks to Martin Vidner for his article on D-BUS btw. - it gave me the proper dbus commands.

AttachmentSize
clipboard.sh946 bytes

Comments

This is awesome. I extended Thu, 05/06/2010 - 10:09 — Morten Slott Hansen (not verified)

This is awesome. I extended this with xmlcopyeditor and KDE4 hotkeys to have a quick way to get the clipboard content into an XML editor.

I created a script called xmlCopyEditor_readClipboard.sh

  1. #!/bin/sh
  2. /home/msh/bin/clipboard.sh > /tmp/clipboard.txt
  3. /usr/bin/xmlcopyeditor /tmp/clipboard.txt

And attached it to a hotkey combination meta + shift + x

This has made my life so much better - hope others can find this usefull!

EDIT: fixed formatting, regards - Milian

Hi, interesting post really. Tue, 10/20/2009 - 14:58 — Joetke (not verified)

Hi, interesting post really. But I wonder whether KDE 4 is mandatory because when I run your script I got this response: Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.kde.klipper was not provided by any .service files Regards.

Yes, this version is for KDE Thu, 10/22/2009 - 00:44 — Milian Wolff

Yes, this version is for KDE 4. I once had a KDE 3 version, but it looks like I lost it. It was much easier though, you’ll just have to exchange the DBUS stuff with the good old DCOP from KDE 3.

Thanks, it works flawlessly. Thu, 11/05/2009 - 14:38 — joetke (not verified)

Thanks, it works flawlessly. Regards from Strasbourg, France.

I have just found the answer Wed, 08/12/2009 - 01:21 — Anonymous (not verified)

I have just found the answer to my question. The trick is not to use “dbus-send”. It works with qdbus org.kde.klipper /klipper getClipboardHistoryItem 0 qdbus org.kde.klipper /klipper getClipboardHistoryItem 1 qdbus org.kde.klipper /klipper getClipboardHistoryItem 2

Is there some way to access Tue, 08/11/2009 - 22:23 — Anonymous (not verified)

Is there some way to access the klipper history from the command line?

Just look for yourself: run Wed, 08/12/2009 - 01:09 — Milian Wolff

Just look for yourself:

  1. run qdbusviewer
  2. go to org.kde.klipper
  3. go to klipper/org.kde.klipper.klipper
  4. pick any *history* method you’d like

For inspiration on how to use those stuff in bash see my script above.

AWESOME! I was sick of Thu, 07/30/2009 - 02:31 — Sam Tresler (not verified)

AWESOME! I was sick of ctl-shift-V’ing 40 lines at a time so I googled and found this. Precisely what I was looking for, thank you.

Here’s a little script you Thu, 11/20/2008 - 20:59 — Antonio (not verified)

Here’s a little script you can save in your path and do things like

cat “some_file” > clipboard

Of course, it destroyed the “clipboard” file :-)

Greetings from Spain!

P.S. I suppose it’s

  1. cat "some_file" | clipboard

Thanks, fixed. Wed, 11/26/2008 - 18:42 — Milian Wolff

Thanks, fixed.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • You can use Markdown syntax to format and style the text. Also see Markdown Extra for tables, footnotes, and more.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <pre>.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options