#+TITLE: Elfeed layer #+HTML_HEAD_EXTRA: [[file:img/elfeed.png]] * Table of Contents :TOC_4_org:noexport: - [[Description][Description]] - [[Install][Install]] - [[Layer][Layer]] - [[Setup feeds][Setup feeds]] - [[With Org][With Org]] - [[Manually][Manually]] - [[Server][Server]] - [[Key Bindings][Key Bindings]] - [[Troubleshooting][Troubleshooting]] - [[Database empty at first start][Database empty at first start]] - [[Queue timeout exceeded][Queue timeout exceeded]] * Description This layer enables [[https://github.com/skeeto/elfeed][Elfeed]], a web feeds client which supports both Atom and RSS feeds. It'll optionally enable supporting packages, such as =elfeed-web= and =elfeed-org=. * Install ** Layer To use this configuration layer, add it to your =~/.spacemacs=. You will need to add =elfeed= to the existing =dotspacemacs-configuration-layers= list in this file. By default, =elfeed= stores its database under =~/.elfeed=. ** Setup feeds *** With Org It is recommended to manage your feeds list and tags via org files, this is possible thanks to [[https://github.com/remyhonig/elfeed-org][elfeed-org]] package. To define a list of org files: #+BEGIN_SRC emacs-lisp (elfeed :variables rmh-elfeed-org-files (list "~/.emacs.d/private/elfeed1.org" "~/.emacs.d/private/elfeed2.org")) #+END_SRC Checkout [[https://github.com/remyhonig/elfeed-org][elfeed-org]] documentation to see the format of that file. Here is an example of such a file (note the usage of org tags to tag your feeds) #+BEGIN_SRC org * Blogs :elfeed: ** entry-title: \(linux\|linus\|ubuntu\|kde\|gnome\) :linux: ** http://git-annex.branchable.com/design/assistant/blog/index.rss :mustread: ** http://feeds.feedburner.com/InformationIsBeautiful ** [[http://orgmode.org][Org Mode Links supported as well]] ** Software Development :dev: *** Emacs :emacs:mustread: **** http://www.terminally-incoherent.com/blog/feed **** http://nullprogram.com/feed **** entry-title: \(emacs\|org-mode\) **** http://planet.emacsen.org/atom.xml *** Web Development :web: **** http://planet.phpunit.de/atom.xml **** http://feeds.feedburner.com/symfony/blog **** http://feeds.feedburner.com/qooxdoo/blog/content *** Eclipse :eclipse: **** http://blog.eclipse-tips.com/feeds/posts/default?alt=rss **** http://ed-merks.blogspot.com/feeds/posts/default **** http://feeds.feedburner.com/eclipselive **** http://www.fosslc.org/drupal/rss.xml :video: #+END_SRC *** Manually To explicitly setup the list of feeds, set the value of =elfeed-feeds= variable in your =.spacemacs= file. #+BEGIN_SRC emacs-lisp (elfeed :variables elfeed-feeds '(("http://nullprogram.com/feed/" blog emacs) "http://www.50ply.com/atom.xml" ; no autotagging ("http://nedroid.com/feed/" webcomic))) #+END_SRC Check documentation for =elfeed-feeds= for more information about this variable (~SPC h d v elfeed-feeds RET~). ** Server Elfeed comes with a simple [[https://github.com/skeeto/elfeed#web-interface][web interface]] to browse its database. You can manually start it by calling =elfeed-web-start= or by setting =elfeed-enable-web-interface= to =t= which will start the web automatically when Emacs starts. #+BEGIN_SRC emacs-lisp (elfeed :variables elfeed-enable-web-interface t) #+END_SRC By default web interface is available on [[http://localhost:8080/elfeed/][localhost:8080/elfeed]]. You can change the default port by changing the value of =httpd-port=. * Key Bindings | Key Binding | Description | |-------------+--------------| | ~SPC a f~ | start elfeed | Use =SPC ?= to discover major-mode key bindings. | Key Binding | Description | |-------------+---------------------------------------------------| | ~c~ | compact feed db | | ~gr~ | update all the feeds | | ~gR~ | force refresh view of the feed listing | | ~gu~ | unjam elfeed if it is slow due to slow connection | | ~o~ | load OPML | | ~q~ | quit main window, or item view buffer. | | ~w~ | start web server | | ~W~ | stop web server | In =elfeed-show= mode, you can use the following bindings: | Key Binding | Description | |-------------+------------------| | ~q~ | quit show window | | ~C-j~ | Next entry | | ~C-k~ | Previous entry | * Troubleshooting ** Database empty at first start Be sure that you added some feeds first then load your feeds with ~gr~ in evilified buffer. Or ~M-x elfeed-update~. ** Queue timeout exceeded If you are getting "Queue timeout exceeded" errors, try increasing the value of =url-queue-timeout=. #+BEGIN_SRC emacs-lisp (elfeed :variables url-queue-timeout 30) #+END_SRC