DEV Community 👩‍💻👨‍💻

Berezhnev Vladimir
Berezhnev Vladimir

Posted on

Emacs as RSS reader.

Do you have a list of websites you visit regularly? Just to find out nothing new was added. This manual scraping is often a waste of time. Worse yet, scanning and filtering these websites for new interesting content is even more time consuming.

Subscribing to an RSS feed can reduce your effort immensely. An RSS feed “pushes” the newest updates to subscribers and they will never miss updates. In order to make use of RSS feeds you need a “feed reader” or “feed aggregator”. Such a feed reader will save you from visiting your favorite websites again and again, so you can use your precious time more productively.

Emacs is the epitome of extensibility, and it’s no surprise that Emacs makes also a great RSS reader! The elfeed package turns Emacs into a full-fledged feed reader which support multiple feeds, searching, filtering and more.

The following shows a sample elfeed configuration with some programming news subscriptions. elfeed will only download the last two days of updates and mark them as unread.

Note: I use use-package. If you -- not, then I suggest removing the first few lines and installing elfeed via M-x package install elfeed.

(use-package elfeed
:ensure t)

;; data is stored in ~/.elfeed
(setq elfeed-feeds
        '(
                ;; programming
                ("https://news.ycombinator.com/rss" hacker)
                ("https://www.reddit.com/r/programming.rss" programming)
                ("https://www.reddit.com/r/emacs.rss" emacs)
                ("https://habr.com/ru/rss/all/all/?fl=ru" habr-all)
                ("https://habr.com/ru/rss/news/?fl=ru" habr-news)
                ("https://nuancesprog.ru/feed" nop)
                ("https://dev.to/feed" dev-to)

                ;; hobby
                ("https://www.reddit.com/r/nasa.rss" nasa)
                ("https://habr.com/ru/rss/hub/astronomy/all/?fl=ru" habr-astronomy)
                ("https://habr.com/ru/rss/flows/popsci/all/?fl=ru" habr-popsci)

                ;; programming languages
                ("https://www.reddit.com/r/javascript.rss" javascript)
                ("https://www.reddit.com/r/typescript.rss" typescript)
                ("https://www.reddit.com/r/golang.rss" golang)
                ("https://www.reddit.com/r/rust.rss" rust)

                ;; cloud
                ;;("https://www.reddit.com/r/aws.rss" aws)
                ;;("https://www.reddit.com/r/googlecloud.rss" googlecloud)
                ;;("https://www.reddit.com/r/azure.rss" azure)
                ("https://www.reddit.com/r/devops.rss" devops)
                ("https://www.reddit.com/r/kubernetes.rss" kubernetes)
                ))

(setq-default elfeed-search-filter "@2-days-ago +unread")
(setq-default elfeed-search-title-max-width 100)
(setq-default elfeed-search-title-min-width 100)
Enter fullscreen mode Exit fullscreen mode

A usual workflow looks like this:

M-x elfeed
M-x elfeed-update

  • G fetches the newest RSS feed updates
  • s filter for a specific topic like typescript, golang or habr-news
  • c clears the search filter and shows everything again
  • navigate up and down with n (next line) and p (previous line)
  • b open current url in your browser

Example of RSS usage

Image description

For a complete elfeed documentation visit the official elfeed page

Top comments (4)

Collapse
 
giuseppeabn profile image
Giuseppe varas

Excelent!

Collapse
 
katafrakt profile image
Paweł Świątkowski

Nice. Is there anything Emacs can't do? :D

Collapse
 
tell396 profile image
Berezhnev Vladimir

No :)

Collapse
 
neilclark profile image
NeilClark

you have shared informative content and concepts with us its impressive over knowledge . mantra to destroy enemies at workplace

We want your help! Become a Tag Moderator.
Check out this survey and help us moderate our community by becoming a tag moderator here at DEV.