/MinRSS

A minimal RSS feed reader.

Primary LanguageCGNU General Public License v3.0GPL-3.0

MinRSS
======
MinRSS is an RSS/Atom feed reader for Linux inspired by suckless.org's IRC
clients ii and sic. Instead of presenting articles as entries in a menu, it
saves them as files in folders.

These files can either be formatted as HTML, or as JSON to help with scripting.

rss
|--news
|  |--article1
|  `--article2
`--blog
  |--post
  `--other_post

Requirements
------------
You need libcurl and libxml2 to compile MinRSS.

json-c is required for JSON output. To disable this feature, comment out the
relevant lines in Makefile.

Installation
------------
Run this command to build MinRSS:

	make clean install

This will install the binary to ~/.local/bin. Make sure that this directory is
in your $PATH.

If you need to change this, set the PREFIX variable in Makefile.

Configuration
-------------
MinRSS is configured via the config.h file, which you can create by
either compiling MinRSS for the first time or copying config.def.h
to it. To save your changes, recompile MinRSS.

You are required to input a list of URLs in config.h before compilation
in order to successfully run MinRSS.


	static const linkStruct links[] = {
		{
			.url = "https://example.com/rss/",
			.feedName = "example-feed",
		},
	};


Manual usage
------------
If you compile with OUTPUT_HTML (as is default), you can read feeds with just
the 'minrss' binary, basic shell utilities and (preferably) a browser of any
kind.

Make a directory to store your RSS feeds, then cd into it. Then, run the minrss
binary to download all articles.

Each configured feed will now appear as a folder, and articles as HTML files
within them. You can open the files in a browser to see the summary text, and
also follow the link to see the full article.

To see which files are new, use 'ls -t' or compile with SUMMARY_FILES.

It is important to note that MinRSS does not download the full text of each
article, but only the summary. If you wish to archive the full text for offline
reading, consider writing a script for it.

Wrapper scripts
---------------
The wrapper script contrib/mrss.sh is provided with MinRSS as an example.

To install it, run the following:
	
	cp contrib/mrss.sh ~/.local/bin/mrss
	chmod 755 ~/.local/bin/mrss

The script requires compiling with configuration options OUTPUT_JSON and
SUMMARY_FILES, as well as having jq and xdg-open installed.

By default, mrss sets up a directory at ~/rss/ to store all feeds. To change
this, set MRSS_DIR.

'mrss update' will check feeds for new articles and download them. Symlinks to
new articles are also stored in ~/rss/new/.

'mrss select' shows a CLI to view each file's content. It can either open the
file, mark it as read or queue it for later.

'mrss read' can be used on article files to open them in a browser or mpv,
directly from the shell.

Run 'mrss --help' for information about other subcommands.

Compatibility
-------------
This program is designed to work on Linux, but it should be possible
to make it run on other operating systems. If you can do that
successfully, please contact me about it.

Note that if you use MinRSS on different systems, it will be possible for
attackers to write malicious filenames, so you should rewrite sanitize()
accordingly.

Contributing
------------
MinRSS is compliant to the C99 standard: please ensure your changes also
comply.