After I have completely removed all my social media accounts on centralized networks as Twitter, Reddit and Facebook, I have been digging into the indieweb blog sphere. This not only allowed me to improve the quality of my time, focusing only on blogs and content that matters to me, but it also let me discover totally new points of view that I actually did not like at first, but made me reevaluate my ideas on politics, computer programming, system administration, and so on. This constant flow of ideas and cool stuff was barely possible on websites or aggregators like Reddit, where roughly 1 post out of 50 was worth my time and many of them (especially controversial ones) were silently hidden by their attention-keeping algorithm.
There are many possible ways to keep in touch with your favourite blogs, but the simplest and most flexible technology are the old, fashioned RSS feeds. RSS feeds can be read by hundreds of different applications, they are widely supported, and almost any website with articles or news makes available an RSS feed for their content (even Twitter and YouTube have RSS feeds for channels and pages). You just look for the RSS icon and click it, or find the RSS feed with other methods.
There are many advantages of RSS feeds over the mainstream social media platform, just to name a few:
- contents are not filtered by an algorithm that decides what you are allowed to see: RSS feed readers just show you everything from the website you added. No filter bubble, you own the information you want to read;
- they aren’t constantly fighting for your attention. Social media use different techniques to manipulate and to tempt you to browse on their platform - constantly. RSS readers don’t do that;
- RSS readers are flexible. This is really important: when Facebook or Reddit fuck up, you have no alternatives. You’re forced to use them to read their contents, even when they start going against your interests. When an RSS reader application doesn’t fit you anymore, you simply switch to another one. That’s it;
- RSS readers that are free and open source (on Android, install F-Droid and use Flym or Feeder) don’t track their users. This is important: your interests and reads will not be randomly collected by whatsoever social media advertizing platform you’re signed in.
How RSS readers work
Despite being very different, they work all the same way: you add the RSS feed URL the website gave you (for example, if you want to follow Drew Devault’s fantastic blog (https://drewdevault.com/) you simply add to your RSS reader the link he provides on his website, ( e.g. https://drewdevault.com/blog/index.xml ). After that, your RSS reader should start fetching content and visualizing articles from the resources you added.
What about newsboat?
Newsboat is a RSS/Atom (Atom is another technology similar to RSS) feed reader for the terminal. It provides you a clean, elegant, and minimal interface to comfortably read your favourite blogs inside your terminal of choice. I use it because it is very simple (in the sense of essential), configuration is inside dotfiles, and allows me to set up Vim-like hotkeys, read links directly into the console with my custom theming, and when it’s not enough it lets me open any article or link in my browser.
Whatever, let’s see how I use it.
Regardless of the Linux distribution,
newsboat should be available in the main repository without adding external sources. Find it and install it.
After installation, your feed reader will be empty. To add links, create a folder with name
.newsboat in your
Inside that folder we will put the configuration file (named
config), and the file containing all the URLs we want it to fetch (named
The configuration file in
~/.newsboat/config doesn’t exist or is empty, and we are going to set up ours. I will post my simple configuration and comment it:
auto-reload yes reload-time 120 reload-threads 100 download-retries 5 download-timeout 60 bind-key j down bind-key k up bind-key j next articlelist bind-key k prev articlelist bind-key J next-feed articlelist bind-key K prev-feed articlelist bind-key G end bind-key g home bind-key d pagedown bind-key u pageup bind-key l open bind-key h quit bind-key a toggle-article-read bind-key n next-unread bind-key N prev-unread bind-key D pb-download bind-key U show-urls bind-key x pb-delete browser "firefox %u" macro y set browser "mpv %u" ; open-in-browser ; set browser "firefox %u" macro , set browser "firefox %u"; open-in-browser
auto-reload yes makes sure that the reader will fetch content automatically, and not only when started. The delay between auto-reloadings is declared (in minutes) with
reload-time and you can also set up the number of threads involved with
reload-threads, to speed up the process if you are subscribed to many different sources.
download-timeout (in seconds) are useful if you’re fetching your feeds over TOR or behind a slow network. The first is the number of times it will retry the connection if the reader cannot fetch the content, and the second one defines the timeout for declaring a content unreachable.
The next part of the list is dedicated to key bindings. They are set up to closely resemble Vim-hotkeys, but if you don’t need them you can stick with the default ones (to view them, press
? when running newsboat).
browser "firefox %u allows me to set the default browser. Any other browsers, such as Chromium, Brave or Vivaldi, follow the same syntax.
The next two commands define two macros. Macros are available when pressing
, (the comma).
The first macro is called when pressing
, . I use it when I want to watch a YouTube video from the feeds. It sets the browser to
mpv (the most powerful media player available), open the URL in the browser (the media player) that starts to fetch and comfortably display the video. After that, it sets the browser to the default choice.
The second one simply opens the URL in firefox, and it is called by pressing twice
The config files allows to setup your own colorscheme, but since this is optional we will go through it later.
Most of the supplemental infos on configuration file can be found in the documentation.
After the configuration setup, we can start adding URLs. RSS feeds may be simply added into
~/.newsboat/urls, one per line, for example:
https://drewdevault.com/blog/index.xml https://www.schneier.com/feed/atom/ https://robertheaton.com/feed http://www.hackerfactor.com/blog/index.php?/feeds/index.rss2 https://www.unixsheikh.com/feed.rss https://ar.al/index.xml https://kevq.uk/feed.xml https://mikestone.me/feed.xml https://rusingh.com/feed.xml
When launching newsboat, they will be shown in the same order we put them here.
I added a little bit of customization, adding text-only lines to divide my feeds into categories.
I did this by putting
" at the beginning of such lines:
" ============================================================================= " ===> BLOGS <================================================================= " ============================================================================= " ------> Programming and Security <------------------------------------------- https://drewdevault.com/blog/index.xml https://www.schneier.com/feed/atom/ https://robertheaton.com/feed http://www.hackerfactor.com/blog/index.php?/feeds/index.rss2 https://www.unixsheikh.com/feed.rss https://ar.al/index.xml https://kevq.uk/feed.xml https://mikestone.me/feed.xml https://rusingh.com/feed.xml " " " ------> Linux <-------------------------------------------------------------- https://fedoramagazine.org/feed/ https://newsboat.org/news.atom https://www.phoronix.com/rss.php " " " ============================================================================= " ===> YOUTUBE CHANNELS <====================================================== " ============================================================================= https://www.youtube.com/feeds/videos.xml?channel_id=UCYFgn8_JgaQL1E-N2tg1xcQ https://www.youtube.com/feeds/videos.xml?channel_id=UCIPsK5xspHC3-ZFNPTx2X_w
and so on. Of course, designing this part is up to you, and it depends on your tastes and needs.
After running newsboat, you may notice that a file,
cache.db has been created into the
.newsboat folder. This file allows the program to keep track of the already seen articles, and may be worthwhile to sync it across devices if you’re running newsboat on multiple machines.
This part is completely optional. I personally love the gruvbox colorscheme, and I use it on almost everything. The documentation offers a nice section on how to customize newsboat colors.
This is what I added in my
# colors color background black default color listnormal color8 default color listnormal_unread green default bold color listfocus white blue bold color listfocus_unread yellow blue bold color info cyan color235 bold standout color article white default # highlights highlight article "^(Feed|Link):.*$" yellow default bold highlight article "^(Title|Date|Author):.*$" yellow default bold highlight article "https?://[^ ]+" blue default underline highlight article "\\[[0-9]+\\]" yellow default bold highlight article "\\[image\\ [0-9]+\\]" yellow default bold highlight feedlist "^─.*$" yellow color235 bold
and it’s quite suited for terminal gruvbox colorscheme. As you can see, it doesn’t only allow to declare colors, but it also allows to configure highlights with regex.
Colorscheme setup depends on your terminal colorscheme, and it is a trial-and-error process to find the perfect one for you.
Other informations can be found, of course, in the official documentation, in the manpage or in the Arch Wiki.