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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
(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)

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

For a complete elfeed documentation visit the official elfeed page

Licensed under CC BY-NC-SA 4.0
Last updated on Feb 23, 2023 23:11 +10
Built with Hugo
Theme Stack designed by Jimmy