Minimal RSS/Atom feed reader.
contrib | ||
.gitignore | ||
config.def.h | ||
handlers.c | ||
handlers.h | ||
LICENSE | ||
Makefile | ||
minrss.c | ||
net.c | ||
net.h | ||
README | ||
util.c | ||
util.h |
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.