Moogle - A curses based google reader client
Moogle is a curses client for google reader, influenced by the best MUA ever, Mutt. Like mutt moogle has keybindings for everything, and supports limit expressions to restrict what you're shown.
Moogle was written to scratch an itch - there were console rss readers[1, 2] and GUI rss readers which can sync to google reader[3] and Google Reader proper but no console reader which could sync to google reader: enter moogle.
Moogle's not for everyone, as Zed said (though he was talking about newsbeuter):
Now, I’m sure tons of people will scoff at the idea of not having graphics in their feed. They’ve gotta have that curvy candy coated interface with the flash video about Steampunk Buttplugs posted by BoingBoing blaring right in their fucking face or else they don’t feel alive. They don’t feel young. Dammit, they want to augment that Nerd ADD with a feed reader that goes to eleven!
If that sounds like you, maybe you won't like moogle.
Screenshot

Features
Why should you use moogle?
- Google Reader synchronisation
- Curses interface
- Powerful limit expressions
- Offline cache support
- Configurable keybindings
- Built in python command line
- Mutt-like tagging of items
Getting Started
Using setting up moogle is simple: there are no configuration options, and only
one required configuration file, ~/.moogle/cred which should contain your
google reader credentials in the form:
username@google.com,password
Moogle is a work in progress - to get going try python frontend.py in the
moogle directory, simple help is available by pressing "?".
Commands
The default set of commands is:
<space>: Select the next unread item.
*: Toggle 'star' state of the selected item.
:: Execute python command in the context of this program. DANGEROUS
?: Show help.
J: Scroll the current item down.
K: Scroll the current item up.
N: Select the next message.
O: Toggle the online state.
P: Select the previous message.
R: Mark all tagged items as read.
T: Toggle the 'tagged' state for all items matching expr.
d: Print a debug summary of the selected item.
j: Scroll the current item down.
k: Scroll the current item up.
l: Limit the display of items according to an expression.
n: Select the next message.
o: Open the currently selected item
p: Select the previous message.
q: Quit.
s: Save the current items for offline reading.
t: Toggle 'tagged' state of an item.
x: Force an update.
Most commands are simple, and do exactly what you'd expect. Keybindings can be
created and modified at run time by using Config.bind(key, function).
The Limit Command
Limit accepts a python expression and uses it to filter the feed items
shown. To only show items from the BBC try Limit: "BBC" in item.feed or to
show only items labelled "comics" Limit: "comics" in item.labels. A full
list of item attributes can be seen in the source, or in the debug output
(bound to "d" by default).
Any python expression returning a boolean can be used as a limit expression, but probably you'll want to limit based on some property of the each item. Common attributes for an item are:
item.feed: The feed sourceitem.body: The body of the item, formatted as markdownitem.author: The author of the itemitem.title: The item titleitem.labels: A list of this item's labelsitem.link: The link to the full version of this itemitem.date: A datetime object representing the time this item was writtenitem.entry: A feedparser object representing this object
Config Save/Restore
Moogle now supports the saving and restoring of configuration to and from the
file ~/.moogle/config in YaML. Moogle will load an existing config file
during initialisation, to create a config file run
Config.save(filename="~/.moogle/config"), and to run a new config run
Config.restore(filename="~/.moogle/config"). The default configuration looks
like:
browser: x-www-browser
headers:
- labels
- author
- date
- feed
- title
history_file: /home/joe/.moogle/history
index_length: 5
keybindings:
'*': star
':': command
<down>: scroll_down
<space>: next_unread_message
<up>: scroll_up
'?': help
J: scroll_down
K: scroll_up
N: next_message
O: online
P: previous_message
R: read_tagged
T: tag_set
d: debug_dump_item
j: scroll_down
k: scroll_up
l: limit
n: next_message
o: open_item
p: previous_message
q: quit
s: save
t: tag
x: update
The keys <up>, <down>, and <space> are mapped to curses.KEY_UP,
curses.KEY_DOWN, and curses.KEY_SPACE respectively.
Download
No packages yet - grab a tarball or clone your own from git.