I spent part of today cleaning up my Emacs workflow. Specifically, how I capture emails and links into org-mode
I already wrote about how I used org-capture (here and here). It's
pretty clean and easy but there was one thing that always nagged at
me. When I capture from mu4e within Emacs by hitting
C-c m it's set
up to automatically populate the capture template with a link to the
email labelled with the email's subject. When I do it from Gmail or
to store a web link as a bookmark, I have to copy and paste the link
That's where org-protocol comes in. We can use org-protocol to link between a browser and Emacs.
First you have to run Emacs as a server. You can start the Emacs
(server-start) but I always run emacs using a shortcut
key bound to
emacsclient -c -a "". This runs emacsclient and
connects to my running Emacs server but if the server isn't running it
starts it. That meant that I only had to add ~(require 'org-protocol)~
to my Emacs config file.
I followed the instructions in the documentation by typing in these lines:
gconftool-2 -s /desktop/gnome/url-handlers/org-protocol/command '/usr/local/bin/emacsclient %s' --type String gconftool-2 -s /desktop/gnome/url-handlers/org-protocol/enabled --type Boolean true
but that didn't seem to work.
I ended up following the instructions I found in this post creating a
org-protocol.desktop in the folder
[Desktop Entry] Name=org-protocol Exec=emacsclient %u Type=Application Terminal=false Categories=System; MimeType=x-scheme-handler/org-protocol;
and then running
This seemed to do the trick.
I also modified my link capture template:
("l" "Link" entry (file+headline "~/Sync/orgfiles/links.org" "Links") "* %a %^g\n %?\n %T\n %i")
Finally, to get things basically to work, I installed this extension. I configured it to use my "l" or link capture template. Once everything was installed I went to a web site and clicked the plugin. I was popped into Emacs with the capture template up and filled in. I did it again, this time marking text and hitting the button and again everything worked.
Looking at the template, the
%a is replaced by the web page link,
%i with the marked text, the
%T with the timestamp and the
cursor is left at the
I wanted to make one more change. I wanted to also use this for
storing Gmail links. The problem was that I wanted my links to be
sored in a file named
links.org while I wanted my Gmails stored
under my main org file
i.org. By reading the org-protocol page I
found that I could just create a bookmark.
Copied mostly from the docs, I made a bookmark with this as the link (all in one line):
It worked perfectly.
This time I used this as the template:
("m" "Mail To Do" entry (file+headline "~/Sync/orgfiles/i.org" "To Do and Notes") "* TODO %a\n %?" :prepend t)
That's it. Now I can store emails in Emacs or Gmail as well as bookmarks without any cut and paste.
Here's a video with the walkthrough:Tweet