An RSS/Atom newsreader that sucks less

Canto | FAQ

Updated for 0.7.x. Older versions here

The compulsory Frequently Asked Questions page.

Why Canto?

The interface.

I'm not sure how people can stand three-pane readers. Graphical or console, I don't want to tab around multiple windows to read my news. The way I read, I want all of the headlines out where I can see them with minimal cruft. It should be one key stroke to do most common actions.


Everything used to configure Canto is actually part of the Python interpreter. It has all of the power of Python anywhere. Hooks are provided to allow you to perform actions on particular events (start, stop, update, resize, select, unselect, new), filters allow you to filter items out on arbitrary terms (globally or on a feed basis), and intelligent keybinds allow you to script your way to pretty much anything you want.


The point being that, with all of Python behind it, you can manipulate Canto in new and inventive ways without any help from me. My limited vision doesn't encumber how you use the software.


All of the drawing code is done by a simple class full of literate Python. If you want to modify how anything is drawn to the screen, subclass the renderer, change anything you want and voila... Canto now draws differently. Definitely for advanced users, but extremely powerful.

Does Canto support Atom feeds?

Yes. Canto uses feedparser which is capable of parsing virtually any syndicated news format on the planet and aside from that, Canto doesn't care if a feed is any version of RSS, Atom, or any other feed type.

Does Canto support OPML?

Yes, as of 0.5.2, Canto support importing from/export to OPML, as well as adding feeds from an OPML file at runtime

Does Canto support Unicode/UTF-8?

Yes. As long as your terminal and its font can support it, then Canto can output it. If you can't see certain characters try using a pan-Unicode font (like unifont) with your terminal. Then you can read all of your Unicode Klingon characters.

The interface is full of ????s, WTF man?

Your locale isn't UTF-8 compatible. You should probably change that if you expect your terminal apps to do anything smart with non-ASCII characters (like the ones used to draw the interface). More info here and here.

What does Canto require?

As of version 0.7.8 Canto only requires Python 2.5+ (although 2.4 may work, it's not tested at all) and chardet.

Canto < 0.7.8 requires feedparser in addition to the above. Canto < 0.7.6 on Python < 2.6 requires the multiprocessing library.

To build Canto: GCC or another standards compliant C compiler, ncurses header files, and python header files (for compiling the core code).

Why ncurses?

I am one of those internet nutjobs that believe that the mouse shouldn't have made it as far as it has in the world. I like to be able to do everything from the keyboard, and a lot of times that means using console apps because they seem to be the only ones not following the click-button paradigm (with a shoutout to Vimperator for making Firefox an exception).

There's also the fact that virtually every Unix-like distro has ncurses installed by default, so that the user doesn't have to choose apps based on what will best integrate into their desktop. How many times have you found a piece of software and are disappointed because it doesn't really fit with everything else? People in Gnome running Amarok know exactly what I'm talking about.

Then there's the fact that I like to read news from in SSH sessions (very nice when you're on campus, or at work).

And finally, I just really dig text-interfaces. XMonad and have six million xterms running with vim,mutt, and moc at all times.

Why Python?

The previous iteration of this project was in C (NRSS, which is deprecated in favor of Canto now). Now C is great. I love C. I do my daily work in C and I enjoy it.

But when it comes to having fun while coding, Python is the way to go. I know you take a speed hit, but that's why the core drawing logic is in C (surprise!). And there's one thing that I've learned while bugfixing NRSS, and that's that it's no fun.

In addition, Mark Pilgrim's excellent feedparser and chardet libraries are native to Python, and they make life a lot easier.

Lastly, Python is also second only to Perl in system adoption and... God knows I wouldn't want to write this in Perl =).

What license is Canto under?

Canto is GPLv2 software. Just like all the other software real men write.

What platform does Canto run on?

Canto should run on any Linux system with the required libraries, regardless of architecture. Other platforms like *BSD, Cygwin, and Windows are 100% untested and unsupported. Patches welcome.

Where should I request features / report bugs?

Read the contact page. In short you should either get into the IRC channel, write a message on the Mailing List or submit a bug report to the bug tracker.

Send all bug reports to canto-reader [at] codezen [dot] org
Or come to discuss in #canto on