## 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
### 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
Key | Action |
: | Execute python command in the context of this program. |
j | Scroll the current item down. |
J | Scroll the current item down. |
k | Scroll the current item up. |
K | Scroll the current item up. |
l | Limit the display of items according to an expression. |
n | Select the next message. |
N | Select the next message. |
o | Open the currently selected item |
O | Toggle the online state. |
p | Select the previous message. |
P | Select the previous message. |
q | Quit. |
? | Show help. |
space | Select the next unread item. |
T | Edit labels for the selected item. |
* | Toggle 'star' state of the selected item. |
x | Force 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).