The compulsory Frequently Asked Questions page.

[TOC]

# Why Canto?

<div class="section">

**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.

**Extensibility**

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.

Examples:

- Use a keybind to write the item to a file, or mail it to a friend.
- Use a filter to only browse through items you haven't read yet.
- Simply add content like an item's tags or author to the reader.
- Sort feeds by date, alphabetically, by length, or by any other arbitrary criteria.
- Keybind your favorite search terms to cycle through them.
- Detect that your terminal is xterm or a tty and set the browser appropriately
- Arbitrary things, like change the theme based on the time of day

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.

**Theming**

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.

</div>

# Does Canto support Atom feeds?

<div class="section">

Yes. Canto uses [feedparser](http://feedparser.org) 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.

</div>

# Does Canto support OPML?

<div class="section">

Yes, as of 0.5.2, Canto support importing from/export to OPML, as well as adding feeds from an OPML file at [runtime](../config/#sourcing-other-files)

</div>

# Does Canto support Unicode/UTF-8?

<div class="section">

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.

</div>

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

<div class="section">

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](http://codezen.org/canto/start/#locale-or-wtf-are-these-lines) and [here](http://wiki.archlinux.org/index.php/Locale).

</div>

# What does Canto require?

<div class="section">

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](http://chardet.feedparser.org).

Canto < 0.7.8 requires [feedparser](http://feedparser.org) 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).

</div>

# Why ncurses?

<div class="section">

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](http://vimperator.org) 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](http://xmonad.org) and have six million xterms running with [vim](http://www.vim.org),[mutt](http://mutt.org), and [moc](http://moc.daper.net) at all times.

</div>

# Why Python?

<div class="section">

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](http://feedparser.org) and [chardet](http://chardet.feedparser.org) 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 =).

</div>

# What license is Canto under?

<div class="section">

Canto is [GPLv2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) software. Just like all the other software **real** men write.

</div>

# What platform does Canto run on?

<div class="section">

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.

</div>

# Where should I request features /  report bugs?

<div class="section">

Read the [contact](../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](http://github.com/themoken/Canto/issues).

</div>
