org-annotation-helper.el – using org-mode as a bookmark manager, a knowledge base, a research tool and more!
Table of Contents
We want to be able to pass a URL, a document title and a selected region directly from a web browser to a running instance of Emacs.
Oveview
You select a region on a web page, click a bookmarklet and a link to the web page, page title and selected region is saved in a designated Org file.
Components
New protocols
We define a remember:// url handler in the browser and use a shell
script to handle the protocol. This script passes the information to
a running Emacs process (using emacsclient or gnuclient). We use
bookmarklets to create the remember:// urls dynamicly.
The protocol types currently recognized are:
- remember://
- start `remember' with the url and title filled in
- annotation://
- similar to `planner-annotation-as-kill' (org?)
The urls used internally will have the following form:
remember://<the web page url>::remember::<the title>::remember::<selection>
The title will be url-hex-encoded.
The bookmarklets
javascript:location.href='remember://' + location.href + \ '::remember::' + escape(document.title) + '::remember::' + escape(window.getSelection())
javascript:location.href='annotation://' + location.href + '::remember::' +\ escape(document.title) ;;
The handler
#!/bin/sh # org-annotation-helper -- pass a remember-url to emacs # # Author: Geert Kloosterman <g.j.kloosterman@gmail.com> # Date: Sat Nov 19 22:33:18 2005 if [ -z "$1" ]; then echo "$0: Error: no arguments given!" 1>&2 exit 1 fi # To test uncomment following line #echo $1 >> /tmp/remember.out emacsclient --eval "(progn (bzg/org-annotation-helper \"$1\" ) nil)"
Installation
Install org-annotation-helper.el
Install this script and require it in your .emacs (or wherever you want to do it)
(require 'org-annotation-helper)
Install the remember script
Save the handler as a script, and make sure it is executable, i.e. remember
Try it:
- Make sure emacs is running and you have started its server mode using (server-start) in .emacs or M-x server-start.
- Run this command from the command line:
$ remember 'remember://http%3A//orgmode.org/::remember::Org-Mode%20Homepage::remember::Notes'
- Emacs should now show a remember window with a URL to remember.org
Add two bookmarklets
For firefox:
- Right click on the bookmarks area of Firefox.
- Select new bookmark.
- In location fill the javascript code above (the bookmarklet)
- Make sure "Load this bookmark in the sidebar is deselected
Try it. You should have now a url that starts with "remember://" and your browser will not know what do to with it.
Add the handler for the "remember://" URI
Firefox
To add a protocol handler (eg: remember://) in Firefox, take the following steps:
- type in "about:config" in the location bar
- right click, select New –> String
- the name should be "network.protocol-handler.app.remember"
- the value should be the executable, eg. "org-annotation-helper".
At least under Linux this does not need to be the full path to the executable.
See http://kb.mozillazine.org/Register_protocol for more details.
Opera
In Opera add the protocol in the Preferences->Advanced->Programs dialog.
Configure a template
I personally use the following template for this mode (all as one line):
("Weblink" ?w "* %c\n :PROPERTIES:\n :CREATED: %U\n :END:\n - link: %:link\n - Quote:\n\n %?%:region\n\n - End Quote\n\n" "bookmarks.org" "WebLinks" )
-
%c - will be replaced with the hyperlink to the page, displaying the title of the page
-
%:link - will be replaced with the address of the page
-
%i - will be replaced with the selected text from the browser
-
%:region - will be replaced by the selected text from the web page (special characters will be in hex-code.)
-
%U - will be replaced by the current date
-
%? - the cursor will be placed here (you may also replace this
escape with
%&to make it completely non-interactive.)
By default the new remember notes are placed in the bookmarks.org file under the "Web links" section, but it can be easily overriden with C-u C-c C-c
Step 5:
Enjoy