1 ## Moogle - A curses based google reader client
3 Moogle is a curses client for google reader, influenced by the best MUA ever,
4 [Mutt][]. Like mutt moogle has keybindings for everything, and supports limit
5 expressions to restrict what you're shown.
7 Moogle was written to [scratch an itch][] - there were console rss
8 readers\[[1][], [2][]\] and GUI rss readers which can sync to google
9 reader\[[3][]\] and [Google Reader][] proper but no console reader which could
10 sync to google reader: enter moogle.
12 Moogle's not for everyone, as [Zed said][] (though he was talking about [newsbeuter][]):
14 > Now, I’m sure tons of people will scoff at the idea of not having graphics in
15 > their feed. They’ve gotta have that curvy candy coated interface with the
16 > flash video about Steampunk Buttplugs posted by BoingBoing blaring right in
17 > their fucking face or else they don’t feel alive. They don’t feel young.
18 > Dammit, they want to augment that Nerd ADD with a feed reader that goes to
21 If that sounds like you, maybe you won't like moogle.
23 [scratch an itch]: http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
24 [Mutt]: http://www.mutt.org
25 [Zed said]: http://www.zedshaw.com/essays/i_want_the_mutt_of_feed_readers.html
27 [Google Reader]: http://google.com/reader
28 [1]: http://kiza.kcore.de/software/snownews/
29 [2]: http://www.newsbeuter.org/
30 [newsbeuter]: http://www.newsbeuter.org/
31 [3]: http://liferea.sourceforge.net/
34 <img src="moogle.png" alt="Moogle Screenshot"/>
38 Why should you use moogle?
40 * Google Reader synchronisation
42 * Powerful limit expressions
43 * Offline cache support
44 * Configurable keybindings
45 * Built in python command line
49 Using setting up moogle is simple: there are no configuration options, and only
50 one required configuration file, `~/.moogle/cred` which should contain your
51 google reader credentials in the form:
53 username@google.com,password
55 Moogle is a work in progress - to get going try `python frontend.py` in the
56 moogle directory, simple help is available by pressing "?".
60 The default set of commands is:
65 <space>: next_unread_message
87 Most commands are simple, and do exactly what you'd expect. Keybindings can be
88 created and modified at run time by using `Config.bind(key, function)`.
91 Limit accepts a python expression and uses it to [filter][] the feed items
92 shown. To only show items from the BBC try `Limit: "BBC" in item.feed` or to
93 show only items labelled "comics" `Limit: "comics" in item.labels`. A full
94 list of item attributes can be seen in the [source][], or in the debug output
95 (bound to "d" by default).
97 [filter]: http://docs.python.org/library/functions.html#filter
99 Any python expression returning a boolean can be used as a limit expression,
100 but probably you'll want to limit based on some property of the each item. Common attributes for an item are:
102 * `item.feed`: The feed source
103 * `item.body`: The body of the item, formatted as markdown
104 * `item.author`: The author of the item
105 * `item.title`: The item title
106 * `item.labels`: A list of this item's labels
107 * `item.link`: The link to the full version of this item
108 * `item.date`: A [datetime][] object representing the time this item was written
109 * `item.entry`: A [feedparser][] object representing this object
111 [datetime]: http://docs.python.org/library/datetime.html
112 [feedparser]: http://www.feedparser.org/
114 ### Config Save/Restore
116 Moogle now supports the saving and restoring of configuration to and from the
117 file `~/.moogle/config` in [YaML][]. Moogle will load an existing config file
118 during initialisation, to create a config file run `Config.save([filename])`,
119 and to run a new config run `Config.restore([filename])`. The default
120 configuration looks like:
122 browser: x-www-browser
129 history_file: /home/joe/.moogle/history
135 <space>: next_unread_message
157 The keys `<up>`, `<down>`, and `<space>` are mapped to `curses.KEY_UP`,
158 `curses.KEY_DOWN`, and `curses.KEY_SPACE` respectively.
160 [YaML]: http://www.yaml.org
164 No packages yet - clone your own from [git](http://joe.milbourn.org.uk/git/projects/moogle).