=head1 NAME

raggle - Console RSS aggregator.

=head1 SYNOPSIS

B<raggle>
[B<-aAhlvV>] 
[B<--add> [I<url>]] 
[B<--ascii>]
[B<--default-config>]
[B<--diag>]
[B<--force>] 
[B<--help>] 
[B<--list>]
[B<--lock-title>]
[B<--purge>] 
[B<--save-items>]
[B<--server> [I<port>]]
[B<--sort>]
[B<--unlock-title>]
[B<--unsave-items>]
[B<--usage>]
[B<--verbose>]
[B<--version>]
[B<-c> I<file>]
[B<--config> I<file>]
[B<-d> I<feed>]
[B<--delete> I<feed>]
[B<-e> I<feed>]
[B<--edit> I<feed>]
[B<--export-opml> I<file>]
[B<-f> I<string>]
[B<--find-feeds> I<string>]
[B<--import-opml> I<file>/I<uri>]
[B<-i> I<feed>]
[B<--invalidate> I<feed>]
[B<--max> I<num>]
[B<-p> I<priority>]
[B<--priority> I<priority>]
[B<-r> I<refresh_time>]
[B<--refresh> I<refresh_time>]
[B<-t> I<title>]
[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>>


syntax highlighted by Code2HTML, v. 0.9.1