12

I want to be able to highlight a section of a web page and copy it to the clipboard then save it to my local disk as markdown. I need an efficient way to do that.

My current cumbersome method is:

  1. highlight section and copy to clipboard
  2. open Libre Office Writer
  3. paste into Writer
  4. save Writer doc as HTML
  5. open terminal
  6. cd to the directory where I saved the HTML
  7. pandoc -s -r html /home/me/a/b/mydoc.html -o /home/me/a/b/mydoc.md

Obviously, I need a better method! Any suggestions?

5
  • I believe the getting HTML source or rich text from the X clipboard request on Stackverflow may provide guidance in obtaining what you're looking for.
    – tink
    Commented Jun 6, 2013 at 1:12
  • Can you refer to a page that you might want to copy in this manner?
    – slm
    Commented Jun 6, 2013 at 2:52
  • It could be any web page I happen to be browsing. Example: money.cnn.com/2013/06/05/technology/mobile/…
    – MountainX
    Commented Jun 6, 2013 at 3:32
  • You're selecting the webpage via the source page, right? Or pieces of it anyway.
    – slm
    Commented Jun 6, 2013 at 10:50
  • As StephaneChazelas mentioned in the comments below, I am just selecting text from Firefox (or other browser) normally. I am NOT going to the source view.
    – MountainX
    Commented Jun 6, 2013 at 19:46

1 Answer 1

15

With a recent version of xclip (the -t option was added in 2010 but not released until version 0.13 in 2016, so in 2013 you'd have had to get it from subversion, or use the one packaged in Debian).

xclip -o -selection clipboard -t text/html | pandoc -r html -w markdown

And if you want to make that back into the clipboard:

xclip -o -selection clipboard -t text/html |
  pandoc -r html -w markdown |
  xclip -i -selection clipboard

Which you can do in a loop with:

while :; do
  xclip -o -selection clipboard -t text/html |
    pandoc -r html -w markdown |
    xclip -i -selection clipboard -quiet
done

The second xclip, with -quiet will block until something else claims the CLIPBOARD selection, that is until you select something else somewhere.

That way, you can copy back and forth between your browser and whatever you're pasting the markdown in.

@tink also has a useful link to a similar question on StackOverflow where you can find how to implement it in python.

10
  • The assumption is that you're selecting a web pages' actual source, not just browsing to it, correct?
    – slm
    Commented Jun 6, 2013 at 10:49
  • @slm, no. In browsers like firefox or chrome, when you select and/or copy some text in a (rendered) web page, the browser sets the selection both as a string (for text applications to use) and as html (for applications that understand it like libreoffice to use). Those are called targets. xclip -selection clipboard -t TARGETS will list the targets/formats that Firefox sets after you copy some text from there. Commented Jun 6, 2013 at 10:53
  • Is this a new feature in xclip? I get a -t: No such file or dir. I'm using ver: 0.12.
    – slm
    Commented Jun 6, 2013 at 10:58
  • 1
    @StephaneChazelas Awesome solution! I got xclip from here: pkgs.org/debian-sid/debian-main-amd64/… and it installed in Kubuntu 12.04 with no issues at all. This is exactly the type of solution I hoped for. Great!
    – MountainX
    Commented Jun 6, 2013 at 19:44
  • 2
    @slm: My working version of xclip (installed from the link above) also shows version 0.12, but the deb is named xclip_0.12+svn84-2_amd64.deb. This one does include the -t option and that option is described in its man page. But the man page doesn't show the text/html option, and I probably would not have figured any of this out on my own.
    – MountainX
    Commented Jun 6, 2013 at 19:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .