curn is an RSS reader. It scans a configured set of URLs, each one representing an RSS feed, and summarizes the results. By default, curn keeps track of individual items within each RSS feed, using an on-disk cache; when using the cache, it will suppress displaying information for items it has already processed (though that behavior can be disabled).
Unlike many RSS readers, curn does not use a graphical user interface. It is a command-line utility, intended to be run periodically in the background by a command scheduler such as cron(8) (on Unix-like systems) or the Windows Scheduler Service (on Windows).
curn is written entirely in Java and can read RSS feeds from any URL that’s supported by Java’s runtime. When querying HTTP sites, curn uses the HTTP
Last-Modified headers to suppress retrieving and processing feeds that haven’t changed. By default, it also requests that the remote HTTP server gzip the XML before sending it. (Some HTTP servers honor the request; some don’t.) These measures both minimize network bandwidth and ensure that curn is as kind as possible to the remote RSS servers.
curn can be extended in a number of ways.
Choice of Output Formats
curn supports, and uses internally, the FreeMarker template engine; you can easily generate another output format by writing your own FreeMarker template. In addition, you can write your own output handlers, in Java or in any scripting language supported by the
javax.script API. See Writing Your Own Output Handler in the curn User’s Guide for more details.
Use an RSS Parser of your Choice
curn can be adapted to use any Java RSS parser. By default, it uses the ROME parser, which can handle RSS feeds in Atom format and RSS formats 0.91, 0.92, 1.0 and 2.0. curn can easily be adapted to work with other Java-based RSS parser. Adding an adapter for a new underlying RSS parser technology requires implementing several interfaces and providing concrete implementations for a small number of abstract classes.
Previous versions of curn could be installed manually or via an IzPack-generated installer. With the 3.0 release of curn, only the graphical installer is supported. That’s because the installer creates a custom front-end shell script (for Unix and Mac OS X) or command script (for Windows) that sets up the proper runtime environment before running curn. Replicating that work manually is enough of a pain that it is no longer officially supported.
IzPack installers support both a graphical installation mode (the default) and a command-line installation mode (by specifying a
-console parameter to the invocation).
To install curn:
- Download the installer jar from the downloads area.
- Run the installer jar:
java -jar curn-installer-xxxxx.jar
- Follow the instructions in the graphical installation screens.
Once you’ve installed the curn via the graphical installer, you should run it via the curn shell script (for Unix systems) or the curn.bat DOS script (for Windows systems), located in the bin directory where you installed curn.
For complete instructions on configuring and using curn, please see the curn User’s Guide.
Building curn from source
The source for the Java Utility Library is in a GitHub repository. The easiest way to obtain it is via Git, which runs on Unix-like operating systems (such as Linux and FreeBSD), Windows, and Mac OS X.
The library builds with Apache Buildr, because Buildr’s Ruby-based build files are more powerful and flexible, and much easier to read and maintain, than Maven’s POM files. If you’re building this library from source, you must first download and install Buildr.
First, clone a copy of the Git repository:
git clone git://github.com/bmc/curn.git
Then, change your working directory to the newly-created
curn directory, and type:
to compile the code.
To build the IzPack installer, first ensure that you’ve installed IzPack. Then, set environment variable
IZPACK_HOME to the directory where you installed IzPack. Then, within the
curn source directory, simply type
to generate the IzPack installer jar.
Keeping Up to Date
To be notified automatically of new releases of curn, please join the (low-volume)
curn-users mailing list, at http://groups.google.com/group/curn-users/.
To track the curn source code, please see the curn GitHub repository.
Brian M. Clapper, firstname.lastname@example.org
My friend, former co-worker, and (to our mutual surprise) fourth cousin, Steve Sapovits, suggested the name curn.
Portions of curn were developed by, and funded by, ArdenTex, Inc. and donated back to Brian M. Clapper and the curn project.
Frequently Asked Questions
Please see the FAQ.
- CHANGELOG: Change log for the current release
- curn User’s Guide
- clapper.org Java Utility Library
- What is RSS?, an introduction suited to programmers.
- All About RSS, if you’re not as technically minded.
- RSS 0.91 specification
- RSS 1.0 specification
- RSS 2.0 specification
- Atom specification
- The ROME RSS parser library
- rawdog, a Python-based RSS reader, is similar to curn, in spirit, features and invocation. I had no idea rawdog existed when I wrote curn.
- Mac OS X, using the Apple-supplied 1.6 JDK
- FreeBSD, using the native FreeBSD 1.6 JDK
- Ubuntu 9, 10 and 11, using the Sun Linux 1.6.0 JDK
Copyright and License
curn is copyright © 2004-2011 Brian M. Clapper and is released under a BSD License.
I gladly accept patches from their original authors. Feel free to email patches to me or to fork the GitHub repository and send me a pull request. Along with any patch you send:
- Please state that the patch is your original work.
- Please indicate that you license the work to the curn project under a BSD License.