diff options
Diffstat (limited to 'content/emacs/moving-my-rss-reading-to-emacs-with-elfeed.md')
-rw-r--r-- | content/emacs/moving-my-rss-reading-to-emacs-with-elfeed.md | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/content/emacs/moving-my-rss-reading-to-emacs-with-elfeed.md b/content/emacs/moving-my-rss-reading-to-emacs-with-elfeed.md new file mode 100644 index 0000000..a7f8687 --- /dev/null +++ b/content/emacs/moving-my-rss-reading-to-emacs-with-elfeed.md @@ -0,0 +1,66 @@ +--- +title: "Moving My RSS Reading to Emacs With Elfeed" +category: emacs +abstract: It's even better now than it newsboat. +date: 2023-05-06T19:44:40+02:00 +year: 2023 +draft: false +tags: +- Emacs +- elfeed +- RSS +- newsboat +--- +Since Emacs became my shell of choice[^1], I am abandoning more and more dedicated applications in favor of different packages. As it turns out, Emacs packages are very feature rich. This time: I moved my RSS reading from newsboat[^2] to elfeed[^3]. + +Elfeed has very simple keybindings: +- g will refresh the items list +- G will refresh the items list and fetch new items +- r will mark currently selected item is read (remove unread tag)[^4] +- b will open item in the browser + + +One huge upside of elfeed compared to newsboat is image support. Emacs is a GUI application, so all images are present in their glory! + +{{<img-center "elfeed-details.png" "Images!">}} + +My setup is near stock. I have a few dozen feeds that are auto-tagged. Three essential tags are "important", "news", and "company". I want to read each "important", then I want to see all normal, and finally I can just skim "news" and "company". Adding auto-tagging is very simple: just define the tag when defining the RSS feed list: + +{{<highlight lisp>}} +("https://rubenerd.com/feed/" blog important) +("https://www.pine64.org/feed/" company) +{{</highlight>}} + +Now, each new article will be tagged with matching tags. Elfeed allows to define of custom faces that will be applied to items matching tag[^6]: + +{{<highlight lisp>}} +(defface important-elfeed-entry + '((t :foreground "#f77")) + "Marks an important Elfeed entry." + :group 'elfeed) + +(defface nonimportant-elfeed-entry + '((t :foreground "#C0C0C0")) + "Marks an nonimportant Elfeed entry." + :group 'elfeed) + +(push '(important important-elfeed-entry) + elfeed-search-face-alist) +(push '(company nonimportant-elfeed-entry) + elfeed-search-face-alist) +(push '(news nonimportant-elfeed-entry) + elfeed-search-face-alist) +{{</highlight>}} + +Now important items will be dark red, while company & news will be dark gray + +{{<img-center "elfeed-list.png" "No important things to read at this moment.">}} + +Elfeed has a few packages expanding its functionality, but I found the default behavior to be exactly right. + +[^1]: [Emacs as a Shell](/2023/emacs-as-a-shell/) +[^2]: [Newsboat homepage](https://newsboat.org/) +[^3]: [Elfeed repository on Github](https://github.com/skeeto/elfeed) +[^4]: The "r" key messes with my muscle memory, as notmuch[^5] uses "ku" for the same action while "r" will start composing a reply. +[^5]: [Posts tagged about notmuch](https://d-s.sh/tags/notmuch) +[^6]: my elisp-fu not good |