Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

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?

share|improve this question
    
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 Jun 6 '13 at 1:12
    
Can you refer to a page that you might want to copy in this manner? –  slm Jun 6 '13 at 2:52
    
It could be any web page I happen to be browsing. Example: money.cnn.com/2013/06/05/technology/mobile/… –  MountainX Jun 6 '13 at 3:32
    
You're selecting the webpage via the source page, right? Or pieces of it anyway. –  slm Jun 6 '13 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 Jun 6 '13 at 19:46

1 Answer 1

up vote 5 down vote accepted

With a recent version of xclip (the -t option was added in 2010 but not released yet AFAICT, so you'd need 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.

share|improve this answer
    
The assumption is that you're selecting a web pages' actual source, not just browsing to it, correct? –  slm Jun 6 '13 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. –  Stéphane Chazelas Jun 6 '13 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 Jun 6 '13 at 10:58
    
It was added in 2010 (see commit), but it looks like it was never released. It's available in Debian's xclip though. –  Stéphane Chazelas Jun 6 '13 at 11:02
    
@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 Jun 6 '13 at 19:44

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.