=head1 NAME raggle - Console RSS aggregator. =head1 SYNOPSIS B [B<-aAhlvV>] [B<--add> [I]] [B<--ascii>] [B<--default-config>] [B<--diag>] [B<--force>] [B<--help>] [B<--list>] [B<--lock-title>] [B<--purge>] [B<--save-items>] [B<--server> [I]] [B<--sort>] [B<--unlock-title>] [B<--unsave-items>] [B<--usage>] [B<--verbose>] [B<--version>] [B<-c> I] [B<--config> I] [B<-d> I] [B<--delete> I] [B<-e> I] [B<--edit> I] [B<--export-opml> I] [B<-f> I] [B<--find-feeds> I] [B<--import-opml> I/I] [B<-i> I] [B<--invalidate> I] [B<--max> I] [B<-p> I] [B<--priority> I] [B<-r> I] [B<--refresh> I] [B<-t> I] [B<--title> I<title>] [B<-u> I<url>] [B<--url> I<url>] [B<--U> I<feed>] [B<--update> I<feed>] =head1 DESCRIPTION B<raggle> is a curses-based RSS aggregator. The following options are available: =over 5 =item B<-a> [I<url>] B<--add> [I<url>] Add a new feed. You can optionally specify I<url>, otherwise it requires B<--url>. =item B<-A> B<--ascii> Use ASCII graphics for windows. =item B<-c> I<file> B<--config> I<file> Use I<file> as an alternate configuration file. =item B<-d> I<feed> B<--delete> I<feed> Delete I<feed> from the feed list. =item B<--default-config> Print out the default configuration of Raggle in a format suitable for your config.rb file. =item B<--diag> Print out full stack traces, and other diagnostic information intended for bug hunting. =item B<-e> I<feed> B<--edit> I<feed> Edit I<feed>'s information. =item B<--export-opml> I<file> Export all feeds to I<file> in OPML format. =item B<-f> I<string> B<--find> I<string> Find a feed containing I<string> (uses Syndic8). =item B<--force> Force an edit/addition to succeed even if it wants to do things that are generally unwise. =item B<-h> B<--help> B<--usage> Show usage information. =item B<--import-opml> I<file>/I<uri> Import feeds from an OPML format I<file> or I<uri>. =item B<-i> I<feed> B<--invalidate> I<feed> Invalidate I<feed> (force it to be refreshed). If -1 is given as I<feed> then all feeds are updated. =item B<-l> B<--list> List current feeds. Use -v or --verbose to display extra info. =item B<--lock-title> Lock the title of a feed (blocks updating of a feed's title from data in the feed itself), used with B<--add> or B<--edit>. =item B<--max> I<num> Set the maximum number of items in a feed to I<num>. Automatically sets --save-items. =item B<-p> I<priority> B<--priority> I<priority> Set the feed priority to I<priority>. 0 is the default, higher values will sort a feed closer to the top. =item B<--purge> Purge deleted feeds from the feed cache. =item B<-r> I<refresh_time> B<--refresh> I<refresh_time> Set a feed's refresh time to I<refresh_time>; used with B<--add> or B<--edit>. =item B<--save-items> Save all old items from a feed rather than replacing them with newly fetched ones; used with B<--add> or B<--edit>. =item B<--server> [I<port>] Run Raggle in HTTP server mode, optionally specifying a I<port>. =item B<--sort> Sort feed list by priority then by title, case-insensitive. =item B<-t> I<title> B<--title> I<title> Set a feed's title to I<title>, used with B<--add> or B<--edit>. =item B<--unlock-title> Reverse the actions of B<--lock-title>, causing it to be updated from the title stored in the RSS feed; used with B<--add> or B<--edit>. =item B<--unsave-items> Reverse the actions of B<--save-items>, cause old items to be removed from the feed cache; used with B<--add> or B<--edit>. =item B<-U> I<feed> B<--update> I<feed> Update the specified feed (or I<all> for all feeds). =item B<-u> I<url> B<--url> I<url> Set the URL from which to retrieve a feed to I<url>, used with B<--add> or B<--edit>. =item B<-v> B<--verbose> Turns on verbose output, displaying extra info on the command line. =item B<-V> B<--version> Show B<raggle> version. =back =head1 KEYS: MOTION =over 5 =item I<F12>, I<q> Quit B<raggle> =item I<Right Arrow>, I<Tab>, I<l> Move to the next window. =item I<Left Arrow>, I<h> Move to the previous window. =item I<Up Arrow>, I<k> Scroll up. =item I<Down Arrow>, I<j> Scroll down. =item I<End>, I<$>, I<G> Scroll to bottom. =item I<Home>, I<0>, I<g> Scroll to top. =item I<PageUp> Scroll up one page. =item I<PageDown> Scroll down one page. =head1 KEYS: INTERACTION =item I<Return>, I<Space> Select item. =item I<o> Open the current feed or item's link in your browser. =item I<1> through I<9> Open a link from the current story in your browser. Link numbers are given at the bottom of the description window. =item I<u> Move item up. =item I<d> Move item down. =item I<a> Add a feed. Will add the currently selected feed after a search via I<f>, otherwise you will be prompted for the address. =item I<O> Import or export an OPML copy of your feed list. If the given name is an existing file or a URI, it will be imported; otherwise, a new OPML file will be created with the given name. =item I<e> Edit the current feed's options to your liking. =item I<I> Invalidate the current feed, causing a refresh. =item I<Delete> Delete feed or item. =item I<y> Undelete all items in the current feed. =item I</> Find an entry. =item I<f> Search for a feed via Syndic8. =item I<p> Select previous unread item. =item I<n> Select next unread item. =item I<m> Mark all items as read. =item I<M> Mark all items as unread. =item I<N> Mark current item as unread. =item I<s> Sort list. =item I<r> Lower the current feed's sorting priority. =item I<R> Raise the current feed's sorting priority. =item I<c> Select a feed category to view. =item I<C> Close the current window. =head1 KEYS: SYSTEM =item I<!> Run a shell in the foreground (exit from it to get back to B<raggle>) =item I<?> Show current key bindings. =item I<\> View item source. =item I<U> Start a manual update of feeds. =item I<S> Start a manual save of feeds and configuration. =item I<C-l> Redraw the screen. =head1 EXAMPLES Add a feed called "Bar" updating every 2 hours. $ raggle --add -t Bar --url http://foo.com/bar.rss --refresh 120 Add a feed called "Baz" that will sort to the top. $ raggle -a -t "Baz" -u http://foo.com/baz.rss --priority 10 Change the refresh time of the "Bar" feed to update every hour. $ raggle --edit 1 --refresh 60 Don't update feed #1's title from the RSS. $ raggle -e 1 --lock-title Keep old items associated with feed #16. $ raggle -e 16 --save-items Update feed #1's title from the RSS info. $ raggle -e 1 --unlock-title Change the URL of feed #3. $ raggle -e 3 -u http://www.slashdot.org/slashdot.rss Export all feeds to foo.opml $ raggle --export-opml foo.opml Import all feeds from foo.opml, and set their refresh time to 90 minutes. $ raggle --import-opml foo.opml -r 90 Import all feeds from foo.opml, and set their refresh time to 90 minutes. $ raggle --import-opml foo.opml -r 90 Find feed matching the string "halffull" $ raggle --find halffull =head1 ENVIRONMENT =item B<BROWSER> Used to find a suitable web browser (see B<RAGGLE_BROWSER>). =item B<HOME> Used to find the Raggle configuration directory. =item B<http_proxy> HTTP Proxy server, in the format "http://I<host>:I<port>/". =item B<no_proxy> Comma-delimited list of hosts and domains to connect directly to (only applicable if you're using an HTTP proxy). =item B<PATH> Used to find a suitable web browser (see B<RAGGLE_BROWSER>). =item B<RAGGLE_BROWSER> Path to the web browser Raggle should use when a feed item is opened. If B<RAGGLE_BROWSER> isn't set, Raggle checks B<BROWSER>, then looks for common command-line browsers in B<PATH>. Note: this behavior can be overridden by setting the 'browser' config directive in your Raggle configuration file. =item B<RAGGLE_WEB_DATA> Used to find the web interface data files. If it's not set, Raggle looks for a directory called "web_ui" in the configuration directory. =item B<SHELL> Shell to launch when invoking a sub-shell. =item B<WINDOW> Used to determine if Raggle is running in screen. =head1 BUGS =item B<*> Pressing Ctrl-C while adding a feed will cause Raggle to exit unexpectedly, not cancel. =item B<*> It's possible that feeds.yaml will be mistakenly written as an Array rather than a FeedList for no apparent reason. =item B<*> Possibly more! Please report any you find to <I<raggle-dev@raggle.org>> =head1 HISTORY =item B<raggle> 0.1 was released on 23 Jun, 2003 =item B<raggle> 0.2 was released on 17 Aug, 2003 =item B<raggle> 0.3 was released on 20 Feb, 2004 =item B<raggle> 0.4 was released on 15 Mar, 2005 =head1 AUTHORS =item Paul Duncan <I<pabs@pablotron.org>>, =item Richard Lowe <I<richlowe@richlowe.net>>, =item Ville Aine <I<vaine@cs.helsinki.fi>>, =item Thomas Kirchner <I<redshift@halffull.org>>