## 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. [scratch an itch]: http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar [Mutt]: http://www.mutt.org [Google Reader]: http://google.com/reader [1]: http://kiza.kcore.de/software/snownews/ [2]: http://www.newsbeuter.org/ [3]: http://liferea.sourceforge.net/ ### Screenshot Moogle Screenshot ### Features Why should you use moogle? * Google Reader synchronisation * Curses interface * Powerful limit expressions * Offline cache support * Configurable keybindings ### Using Moogle Using setting up moogle is simple: there are no configuration options, and only one 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 "?". Most commands are simple, and do exactly what you'd expect, "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"). [filter]: http://docs.python.org/library/functions.html#filter [source]: http://joesbox.vm.bytemark.co.uk/cgi-bin/viewvc.cgi/moogle/moogle.py?root=src&view=markup #### Limit Expressions Moogle supports python expressions to limit the items shown in the index. The expression must return a boolean value, for example to show only unread items `'read' not in item.labels`. The item properties available are: item.feed item.body item.author item.title item.labels item.link item.date item.entry #### Commands
Commands.add_label
Prompts for a label to add to the currently selected item.
Commands.command
Run a python expression with access to the internal state.
Commands.edit_labels
Edit the labels for the currently selected item.
Commands.help
Show help.
Commands.limit
Apply a limit expression to the items shown in the index.
Commands.next_message
Select the next message.
Commands.next_unread_message
Select the next unread message.
Commands.online
Toggle the online/offline state.
Commands.open_item
Open the selected item using `x-www-browser`.
Commands.previous_message
Select the previous message.
Commands.quit
Quit.
Commands.save_history
Save the current command histories to a named file.
Commands.scroll_down
Scroll the selected message body.
Commands.scroll_up
Scroll the selected message body.
Commands.star
Toggle the 'starred' status of the selected item.
Commands.toggle_label
Toggle the given item for the selected item.
Commands.update
Synchronise with google reader.
#### Default Keybindings
KeyAction
:Execute python command in the context of this program.
jScroll the current item down.
JScroll the current item down.
kScroll the current item up.
KScroll the current item up.
lLimit the display of items according to an expression.
nSelect the next message.
NSelect the next message.
oOpen the currently selected item
OToggle the online state.
pSelect the previous message.
PSelect the previous message.
qQuit.
?Show help.
spaceSelect the next unread item.
TEdit labels for the selected item.
*Toggle 'star' state of the selected item.
xForce an update.
#### Config Save/Restore Moogle now supports the saving and restoring of configuration to and from the file `~/.moogle/config` in [YaML][]. 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 : scroll_down : next_unread_message : 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 ``, ``, and `` are mapped to `curses.KEY_UP`, `curses.KEY_DOWN`, and `curses.KEY_SPACE` respectively. [YaML]: http://www.yaml.org ### Download No packages yet - clone your own from [git](http://joe.milbourn.org.uk/git/projects/moogle).