Why FeedCircuit?

The idea of creating FeedCircuit came from its primary usage scenario: you download news in the morning and read them on the way to work (or home) using your portable device. The problem is that most news readers only download feed itself and supposes that you are online while reading news. This is either impossible (no internet on the way to work) or simply inconvenient, for instance, because of GPRS slowness. Another problem is that many web pages are not suitable to be read on device's small screen.

How does it work?

FeedCircuit converts RSS or Atom feeds to html for offline reading in web browser. Unlike other news readers it may cache resources referenced by feeds, so you don't have to go online to read them. FeedCircuit also uses some heuristics to reformat web pages to be more suitable for reading on small screens.

How to set up a feed?

The main setting that controls FeedCircuit behavior is "Content". When "Content" is set to "Do nothing" FeedCircuit download feed and convert it to a web page and nothing else. When "Content" is set to "Cache" FeedCircuit downloads and caches each web page referenced by feed items. Before caching FeedCircuit tries to adapt the web page to tablet's screen size. "Inline" is the same as "Cache" except that downloaded web pages are inlined into feed web page.

FeedCircuit is able to use different methods of content adaptation. By default FeedCircuit first tries to find printable version of web page and use it. It uses some well known keywords such as "printable version" etc. to find a link to printable version. This keywords can be changed via "Printable version link" setting. Sometimes printable version is not suitable for tablet's screen, in this case just make "Printable version link" blank. When FeedCircuit fails to find a printable version it tries his own heuristics to extract page's content block without these ads, navigation panes etc. When content block is something like an article heuristics works pretty well, but, for instance, blogs or short news causes problems because sometimes FeedCircuit thinks that comments is primary content, not blog post itself. In this case another trick may help, but it requires some html knowledges. "Content tag" setting tells FeedCircuit what part of a web page should be cached. "Content tag" has following format: "tag attr1=value attr2=value", for instance, "div class=content" tells FeedCircuit to find html element "div" with attribute "class" having value "content". If methods above doesn't satisfy you there are alternative online services such as Skweezer.net that may help you to adapt web pages to tablet's screen. "Reformatting service url" setting tells FeedCircuit to use external service to convert the web page before caching. For Skweezer it should be set to "http://www.skweezer.com/s.aspx?q=%s" and to "http://www.google.com/gwt/n?u=%s" for Google. Sometimes articles are split to multiple pages. In this case FeedCircuit can either follow link to the single page version or cache all these pages. Use "Single page" to tell FeedCircuit how to distinguish a hyperlink to the single page version or "Next page link" to distinguish a hyperlink to the next page.

FeedCircuit may filter feed items by their urls. "Include urls" and "Exlude urls" are Perl regular expressions which used to filter out feed items. By default FeedCircuit keeps items downloaded not earlier than 7 days ago, this may be changed using "Days to keep" setting.

Customizing feeds appearance

Appearance of feeds and articles can be customized with using stylesheets. All you need is to put style file style.css into /home/user/.config/feedcircuit directory and all subsequently added feeds and downloaded articles will picks up the style.

It is also possible to to use per feed styles. In this case style file should be named like style.css, where id is feeds identifier. The identifier can be obtained from /home/user/.config/feedcircuit/config file. For instance, let us suppose following lines of the config file:

message count = 0
reformatter url = 
checked = False
name = Maemo news
feed id there is 88ef6d34b4de11dd8eba0013d3715103 and style file name would be 88ef6d34b4de11dd8eba0013d3715103style.css.

Deeper customization is also possible. HTML templates used to create feed's and article's pages can be changed. Putting file page.template.html into /home/user/.config/feedcircuit directory causes FeedCircuit to use it as a template for news articles pages. FeedCircuit inserts content either to "div" with id = feedcircuit-root or to template's body when such div is not found. feed.template.html works the same way for new feeds pages. item.template.html is a template of each news html. Item title is inserted into the "a" with class "feedcircuit-item-link" (or the first "a" it founds), item body goes to "div" with id = feedcircuit-item-body (or the first "div" it founds). The last thing that can be customized is a header of each refresh. default update.template.html would look like

%title, %timestamp <hr>
The trick with prepending feed's id to the file name also works for templates.

Tips and tricks.

FeedCircuit updates feeds asynchronously. This means that you don't have to wait until it updates all feeds to start reading. You also may start updating one feed and then, without waiting update completion start updating another one.


Currently there is a package for Nokia N8x0 devices. It can be installed here. For other platforms command line interface can be used. Source code can be obtained from FeedCircuit project garage page.


Maemo 5 screenshot.